I'm working as a consultant on a project where we use the UDS API.
I'm working with C# .NET and visual studio.
I have downloaded the xml schemas found here:
The problem is that the response we get from the server does not seem to match the schema.
Here is an example xml response when calling user get...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user version="9.1.1" uri="https://xxx:8443/cucm-uds/user/xxx">
It does not seem to match: "user.get.xsd"
Is it a version conflict ? is there a way to get the corresponding schema version to the current installation on the server ?
Can you please try to Enable and Gather UDS Logs as per mentioned in the Cisco User Data Services (UDS) Developer Guide. They provide details on exactly what services were invoked, when they were invoked, and what they actually did including any run time errors. In mean time try the Hello world example as explained in the document .
Thanks and Regards,
I don't have direct access to the server, only the API. I can try and contact our customer about enabling logging.
We don't have any trouble getting a response from the API. I also tried calling with SOAP UI, and everything seems to work fine.
Our problem is when calling a REST service with .NET. I'm using the XSD files from your website to generate classes in .NET. The problem occurs when we call a service and deserialize the response. There seems to be a difference with the XML received and the schema files.
I have tried running the XML trough a schema validation and it does not seem to match.
In the response there is a version "9.1.1"... can that have anything to do with it ?
UDS is not officially supported in versions of CUCM prior to 10.0.1.
The XML schema for UDS changed drastically for some resources in version 10.0.1 and as such it is not possible to offer backwards-compatibility with 9.1.1. This is why the XML schema differs.
However, going forward, the XML schema should only change in backwards-compatible ways.
Could you please tell me where to download the UDS xml schemas?
Thank you very much,
Thank you very much for your very quick response, Christopher!
I would like to map all UDS xml schemas to java classes using JAXB. The first time on common.get.xsd, it successed and produced five java files. However, the second time on globalBindings.xsd, it's failed.
C:\test>xjc common.get.xsd -p first.test.cisco.uds -d src/generated
parsing a schema...
compiling a schema...
C:\test>xjc globalBindings.xsd -p com.pann.cisco.uds -d src/generated
parsing a schema...
[ERROR] vendor extension bindings (jaxb:extensionBindingPrefixes) are not allowed in the strict mode. Use -extension.
line 9 of file:/C:/test/globalBindings.xsd
Failed to parse a schema.
Do I need to have other options? What could be the best tool to do this task?
Thank you very much for your help.
You should run xjc on the whole xsd directory, not one file at a time.
xjc -extension -p com.pann.cisco.uds -d src/generated [directory with xsd files]
EDIT: Also, "-extension" is required because the XSD schema files use binding prefixes.
Thank you very much Christopher! I got it.
Since my company lab has multiple versions of Cisco server (9.x.x, 10.x.x, and 11.x.x), do you know where to download the UDS xml schemas for old versions?
Currently the schemas hosted on the DevNet UDS site cover v11.0. Distinct sets of schema files from previous versions are not offered, though you can check the 'New and Changed' details here to understand the few changes that have occurred: https://developer.cisco.com/site/user-data-services/develop-and-test/developer-guide/#new-and-changed
Note that UDS was first released in CUCM 10.0, and so is not present in 9.x versions. However, it is generally possible to access/update the same user info in the CUCM database via the AXL SOAP API, with the caveat that AXL requires admin-level credentials, vs. user-level credentials for UDS: https://developer.cisco.com/site/axl/
dstaudt - UDS was available from 9.0(1) onward.
Looks like the Developer Guide needs a small update then, thanks
UDS first appeared on CUCM in 8.6.2, but it is not officially supported until 10.0(1). A big part of that is due to incompatible interface specification changes made as part of the 10.0(1) release.
In practice, you should be able to use JAXB classes compiled from the 11.x XSD schema files to unmarshal data from any version of UDS from 10.0(1) and up. Marhshaling data out to any version should also work, as long as you are careful not to set data into fields which did not exist in the previous version.
You will find it difficult to use the same JAXB classes to communicate UDS versions lower thian 10.0(1). In practice, it will usually not work, is not recommended, and cannot be supported.
Thank all for your responses. I used to use a partial UDS for searching since version 9.0.x, but manually create java files. Now I just want to create java files from UDS schema so that I can get most features that UDS support; however, I cannot use schema version 11.0 for Jabber server 9.0.x (look likes it's not backwards compatible). I will update my old manual java files to use for old Jabber version though.
Again, thank you for all valuable information.