2

Using SOAP against CUCM's AXL web service, there are a number of query calls.
getLine getDeviceProfile getUser

and so on.

The WDSL shows:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
  <soapenv:Header/>
  <soapenv:Body>
    <ns:getDeviceProfile sequence="?">
      <!--You have a CHOICE of the next 2 items at this level-->
      <name>?</name>
      <uuid>?</uuid>
      <!--Optional:-->
      <returnedTags ctiid="?" uuid="?">
        <!--Optional:-->
        <name>?</name>
        <!--Optional:-->
        <description>?</description>
        <!--Optional:-->
        <product>?</product>
        <!--Optional:-->
        <model>?</model>
        <!--Optional:-->
        <class>?</class>
        <!--Optional:-->
        <protocol>?</protocol>
        <!--Optional:-->
        <protocolSide>?</protocolSide>
        <!--Optional:-->
        <userHoldMohAudioSourceId>?</userHoldMohAudioSourceId>
        <!--Optional:-->
        <vendorConfig>
          <!--You may enter ANY elements at this point-->
        </vendorConfig>
        <!--Optional:-->
        <versionStamp>?</versionStamp>
        <!--Optional:-->
        <traceFlag>?</traceFlag>
        <!--Optional:-->
        <mlppDomainId>?</mlppDomainId>
        <!--Optional:-->
        <mlppIndicationStatus>?</mlppIndicationStatus>
        <!--Optional:-->
        <preemption>?</preemption>
        <!--Optional:-->
        <lines>
          <!--You have a CHOICE of the next 2 items at this level-->
          <!--Zero or more repetitions:-->
          <line uuid="?" ctiid="?">
            <!--Optional:-->
            <index>?</index>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <display>?</display>
            <!--Optional:-->
            <dirn uuid="?">
              <!--Optional:-->
              <pattern>?</pattern>
              <!--Optional:-->
              <routePartitionName uuid="?">?</routePartitionName>
            </dirn>
            <!--Optional:-->
            <ringSetting>?</ringSetting>
            <!--Optional:-->
            <consecutiveRingSetting>?</consecutiveRingSetting>
            <!--Optional:-->
            <ringSettingIdlePickupAlert>?</ringSettingIdlePickupAlert>
            <!--Optional:-->
            <ringSettingActivePickupAlert>?</ringSettingActivePickupAlert>
            <!--Optional:-->
            <displayAscii>?</displayAscii>
            <!--Optional:-->
            <e164Mask>?</e164Mask>
            <!--Optional:-->
            <dialPlanWizardId>?</dialPlanWizardId>
            <!--Optional:-->
            <mwlPolicy>?</mwlPolicy>
            <!--Optional:-->
            <maxNumCalls>?</maxNumCalls>
            <!--Optional:-->
            <busyTrigger>?</busyTrigger>
            <!--Optional:-->
            <callInfoDisplay>
              <!--Optional:-->
              <callerName>?</callerName>
              <!--Optional:-->
              <callerNumber>?</callerNumber>
              <!--Optional:-->
              <redirectedNumber>?</redirectedNumber>
              <!--Optional:-->
              <dialedNumber>?</dialedNumber>
            </callInfoDisplay>
            <!--Optional:-->
            <recordingProfileName uuid="?">?</recordingProfileName>
            <!--Optional:-->
            <monitoringCssName uuid="?">?</monitoringCssName>
            <!--Optional:-->
            <recordingFlag>?</recordingFlag>
            <!--Optional:-->
            <audibleMwi>?</audibleMwi>
            <!--Optional:-->
            <speedDial>?</speedDial>
            <!--Optional:-->
            <partitionUsage>?</partitionUsage>
            <!--Optional:-->
            <associatedEndusers>
              <!--Zero or more repetitions:-->
              <enduser>
                <!--Optional:-->
                <userId>?</userId>
              </enduser>
            </associatedEndusers>
            <!--Optional:-->
            <missedCallLogging>?</missedCallLogging>
          </line>
          <!--Zero or more repetitions:-->
          <lineIdentifier>
            <!--Optional:-->
            <directoryNumber>?</directoryNumber>
            <!--Optional:-->
            <routePartitionName>?</routePartitionName>
          </lineIdentifier>
        </lines>
        <!--Optional:-->
        <numberOfButtons>?</numberOfButtons>
        <!--Optional:-->
        <phoneTemplateName uuid="?">?</phoneTemplateName>
        <!--Optional:-->
        <speeddials>
          <!--Zero or more repetitions:-->
          <speeddial>
            <!--Optional:-->
            <dirn>?</dirn>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <index>?</index>
          </speeddial>
        </speeddials>
        <!--Optional:-->
        <busyLampFields>
          <!--Zero or more repetitions:-->
          <busyLampField>
            <!--Optional:-->
            <blfDest>?</blfDest>
            <!--You have a CHOICE of the next 1 items at this level-->
            <!--Optional:-->
            <blfDirn>?</blfDirn>
            <!--Optional:-->
            <routePartition>?</routePartition>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <associatedBlfSdFeatures>
              <!--Zero or more repetitions:-->
              <feature>?</feature>
            </associatedBlfSdFeatures>
            <!--Optional:-->
            <index>?</index>
          </busyLampField>
        </busyLampFields>
        <!--Optional:-->
        <blfDirectedCallParks>
          <!--Zero or more repetitions:-->
          <blfDirectedCallPark>
            <!--Optional:-->
            <label>?</label>
            <!--You have a CHOICE of the next 2 items at this level-->
            <!--Optional:-->
            <directedCallParkId>?</directedCallParkId>
            <!--Optional:-->
            <directedCallParkDnAndPartition>
              <!--Optional:-->
              <dnPattern>?</dnPattern>
              <!--Optional:-->
              <routePartitionName uuid="?">?</routePartitionName>
            </directedCallParkDnAndPartition>
            <!--Optional:-->
            <labelAscii>?</labelAscii>
            <!--Optional:-->
            <index>?</index>
          </blfDirectedCallPark>
        </blfDirectedCallParks>
        <!--Optional:-->
        <addOnModules>
          <!--0 to 2 repetitions:-->
          <addOnModule uuid="?">
            <!--Optional:-->
            <loadInformation special="?">?</loadInformation>
            <!--Optional:-->
            <model>?</model>
            <!--Optional:-->
            <index>?</index>
          </addOnModule>
        </addOnModules>
        <!--Optional:-->
        <userlocale>?</userlocale>
        <!--Optional:-->
        <defaultProfileName>?</defaultProfileName>
        <!--Optional:-->
        <currentProfileName uuid="?">?</currentProfileName>
        <!--Optional:-->
        <loginTime>?</loginTime>
        <!--Optional:-->
        <loginDuration>?</loginDuration>
        <!--Optional:-->
        <singleButtonBarge>?</singleButtonBarge>
        <!--Optional:-->
        <joinAcrossLines>?</joinAcrossLines>
        <!--Optional:-->
        <loginUserId uuid="?">?</loginUserId>
        <!--Optional:-->
        <ignorePresentationIndicators>?</ignorePresentationIndicators>
        <!--Optional:-->
        <dndOption>?</dndOption>
        <!--Optional:-->
        <dndRingSetting>?</dndRingSetting>
        <!--Optional:-->
        <dndStatus>?</dndStatus>
        <!--Optional:-->
        <emccCallingSearchSpace uuid="?">?</emccCallingSearchSpace>
        <!--Optional:-->
        <alwaysUsePrimeLine>?</alwaysUsePrimeLine>
        <!--Optional:-->
        <alwaysUsePrimeLineForVoiceMessage>?</alwaysUsePrimeLineForVoiceMessage>
        <!--Optional:-->
        <softkeyTemplateName uuid="?">?</softkeyTemplateName>
        <!--Optional:-->
        <callInfoPrivacyStatus>?</callInfoPrivacyStatus>
        <!--Optional:-->
        <currentConfig>
          <!--Optional:-->
          <userHoldMohAudioSourceId>?</userHoldMohAudioSourceId>
          <!--Optional:-->
          <phoneTemplateName uuid="?">?</phoneTemplateName>
          <!--Optional:-->
          <mlppDomainId>?</mlppDomainId>
          <!--Optional:-->
          <mlppIndicationStatus>?</mlppIndicationStatus>
          <!--Optional:-->
          <preemption>?</preemption>
          <!--Optional:-->
          <softkeyTemplateName uuid="?">?</softkeyTemplateName>
          <!--Optional:-->
          <ignorePresentationIndicators>?</ignorePresentationIndicators>
          <!--Optional:-->
          <singleButtonBarge>?</singleButtonBarge>
          <!--Optional:-->
          <joinAcrossLines>?</joinAcrossLines>
          <!--Optional:-->
          <callInfoPrivacyStatus>?</callInfoPrivacyStatus>
          <!--Optional:-->
          <dndStatus>?</dndStatus>
          <!--Optional:-->
          <dndRingSetting>?</dndRingSetting>
          <!--Optional:-->
          <dndOption>?</dndOption>
          <!--Optional:-->
          <alwaysUsePrimeLine>?</alwaysUsePrimeLine>
          <!--Optional:-->
          <alwaysUsePrimeLineForVoiceMessage>?</alwaysUsePrimeLineForVoiceMessage>
          <!--Optional:-->
          <emccCallingSearchSpaceName uuid="?">?</emccCallingSearchSpaceName>
          <!--Optional:-->
          <deviceName>?</deviceName>
          <!--Optional:-->
          <model>?</model>
          <!--Optional:-->
          <product>?</product>
          <!--Optional:-->
          <deviceProtocol>?</deviceProtocol>
          <!--Optional:-->
          <class>?</class>
          <!--Optional:-->
          <addressMode>?</addressMode>
          <!--Optional:-->
          <allowAutoConfig>?</allowAutoConfig>
          <!--Optional:-->
          <remoteSrstOption>?</remoteSrstOption>
          <!--Optional:-->
          <remoteSrstIp>?</remoteSrstIp>
          <!--Optional:-->
          <remoteSrstPort>?</remoteSrstPort>
          <!--Optional:-->
          <remoteSipSrstIp>?</remoteSipSrstIp>
          <!--Optional:-->
          <remoteSipSrstPort>?</remoteSipSrstPort>
          <!--Optional:-->
          <geolocationInfo>?</geolocationInfo>
        </currentConfig>
        <!--Optional:-->
        <services>
          <!--Zero or more repetitions:-->
          <service uuid="?">
            <!--Optional:-->
            <telecasterServiceName uuid="?">?</telecasterServiceName>
            <!--Optional:-->
            <name>?</name>
            <!--Optional:-->
            <url>?</url>
            <!--Optional:-->
            <urlButtonIndex>?</urlButtonIndex>
            <!--Optional:-->
            <urlLabel>?</urlLabel>
            <!--Optional:-->
            <urlLabelAscii>?</urlLabelAscii>
            <!--Optional:-->
            <serviceNameAscii>?</serviceNameAscii>
            <!--Optional:-->
            <phoneService>?</phoneService>
            <!--Optional:-->
            <phoneServiceCategory>?</phoneServiceCategory>
            <!--Optional:-->
            <vendor>?</vendor>
            <!--Optional:-->
            <version>?</version>
            <!--Optional:-->
            <priority>?</priority>
          </service>
        </services>
        <!--Optional:-->
        <featureControlPolicy uuid="?">?</featureControlPolicy>
      </returnedTags>
    </ns:getDeviceProfile>
  </soapenv:Body>
</soapenv:Envelope>

Now the <returnedTags> subtree controls what is returned. I was making some calls before and I was getting back all the values (Which is what I want) and then I went and made some changes (not sure what) and suddenly I started getting back only what I asked for.

Key for me is, what is the trick to get AXL to return all data it has on the object referenced, instead of explicitly listing them all in the request?

I.e. I would like a query as simple as:

    <soapenv:Envelope xmlns:ns="http://www.cisco.com/AXL/API/8.5" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soapenv:Body>
    <ns:getLine sequence="?">
      <uuid>{02CF73CE-140E-AD9A-9E0E-B56134636D71}</uuid>
      <returnedTags uuid="?"/>
    </ns:getLine>
  </soapenv:Body>
</soapenv:Envelope>

And get back all the data populated on the Line. But if I just included an empty <returnedTags/> tag I get back nothing. If I list of empty nodes to show the attrs I want, I get back those explicit ones. So what do I send to get all attributes returned?

geoffc
  • 4,030
  • 7
  • 44
  • 51

1 Answers1

4

although this question is more then a couple of months old, i'll give it shot anyway. Recently i have been put on a cisco axl project as well. I dont have that much experience yet, so i might be wrong.

I have been working with the getPhone and getUser request (as they are quite simple) and i get a fully populated result with a query a simple as this:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:getUser sequence="?">
         <!--You have a CHOICE of the next 2 items at this level-->
         <userid>ID</userid>
      </ns:getUser>
   </soapenv:Body>
</soapenv:Envelope>

So in other words: perhaps you could try and remove the from your request. It is completely optional as indicated by the WSDL.

anothernoc
  • 177
  • 1
  • 2
  • 10
  • 4
    The answer turns out to be (Found on the Cisco mailing list/forum for support of this product) that it depends on the call. ListDevice vs getDevice. ListDevice need the specific tags you wanted returned, specified. and GetDevice, the absence of the returnedTags means return all tags. – geoffc May 17 '13 at 15:09