Posts in Category "XML API"

XML API Tips: Identifying a Sco’s Owner

A common ask from users is how to identify the creator of a content object or meeting, etc. in Adobe Connect.  Sometimes it’s easy to decipher (from an Admin perspective) who ‘owns’ a meeting, by seeing the specific meeting (for example) in a specific user’s ‘User Meeting’ folder.  However that doesn’t necessarily mean that they ‘created’ the meeting.  Also, if a meeting is sitting in the Shared Meetings area, and you want to know who created the meeting initially, it wouldn’t be possible (via the UI).  In order to see who created the object or meeting, you can use the ‘sco-by-url’ API call.  Here’s how:

As an Administrator, log in and find the URL of the meeting or sco in question.

Then, formulate the web service call as such:

https://{connectDomain}/api/xml?action=sco-by-url&url-path=XXXXXXX

Where the url-path = the actual custom (or auto generated) url path of your meeting or content.  The format will look like this: ‘/myMeeting/’.

Here’s an example:

Call:

https://my.adobeconnect.com/api/xml?action=sco-by-url&url-path=/jimssharedmeeting/

Result:

<results>
<status code=”ok”/>
<owner-principal type=”content” principal-id=”12345678″ account-id=”87654321″ has-children=”false” is-hidden=”false” is-primary=”false” tos-status=””>
<ext-login>jimjohnson@mycompany.com</ext-login>
<login>jimjohnson@mycompany.com</login>
<name>Jim Johnson</name>
<email>jimjohnson@mycompany.com</email>
</owner-principal>
<sco sco-id=”123456789″ account-id=”87654321″ display-seq=”0″ folder-id=”12345678″ icon=”meeting” lang=”en” max-retries=”” source-sco-id=”98765432″ type=”meeting” version=”0″>
<url-path>/jimssharedmeeting/</url-path>
<date-begin>2014-03-31T09:00:00.000-04:00</date-begin>
<date-created>2014-03-31T09:10:12.220-04:00</date-created>
<date-end>2014-03-31T10:00:00.000-04:00</date-end>
<date-modified>2014-03-31T09:10:12.220-04:00</date-modified>
<name>Jim’s Shared Meeting</name>
</sco>
</results>

LDAP Sync Log File Access

Scenario: You may be an Adobe Connect Administrator and want to access the LDAP sync logs to see who has been (via an LDAP sync) brought into Adobe Connect, removed from Adobe Connect, or has been added or removed from a group membership, and when.  The problem is that these logs are only accessible for the most part, on the server itself by a server admin who can log into the Configuration Console on the localhost and access them manually via the Directory Service area of the console.  This is not accessible from outside of the actual Connect server.

The solution is to use the API to find all the LDAP sync logs on the system (which are actually treated as content) and access them with just an Administrator username and password to the system.  Here’s how:

1) Log into the Adobe Connect interface as user with Administrator priviledges.
2) Assuming your Licensed account-id has not been changed, it will be ‘7’ so you can make the following API call:

http://{serverURL}/api/xml?action=sco-expanded-contents&sco-id=7&filter-icon=logos

Where 7 is the account ID and you filter on ‘icon=logos’ (not sure why)…

Result will look like this (example response):

<results>
<status code=”ok”/>
<expanded-scos>
<sco depth=”2″ sco-id=”12345” folder-id=”11005″ type=”content” icon=”logos” lang=”en” source-sco-id=”” display-seq=”0″ source-sco-type=”” source-sco-icon=”” content-source-sco-icon=”” duration=””>
<name>{ds-sync}</name>
<url-path>/p5u78ftvvsi/</url-path>
<date-created>2013-10-29T20:10:17.660-04:00</date-created>
<date-modified>2014-01-14T21:42:27.150-05:00</date-modified>
</sco>
</expanded-scos>
</results>

The name of the item should be {ds-sync} (short for Directory Service Synchronization).

3) Then use the following call to get all sync logs under that folder:

http://{serverURL}/api/xml?action=sco-expanded-contents&sco-id=12345

Where the sco-id is the one from the first call and will be the sco-id of the sync folder (so yours will be different than my example of 12345)

It will list all sync logs with their scos (like below).

They all have a name format of: {sync-sco-preview} + the date.
They all have an icon=archive

4) Look for the one you want, and then navigate to the file via the URL (value in RED in the response below).

Example response:

<results>
<status code=”ok”/>
<expanded-scos>
<sco depth=”0″ sco-id=”12345″ folder-id=”11005″ type=”content” icon=”logos” lang=”en” source-sco-id=”” display-seq=”0″ source-sco-type=”” source-sco-icon=”” content-source-sco-icon=”” duration=””>
<name>{ds-sync}</name>
<url-path>/p5u78ftvvsi/</url-path>
<date-created>2013-10-29T20:10:17.660-04:00</date-created>
<date-modified>2014-01-14T21:42:27.150-05:00</date-modified>
</sco>
<sco depth=”1″ sco-id=”26150″ folder-id=”12345″ type=”content” icon=”archive” lang=”en” source-sco-id=”” display-seq=”0″ source-sco-type=”” source-sco-icon=”” content-source-sco-icon=”” duration=””>
<name>{sync-sco-preview} [2014-01-14 18:23:35.47]</name>
<url-path>/p26150/</url-path>
<date-created>2014-01-14T21:23:35.470-05:00</date-created>
<date-modified>2014-01-14T21:23:35.470-05:00</date-modified>
</sco>
<sco depth=”1″ sco-id=”26017″ folder-id=”12345″ type=”content” icon=”archive” lang=”en” source-sco-id=”” display-seq=”0″ source-sco-type=”” source-sco-icon=”” content-source-sco-icon=”” duration=””>
<name>{sync-sco-preview} [2014-01-14 06:37:23.88]</name>
<url-path>/p26017/</url-path>
<date-created>2014-01-14T09:37:23.880-05:00</date-created>
<date-modified>2014-01-14T09:37:23.880-05:00</date-modified>
</sco>
…….
</expanded-scos>
</results>

 

XML API Tips: Obtaining Quotas for Seminar Licenses

A while back I blogged about how to create a Seminar Session via the XML API in Adobe Connect 9.1 (view original blog here).  A question has since come up around how to obtain the quota for a Seminar License, so you know what to put in for the seminar-expected-load value in the acl-field-update call in the last step of that article.

You can obtain the Seminar License quotas for your different licenses by running this API call:

https://{myConnectURL}/api/xml?action=sco-seminar-licenses-list&sco-id=XXXXXXX

where sco-id = the sco-id of the SHARED SEMINARS folder (or the ‘seminars’ tree-id of the shortcut ‘seminars’).

Example Result (showing an example where there are 2 Licenses):

<results>
<status code=”ok”/>
<seminar-licenses>
<sco>
<begindate>2011-12-02T01:00:01.000+00:00</begindate>
<date-begin>2011-12-01T20:00:01.000-05:00</date-begin>
<date-created>2011-12-02T23:47:02.353-05:00</date-created>
<date-end>2016-12-01T19:59:59.000-05:00</date-end>
<date-modified>2013-11-29T10:53:56.590-05:00</date-modified>
<display-seq>0</display-seq>
<duration>XXXXXXXX</duration>
<enddate>2016-12-02T00:59:59.000+00:00</enddate>
<folder-id>XXXXXXXX</folder-id>
<icon>folder</icon>
<is-expired>false</is-expired>
<is-folder>1</is-folder>
<is-seminar>false</is-seminar>
<name>My Seminar License 1</name>
<quota>1000</quota>
<sco-id>XXXXXXXX</sco-id>
<type>folder</type>
<url-path>/fXXXXXXXX/</url-path>
</sco>
<sco>
<begindate>2011-12-02T01:00:01.000+00:00</begindate>
<date-begin>2011-12-01T20:00:01.000-05:00</date-begin>
<date-created>2011-12-02T23:47:04.490-05:00</date-created>
<date-end>2016-12-01T19:59:59.000-05:00</date-end>
<date-modified>2013-11-29T10:54:04.010-05:00</date-modified>
<display-seq>0</display-seq>
<duration>XXXXXXXX</duration>
<enddate>2016-12-02T00:59:59.000+00:00</enddate>
<folder-id>XXXXXXXX</folder-id>
<icon>folder</icon>
<is-expired>false</is-expired>
<is-folder>1</is-folder>
<is-seminar>false</is-seminar>
<name>My Seminar License 2</name>
<quota>1500</quota>
<sco-id>XXXXXXXX</sco-id>
<type>folder</type>
<url-path>/XXXXXXXX/</url-path>
</sco>
</seminar-licenses>
</results>

Again, there are multiple ways of getting the id of the main Seminars folder.  One quick one is :

https://{myConnectURL}/api/xml?action=sco-shortcuts

and pull the value from either in blue (the will both be the same):

<sco tree-id=”XXXXXXX” sco-id=”XXXXXXX” type=”seminars”>
<domain-name>http://{myConnectURL}</domain-name>
</sco>

Another is:

https://{myConnectURL}/api/xml?action=sco-expanded-contents&sco-id=XXXXXXXX&filter-type=tree

where the sco-id is = the account-id

and pull the value in blue:

<sco depth=”1″ sco-id=”XXXXXXX” folder-id=”XXXXXX” type=”tree” icon=”folder” lang=”en” source-sco-id=”” display-seq=”0″ source-sco-type=”” source-sco-icon=”” content-source-sco-icon=”” duration=””>
<name>Shared Seminars</name>
<url-path>/XXXXXXX/</url-path>
<date-created>2011-12-02T23:46:53.563-05:00</date-created>
<date-modified>2013-11-29T10:54:03.053-05:00</date-modified>
</sco>

Using the XML API with Enhanced Security

With the release of Adobe Connect 9.0.4 and beyond (view KB here), we have introduced the Enhanced Security feature (documentation) and it is ON by default on our hosted system.  If you are an Adobe Connect Hosted customer, you can toggle the Enhanced Security feature on or off (if you are an Administrator) by logging into your Adobe Connect Hosted account and navigating to: Administration > More Settings.  You will see the following Security Settings:

es

 

If you have ‘Enable Enhanced Security’ checked (and you save the settings), your account will now issue TWO session cookies to a user when they authenticate.  This is crucial to understand and plan for if you are using the XML API to integrate with another system.  Also, if you are a partner or developer who has built an application that integrates with Adobe Connect, you will need to rework your application to account for the possibility of this feature being ON or OFF.

From my experience, it is best to simply code the application to look for the second session cookie all the time (after initially authenticating the user) rather than try to check for the feature being on or off.

Typically in Adobe Connect Hosted accounts before this feature was implemented (and with this setting OFF), your application would first make a ‘common-info’ call as below, to obtain a session cookie before logging a user in:

https://myaccountURL/api/xml?action=common-info

<results>
<status code=”ok”/>
<common locale=”en” time-zone-id=”35″ time-zone-java-id=”US/Eastern”>
<cookie>naXbreezecookie123456789</cookie>
<date>2013-12-02T19:50:38.983-05:00</date>
<host>https://myaccountURL</host>
<local-host>connecthost01</local-host>
<admin-host>naXcps.adobeconnect.com</admin-host>
<url>/api/xml?action=common-info</url>
<version>9.1.2</version>
<tos-version>7.5</tos-version>
<product-notification>true</product-notification>
<account account-id=”12345678″/>
<user user-id=”45678901″ type=”user”>
<name>Jim Johnson</name>
<login>Jim</login>
</user>
<user-agent>
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
</user-agent>
<mobile-app-package>air.com.adobe.connectpro</mobile-app-package>
</common>
<reg-user>
<is-reg-user>false</is-reg-user>
</reg-user>
</results>

Then you would log the user in:

https://myaccountURL/api/xml?action=login&login=Jim&password=XXXXXXX&session=naXbreezecookie123456789

<results>
<status code=”ok”/>
</results>

That would normally be it.

Then, all subsequent calls, you would normally just append that same session cookie as the ‘session’ parameter and you’d be all set.  However, with Enhanced Security ON, that session cookie you obtained from the first common-info call will NOT work in calls after the login call authenticates the user.  Once the login API is called, you MUST call common-info one more time immediately after the OK response comes back from the login call.  When you run common-info again, you will notice you will get a DIFFERENT session cookie value.  That second cookie value is the session you need to include in your subsequent calls going forward.  If you do not use that second value in your API call, and instead include the value from the first common-info call result, you will get the following error response:

<results>
<status code=”no-access” subcode=”no-login“/>
</results>

So in summary:

Before Enhanced Security the workflow was:

1) common-info API to get cookie session value
2) login API using the cookie session value
3) continue on making API calls with that same session cookie throughout the user session

After Enhanced Security (post 9.0.4):

1) common-info API to get cookie session value
2) login API using the cookie session value
3) common-info API again a second time to get the final cookie session value to use going forward in all other calls
4) continue on making API calls with that NEW session cookie throughout the user session

Again, it is best to code your application to always look for a session cookie again AFTER logging a user in.  That way, even if you are still using the same session (say if the account had Enhanced Security set to OFF), your application will still work fine and in the cases where the account does have Enhanced Security turned ON, it will still continue to work as expected.

Adding the Passcode Feature for Connect Meetings

You may add a passcode feature as an additional security option for Connect Meeting room access in Connect versions 8 and 9. Each Meeting room can have its own passcode.  The parameter will appear under the Edit Information tab of the Connect Meeting:

pc2.fw

This is a great option. For example, it allows you to pop up a fast ad hoc meeting with full guest access while requiring guests to apply a pass-code to enter:

pc.fw

It also allows an additional layer of security for registered users as well; they also would need to enter a passcode in addition to any permissions (even host-level) granted to the room.

pc1.fw

Once applied, when a users hits the Meeting URL they will be presented with the passcode field:

pc3.fw

To add this feature, simple log onto your on-premise adobe Connect server as a Connect Administrator and enter the following into the URL line in Connect Central:

http://YOURDOMAINNAME/api/xml?action=meeting-feature-update&account-id=7&feature-id=fid-meeting-passcode-notallowed&enable=false

Where “YOURDOMAINNAME” is actually your domain name.

If this executes correctly, you will see the following output when you follow-up by entering this command into the same URL line in Connect Central:

http://YOURDOMAINNAME/api/xml?action=meeting-feature-info&account-id=7

Output: feature-id=fid-meeting-passcode-notallowed

Alternatively you could simply check and see if the feature is available under the Edit Information tab of any Meeting.

Note: Your Meeting passcode can be up to 16 letters or numbers; keep in mind that it is a convenient supplementary security mechanism rather than a primary means. You will see this warning if your passcode is not supported go over that: Your passcode must be between 1 and 16 characters long (letters or numbers, no spaces).

In adding this feature you have invoked the Web Services API in Connect. If you are not familiar with the API see the following document; it is rich with options: http://help.adobe.com/en_US/connect/9.0/webservices/connect_9_webservices.pdf

Note also that with Connect 9.2, in Connect Central under Administration > Users and Groups > Edit Login and Password Policies, there are two relevant check boxes, one to enable and the other one to force the use of the passcode:

passcode.fw

Vantage Point is not just about Bandwidth

Vantage Point from Refined Data works with Connect and provides remote control of Cameras, Microphones, Telephones, Volumes, Tech Support, Motion Detection, Mouse Detection, Continuous attendance tracking and reporting and much more so it’s not just about bandwidth reduction.

On the bandwidth front, Vantage Point publishes streams to Refined Data servers at 100Kbps for each participant in the room; this is less than Connect in most cases, but the Host only consumes as many streams as they can view at one time. The host can see as few as 5 or 6 students at one time or as many as 50 or more depending on their screen resolution, window size, Vantage Point settings, connectivity and bandwidth availability.

This means that even with 100 Participants in a Connect room and one Host the bandwidth consumption looks like this:

  • Participant Load: 100kbps Up (to publish their own camera to Vantage Point), 100kbps down (to view the Host in Connect). This is a small signature on the network.
  • Host Load: 100kbps Up (to publish their own camera in Connect), 2.5mbps down (assuming they view 25 participant cameras in Vantage Point at one time). The Host is the only one who needs a really good connection.
  • Total Load on Adobe Connect: 1 publish stream + 99 subscribers

The host can always reduce their own load simply by viewing fewer simultaneous Video pods in Vantage Point. The bandwidth load for students or participants is not affected at all by class size. Bandwidth load for Hosts rises linearly with class size but can be limited by the host at any time based on the maximum number of cameras they view at one time.

In Connect, the bandwidth load rises with the number of cameras being shared:

  • 4 Cameras: 16 Connections on the Server, each user publishes 100kbps and consumes 300kbps
  • 10 Cameras: 100 Connections on the Server, each user publishes 100kbps and consumes 900kbps
  • 20 Cameras: 400 Connections on the Server, each user publishes 100kbps and consumes 1.9mbps

Even if Connect could technically support 50 or 100 simultaneous web cams in a single meeting (2,500 streams risks significant latency), consider the requirement that participants would need 5-10mbps of bandwidth to support the load, before accounting for VoIP, screen-sharing and basic overhead. Anything above 10 simultaneous web cameras may be difficult for a host to manage and apart from any other considerations, there may not be enough real-estate for content if you are showing 10 or more web cams in the meeting room.

Vantage Point only publishes at 100kbps, most of the time; DSL and Standard quality is already more than twice this load in Connect and can easily rise higher if the room is set to use the Highest video quality at 16:9. With Vantage Point, Adobe Connect saves the server load, participants are not affected by class size, Hosts can see all of their students, all of the time and enjoy unparalleled control of the classroom environment.

Check it out at Refined Data: http://vantagepoint.refineddata.com/

Troubleshooting Caption Colorado Domain Names in Meeting Pod

Issue: Sometimes the Closed Captioning pod fails to connect to Caption Colorado.

Symptom looks like this:

CC.fw

Always make certain you have the correct pod version: http://www.adobe.com/products/adobeconnect/feature-details/closed-captioning.html

There are two names available at Caption Colorado, one is a legacy name for Breeze and the other is for Connect. Both point to the same TCPIP address:

C:\flyfishing\frank>nslookup connect.captioncolorado.com
Server:  dns.adobe.com
Address:  xx.xx.xx.xx
Non-authoritative answer:
Name:    connect.captioncolorado.com
Address:  216.241.103.7
C:\flyfishing\frank>nslookup breeze.captioncolorado.com
Server:  dns.adobe.com
Address:  xx.xx.xx.xx
Non-authoritative answer:
Name:    breeze.captioncolorado.com
Address:  216.241.103.7

Workaround: When either of these domain names (Breeze or Connect) fails to connect, use the other. This is a known issue at Caption Colorado and they are working to resolve it. Simply juxtaposing connect.captioncolorado.com for breeze.captioncolorado.com or visa versa in the pod configuration will solve the connection issue and facilitate closed-captioning.

XML API Tips: Modification of Help / Support Links

In Adobe Connect (both On Prem and Hosted accounts), there are methods to modify existing support and help links using the XML API.  This was implemented to provide the capability to replace the in product support / help links and details with partner or organization-specific links / contact information.

Use Case

Say a partner or organization wants to be able to replace the help / support links embedded in the Connect meeting client or Connect web app with links to their own version of the help documentation / support information or support portal. They need to provide a combined cohesive help / support channel to their customers or their users.

The following undocumented APIs are provided to modify the support or help link customization on a per-account basis. Here is how it works:

Link 1 – Contact Support (In Meeting)

First, the ‘Contact Support’ link in the Meeting interface itself (as seen below):

contactsupport
To modify this, use the XML API call: account-support-link-update to enable or disable the account feature and modify the support link.

The default support link is: http://helpx.adobe.com/adobe-connect.html

XML API Call Info:
account-support-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
enable = true or false – enables (true) or disables (false) this feature
support-link = link to partner or customer support site (must be http link)
– if enable is true, must provide support-link
– if enable is false, remove support-link for the account

To enable a custom link:

https://{AccountURL}/api/xml?action=account-support-link-update&enable=true&support-link=http://mySupportsiteURL

Results:

<results>
<status code=”ok”/>

</results>

To verify it is now active (aside from testing in a new meeting session), you can run the ‘feature-info’ API call which will return that feature as part of account information if the feature is enabled on the account.

Example:

https://{AccountURL}/api/xml?action=feature-info&account-id=XXXXXXXX

<results>
<status code=”ok”/>
<disabled-features>
….snip snip….
<feature account-id=”XXXXXXXX” feature-id=”fid-non-partner-support-link“>
<date-begin>2013-10-29T16:53:09.533-04:00</date-begin>
<date-end>2999-12-31T19:00:00.863-05:00</date-end>
<recordcreated>2013-10-29T11:53:09.553-04:00</recordcreated>
</feature>
….snip snip….
</disabled-features>
</results>

Note: it’s deceiving, but it WILL be listed in the ‘disabled-features’ XML node if it is ENABLED.  If it is NOT enabled, it will NOT show up in the results of this call.

To disable (or set back to the original default setting):

https:{AccountURL}/api/xml?action=account-support-link-update&enable=false

Results:

<results>
<status code=”ok”/>
</results>

Note: For meetings that are still active and have not unloaded from memory yet, the links will not change until it fully shuts down.  For new meeting sessions, the link will immediately be updated/reflected to show the intended webpage.

Link 2 – Help Link (Login Page)

Second, the ‘Help’ link on the login page (as seen below):

help

The default value will take you to: http://helpx.adobe.com/adobe-connect.html

XML API Call Info:
account-custom-help-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
field-id = the field-id of the help link you are trying to modify. Values are:
account-login-help-link
– account-webapp-help-link
value = link to partner or customer support site (The help link must start with either ‘http://’ or ‘https://’.  No javascript urls are allowed as values.)

 

To enable a custom link (use the ‘account-login-help-link’ field-id above):

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-login-help-link&value=http://mySupportURL

Results:

<results>
<status code=”ok”/>
</results>

Link 3 – Help Link (Connect Central Page)

Third, the ‘Help’ link on the top of the Connect Central page (as seen below):

central

The default value will be: http://help.adobe.com/en_US/connect/9.0/using/index.htm

XML API Call Info:
account-custom-help-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
field-id = the field-id of the help link you are trying to modify. Values are:
– account-login-help-link
account-webapp-help-link
value = link to partner or customer support site (The help link must start with either ‘http://’ or ‘https://’.  No javascript urls are allowed as values.)

 

To enable a custom link (use the ‘account-webapp-help-link’ field-id above):

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=http://mySupportURL

Results:

<results>
<status code=”ok”/>
</results>

To REMOVE any of these link customizations, simply leave the VALUE param empty:

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=

Results:

<results>
<status code=”ok”/>
</results>

And:

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=

Results:

<results>
<status code=”ok”/>
</results>

To view any custom help links set on the account:

XML API Call Info:
account-custom-help-links
parameters:
none.

https://{AccountURL}api/xml?action=account-custom-help-links

If NO help links have been customized, you will see only an ‘ok’ result returned.

Results if no help links:

<results>
<status code=”ok”/>
</results>

 Results if help links are customized:

<results>
<status code=”ok”/>
<custom-help-links>
<links>
<login-help-link>http://www.mysupport.com</login-help-link>
<webapp-help-link>http://www.mysupport.com</webapp-help-link>
</links>
</custom-help-links>
</results>

Using the FMS API for On-Prem Adobe Connect

For monitoring purposes, you can build an application which utilizes additional API calls that hook directly into the Flash Media Administration Server services.  This is undocumented but may help you with additional monitoring or statistics on the FMS side.

A full list of FMS/FCS API entries for the 9.1 version of FMS (which is version 4) can be found here:
http://help.adobe.com/en_US/flashmediaserver/adminapi/WSa4cb07693d12388431df580a12a34991ebc-8000.html

Previously, as an Adobe Connect administrator, you probably have always had the additional FMS service (Flash Media Administration Server) shut off.  In order to utilize the API, you need to make sure this service is running:

fmsadmin

In order to hit the API for FMS, you need to use the FMS admin username and password.

This can be found in:

[install drive]:\Connect\9.1.1\comserv\conf

# An administrator for the server. Users.xml
DEFAULT_FCS_USER=XXXXXX
# Password for this vhost administrator. Users.xml
DEFAULT_FCS_PASSWORD=XXXXXX

In order to use all the calls (or a select few, depending on your desire), you need to modify one additional FMS file (see below).

Continue reading…

XML API Tips: User Manager Associations

A common workflow for Adobe Connect admins is to associate users to managers via the UI.

In the UI, you can navigate to the Administration > Users and Groups > {select a user} > Edit Team Members area to select users who will be direct reports of that manager.

This information will show up in the ‘My Profile‘ > Organization area for the user, where they will be able to see their Manager information (if they have a manager set) and their Team Members (if they are a manager themselves).

But with the XML API, this process is undocumented. Here’s how you accomplish this:

How do I associate a user to a Manager?

http://connectURL/api/xml?action=user-manager-update&manager-id=XXXXXXX&principal-id=XXXXXXX

Where:
action=user-manager-update
manager-id= principal-id of user who is going to be the manager
principal-id= principal-id of the user who is being assigned a manager

Note:
The user-manager-update call is UNDOCUMENTED.

Results:

<results>
<status code="ok"/>
</results>

How do I disassociate a user from a Manager?

http://connectURL/api/xml?action=user-manager-update&manager-id=XXXXXXX&principal-id=XXXXXXX

Where:
action=user-manager-update
manager-id= the account-id (‘7′ if an on-prem/Licensed customer or a longer numeric value for an Adobe Hosted customer)
principal-id= principal-id of the user who is being assigned a manager

Note:
The user-manager-update call is UNDOCUMENTED.

Results:

<results>
<status code="ok"/>
</results>

 

The below IS documented, however it is applicable to this post, so I will include it:

How do I list all direct reports of a Manager?

http://connectURL/api/xml?action=principal-list&filter-manager-id=XXXXXX

Where:
action=principal-list
filter-manager-id= the sco-id of the user who is the manager

Results:

<results>

<status code="ok"/>
<principal-list>
<principal principal-id="XXXXXXXXX" account-id="XXXXXXXXX" type="user" has-children="false" is-primary="false" is-hidden="false" manager-id="XXXXXXXXX" training-group-id="">
<name>USER NAME (FIRST AND LAST)</name>
<login>USER LOGIN VALUE</login>
<email>USER EMAIL VALUE</email>
<display-uid>USER LOGIN VALUE</display-uid>
</principal>
</principal-list>
</results>