Package: ciscoaxl
Python SDK for Cisco CUCM AXL APIAXL API Documentationhttps://developer.cisco.com/docs/axl-schema-reference/Installationpipinstallciscoaxltesting in a lab is highly recommended. if you don't have a lab of your own, you can reserve a DevNet Sandbox free of charge!Reserve a DevNet Sandbox (if required)The	DevNet	Sandbox	is	accessible	 through	Cisco	DevNet	athttp://developer.cisco.comSelect	Collaboration	on	the	right	hand category menu	and	then look	for	the	“Collaboration	12.5”	tile.
Hit	reserve.To connect to the lab, you'll need to use VPN.VPN Credentials will be sent to your DevNet registered email account, or you can view theOUTPUTfrom the topology page.Once connected, you can click on the server, in this case CUCM, and selectATTRIBUTESto find username, password, and hostname / ip address.Enable AXL SOAP Service on CUCM:Enable the AXL SOAP interfaceBrowse to the CUCM Serviceability page on https://<IP_CUCM>/ccmserviceTools > Service Activation:Enable the "Cisco AXL Web Service"Create an AXL Service AccountStep 1 - Create an AXL User GroupCUCM > User Management > User Group > Add.Step 2 - Assign the AXL role to the groupOn the top right drop down list "Related Links".Select "Assign Role to User Group" and select "Standard AXL API Access"Step 3 - Create a new Application UserCUCM > User Management > Application User > Add.Add the User Group "AXL Group" to this user so that after saving the roles of the new Application User appear as in the following screen:SDK Usagefromciscoaxlimportaxlcucm='10.10.20.1'username='axlaccess'password='axlpassword'version='12.5'ucm=axl(username=username,password=password,cucm=cucm,cucm_version=version)Note: all get methods that return more than 1 item have a tagfilter property that can allow more fields to return. Fields are filtered by default to increase performance, but if you need additional fields returned from the axl call, simply add the tagfilter={} to the request. Example:get_phones(tagfilter={"name":"","product":"","description":"","protocol":"","locationName":"","callingSearchSpaceName":"","devicePoolName":""})UsersGet All Usersforuserinucm.get_users():print(user.firstName)Get Specific Useruser=ucm.get_user(user_id='mscott')print(user.email)Add Userucm.add_user(user_id='jlevensailor',last_name='Levensailor',first_name='Jeff')Delete Userucm.delete_user(user_id='jlevensailor')Update Userucm.update_user(user_id='jlevensailor',password='Lagavulin16',pin='5432')PhonesGet Phonesforphoneinucm.get_phones():print(phone.name)Get Specific Phonephone=ucm.get_phone(name='SEP001122445566')print(phone.name)Add Phoneucm.add_phone(name='SEP0023AF482340',description='Robert - 1102',product='Cisco 8861',device_pool='RTP_DP',location='RTP_LOC',phone_template='Standard 8861 SIP',protocol='SIP',css='AVST-CSS',subscribe_css='AVST-CSS',lines=[('1102','ABQ_PT','Robert Smith','Robert Smith','Robert Smith - 1102','+1408202XXXX')])Delete Phoneucm.delete_phone(name='SEP004433220043')Translations and TransformationsGet Translation Patternsfortransinucm.get_translations():detailed=ucm.get_translation(uuid=trans.uuid)print(detailed.description)Get Specific Translation Patterntrans=ucm.get_translation(pattern='2XXX',routePartitionName='xlates-pt')print(trans.description)Add Translation Patternported=['12324625544','12324625545','12324625546']fornuminported:ucm.add_translation(pattern=num,routePartitionName='pstn_pt',calledPartyTransformationMask='1102',callingSearchSpaceName='GW_CSS')Delete Translation Patternucm.delete_translation(pattern='34567',routePartitionName='xlates-pt')Update Translation Patternucm.update_translation(pattern='1234',routePartitionName='xlates-pt',newPattern='4567')Device PoolsGet Device Poolsfordpinucm.get_device_pools():print(dp.name)Get Specific Device Pooldp=ucm.get_device_pool(name='RTP_DP')print(dp.name)Add Device Poolucm.add_device_pool(device_pool='Hollywood_DP')Delete Device Poolucm.delete_device_pool(device_pool='Hollywood_DP')Update Device Poolucm.update_device_pool(name='RTP_DP',regionName='G711_RGN')CSS and PartitionsGet Calling Search Spacesforcssinucm.get_calling_search_spaces():print(css.name)Get Specific Calling Search Spacecss=ucm.get_calling_search_space(calling_search_space='pstn-css')print(css.name)Add Calling Search Spaceucm.add_calling_search_space(calling_search_space='VIP_CSS',description='Very Important Stuff'members=['losfeliz-pt','silverlake-pt','pstn-pt'])Delete Calling Search Spaceucm.update_calling_search_space(calling_search_space='VIP_CSS')Delete Calling Search Spaceucm.delete_calling_search_space(calling_search_space='VIP_CSS')Get Partitionsforptinucm.get_partitions():print(pt.name)Get Specific Partitionpt=ucm.get_partition(routePartitionName='pstn-pt')print(pt.name)Add Partitionucm.add_partition(routePartitionName='VIP_PT',description='Very Important Peep')Delete Partitionucm.delete_partition(name='VIP_PT')Regions and LocationsGet Regionsforreginucm.get_regions():print(reg.uuid)Get Specific Regionreg=ucm.get_region(region='losfeliz_reg')print(reg.name)Add Regionucm.add_region(region='Hollywood-REG')Delete Regionucm.delete_region(region='Hollywood-REG')Get Locationsforlocinucm.get_locations():print(loc.name)Get Specific Locationloc=ucm.get_location(name='Shadow')print(loc.name)Add Locationucm.add_location(location='Hollywood-LOC')Delete Locationucm.delete_location(location='Hollywood-LOC')Directory NumbersGet Directory Numbersfordninucm.get_directory_numbers():print(dn.uuid)Get Specific Directory Numberdn=ucm.get_directory_number(pattern='2888',routePartitionName='losfeliz-pt')print(dn.uuid)Add Directory Numberucm.add_directory_number(pattern='1102',routePartitionName='ABQ_PT')Delete Directory Numberucm.delete_directory_number(uuid='{0B0CDC93-EC9C-7255-1B09-40A3CE727D5A}')Device ProfilesGet User Device Profilesforudpinucm.get_device_profiles():print(udp.name)Get Specific User Device Profileudp=ucm.get_device_profile(name='udp-bsimpson')print(udp.name)Add User Device Profileucm.add_device_profile(name='UDP_MScott',description='Michael Scott - 2901',product='Cisco 8861',phone_template='Standard 8861 SIP',protocol='SIP',lines=[('2901','losfeliz-pt','Michael Scott','Michael Scott','Michael Scott - 2901','+1408202XXXX'),('2902','losfeliz-pt','Pam Beesley','Pam Beesley','Pam Beesley - 2902','+1408202XXXX')])Delete User Device Profileucm.delete_device_profile('UDP_Mscott')CTI Route PointsGet CTI Route Pointsforctiinucm.get_cti_route_points():print(cti.name)Get Specific CTI Route Pointcti=ucm.get_cti_route_point(cti_route_point='AutoAttendant')print(cti.name)Add CTI Route Pointucm.add_cti_route_point(cti_route_point='aa-pilot',description='pilot to unity',device_pool='LosFeliz_DP',css='allphone-css',lines=[('2908','losfeliz-pt'),('2909','losfeliz-pt')])Delete CTI Route Pointucm.delete_cti_route_point(name='OneArch')Route Groups, Lists, and PatternsList Route Plannums=['19197016707','19197016712','19197016713','19197016706','191970167016']fornuminnums:forrouteinucm.list_route_plan(num):print(route.dnOrPattern)forrouteinucm.list_route_plan('2901'):print(route.uuid)Get Route Groupsforrginucm.get_route_groups():print(rg.name)Get Specific Route Grouprg=ucm.get_route_group(route_group='losfeliz-rg')print(rg.uuid)Add Route Groupucm.add_route_group(route_group='hollywood-rg',distribution_algorithm='Circular',members=[('america-online-sip'),('h323')])Delete Route Groupucm.delete_route_group(route_group='hollywood-rg')Get Route Listsforrlinucm.get_route_lists():print(rl.name)Get Specific Route Listrl=ucm.get_route_list(route_list='stdloc-rl')print(rl.description)Add Route Listucm.add_route_list(route_list='hollywood-rl',description='hollywood',run_on_all_nodes='true',cm_group_name='Default',members=[('losfeliz-rg'),('silverlake-rg')])Delete Route Listucm.delete_route_list(route_list='hollywood-rl')Get Route Patternsforrpinucm.get_route_patterns():print(rp.pattern)Get Specific Route Patternrp=ucm.get_route_pattern(pattern='911')print(rp.description)Add Route Patternucm.add_route_pattern(pattern='999',routePartitionName='losfeliz-pt',description='Movie Times',route_list='stdloc-rl')Delete Route Patternucm.delete_route_pattern(pattern='999',routePartitionName='losfeliz-pt')Runs and DosExecute SQL Queryforsqlinucm.run_sql_query('select * from device where description like "Bart%"'):print(sql.name)Do LDAP Sync on all agreementsforldapinucm.get_ldap_dir():ucm.do_ldap_sync(uuid=ldap.uuid)Reset Deviceucm.do_device_reset(device='SEP001100220033')Extension Mobility Loginucm.do_device_login(device='SEP001100220033',userId='bsimpson')Extension Mobility Logoutucm.do_device_logout(device='SEP001100220033',userId='bsimpson')