Understanding SOAP API documentation
Hello,
I'm trying to figure out where all relevant details are described regarding the SOAP API.
Fortunately I received some example code regarding the endpoint GetSessionDetailedUsage, see https://community.panopto.com/discussion/2016/using-getsessiondetailedusage-and-getsessionextendeddetailedusage-with-python-3
But now I need different endpoints, such as session duration of all sessions in a folder. This page shows some details regarding a single session: https://support.panopto.com/resource/APIDocumentation/Help/html/29a5f264-d2e4-2572-1270-6678d1ef3ba8.htm#!
But I can't find related details such as:
- the required attributes and elements of the body
- the relevant request url in the envelope
- the correct xmlns:pan url in the envelope
- what "tem:" is needed to identify e.g. Session.Duration?
- the correct url for SoapAction in the header
So here are some questions I have:
- Where can I find the details mentioned above, also for other endpoints (e.g. for extracting details on how sessions are organized in folders)?
- What method (SOAP, REST) and which version has the long term commitment by Panopto? It would be great to need to use just one method (I prefer REST, but GetSessionDetailedUsage is only available with SOAP it seems)
- Is there a python 3 version available of this? https://github.com/Panopto/python-soap
Any help for me to make sense of this would be great!
Thanks,
Jaap.
Best Answers
-
Kevin Baum Panopto Employee
Hi Jaap,
More technical information on the SOAP API endpoints can be found at the WSDL for each of the SOAP API endpoints. Here are the WSDL endpoints for the latest versions of each of the APIs on our demo site. You can swap "demo.hosted.panopto.com" for your Panopto site URL:
https://demo.hosted.panopto.com/Panopto/PublicAPI/4.6/RemoteRecorderManagement.svc?wsdl
https://demo.hosted.panopto.com/Panopto/PublicAPI/4.6/AccessManagement.svc?wsdl
https://demo.hosted.panopto.com/Panopto/PublicAPI/4.6/UserManagement.svc?wsdl
If you need to see more information on the calls, I recommend using a tool like SoapUI which can import the WSDLs directly and show the specific parameters that are sent on each call, including headers.
Panopto continues to add additional features and endpoints to our REST APIs, and we have a long-term commitment to maintaining both of our APIs. Most work on our new features will be in the REST APIs, not our SOAP APIs, but we do plan to continue to keep our existing SOAP API available for the foreseeable future. If at any point we deprecate our SOAP API, we will make sure to give plenty of advance warning.
Finally, we do not yet have a Python 3 version of our sample code for the API, but it is something we will be addressing in the future.
Please let me know if you have any other questions.
Thanks,
Kevin
0 -
Kevin Baum Panopto Employee
Hi Jaap,
Thanks for checking on the endpoints. I do realize that I missed the Authentication service in my previous list. This can be used to get a valid cookie for future calls, rather than including the authentication information directly in the call:
https://demo.hosted.panopto.com/Panopto/PublicAPI/4.0/Auth.svc?wsdl
The constructors and methods are part of the automatically generated SOAP API documentation. In most cases, they would serve no practical purpose for calling the SOAP API, and you can safely ignore them. The properties would be the relevant items for using and calling the SOAP API.
The information we have on our SOAP API documentation page is the majority of our documentation. In your example above, using the GetFolderList SOAP API, most of those parameters are optional as they provide different choices for filtering out the list of all folders that the user has access to, but they are not all required for each call. Any optional parameters that you are not using should be removed from the call entirely, rather than left as blank or question marks since that can lead to errors in deserializing the incoming request. We do have some examples on our public GitHub page (https://www.github.com/Panopto) which may also help with getting started using the SOAP API.
For the call you have above, most of the request parameters can be removed entirely. The auth section above is optional since you may choose to instead send a cookie you have received using the Auth SOAP API, and remove that section entirely. On the other parameters, in this case they are used as option parameters for filtering the list of folders down to something more manageable. I have included an example below showing a successful request (without the userkey and password) to get a list of all folders a user has access to, without filtering, paginated using Panopto's default number of results per page:
I hope that this helps.
Please let me know if you have any other questions.
Thanks,
Kevin
0
Answers
Hi @Kevin Baum, thanks for the explanation and the resources, I successfully imported the wsdl files in SoupUI which is helpful. But I do have a few follow up questions on this.
Is it correct that all the main wsdl resources are the following or are there more?
If there are more, could you list them all?
Additionally I am trying to make sense of the Panopto API Documentation on this page: https://support.panopto.com/resource/APIDocumentation/Help/html/c40c21c6-dc7a-d822-8c99-b276ee8337c2.htm I recognize some properties from the responses of requests, but what is the purpose of the constructors and methods? And how do they relate to writing code to execute API requests?
What I'm missing is documentation of the SOAP requests to be able to know what kind of values are allowed / expected. The following XML as an example of the GetFoldersList request (retrieved from SoapUI) shows that almost all elements are optional, but if a critical one is missing I get an 500 Internal Server Error, without any indication which was missing, the error message only states "An error occurred deserializing the message. See server logs for details" and I don't have access to server logs:
In my experiments I left every ?????? empty, I put them in this screenshot to indicate where I have no clue what I should put there or if they could be left empty. In this case I have no idea what value would be needed as ParentFolderId for the root folder just to go from there, as there is no GetRootFolderId endpoint as far as I know.
This is just one example, but I will need many more different requests for our projects. Can you please provide documentation that specifies the required details to make requests successfully?
Thanks,
Jaap