org.mule.modules

mule-module-linkedin

config

Namespacehttp://www.mulesoft.org/schema/mule/linkedin
Schema Locationhttp://www.mulesoft.org/schema/mule/linkedin/current/mule-linkedin.xsd  (View Schema)
Schema Version1.0
Minimum Mule Version3.2

Module Overview

LinkedIn is a business-related social networking site. Founded in December 2002 and launched in May 2003, it is mainly used for professional networking. This connector allows you to interact with LinkedIn API.

Summary

Configuration
<linkedin:config>
Configure an instance of this module
Message Processors
<linkedin:get-connections-by-id>
Gets the connections by id.
<linkedin:get-connections-by-url>
Gets the connections by url.
<linkedin:get-connections-for-current-user>
Gets the connections for current user.
<linkedin:get-network-update-comments>
Gets the network update comments.
<linkedin:get-network-update-likes>
Gets the network update likes.
<linkedin:get-network-updates>
Gets the network updates.
<linkedin:get-profile-by-id>
Gets the profile by id.
<linkedin:get-profile-by-url>
Gets the profile by url.
<linkedin:get-profile-for-current-user>
Gets the profile for current user.
<linkedin:get-user-updates>
Gets the network updates.
<linkedin:get-user-updates-by-id>
Gets the network updates.
<linkedin:like-post>
Like post.
<linkedin:post-comment>
Post comment.
<linkedin:post-network-update>
Post network update.
<linkedin:post-share>
Post share.
<linkedin:re-share>
Re-share.
<linkedin:search-people>
Search people.
<linkedin:search-people-with-facet-fields>
Search people.
<linkedin:search-people-with-facets>
Search people.
<linkedin:send-invite-by-email>
Send invite.
<linkedin:send-message>
Send message.
<linkedin:unlike-post>
Unlike post.
<linkedin:update-current-status>
Update current status.

Configuration

To use the this module within a flow the namespace to the module must be included. The resulting flow will look similar to the following:

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:linkedin="http://www.mulesoft.org/schema/mule/linkedin"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core
               http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/linkedin
               http://www.mulesoft.org/schema/mule/linkedin/current/mule-linkedin.xsd">

      <!-- here goes your flows and configuration elements -->

</mule>

This module is configured using the config element. This element must be placed outside of your flows and at the root of your Mule application. You can create as many configurations as you deem necessary as long as each carries its own name.

Each message processor, message source or transformer carries a config-ref attribute that allows the invoker to specify which configuration to use.

Attributes
TypeNameDefault ValueDescriptionJava TypeMIME TypeEncoding
xs:string name Optional. Give a name to this configuration so it can be later referenced.
xs:string apiKey API Key
xs:string apiSecret API Secret
xs:string scope r_basicprofile+r_emailaddress Optional. LinkedIn permissions
xs:string authorizationUrl https://api.linkedin.com/uas/oauth/authorize Optional. The URL defined by the Service Provider where the resource owner will be redirected to grant authorization to the connector
xs:string accessTokenUrl https://api.linkedin.com/uas/oauth/accessToken Optional. The URL defined by the Service Provider to obtain an access token
xs:string requestTokenUrl https://api.linkedin.com/uas/oauth/requestToken Optional. The URL defined by the Service Provider used to obtain an un-authorized request token

OAuth1

This connector uses OAuth1 as an authorization and authentication mechanism.

Authorizing the connector is a simple process of calling:

    <linkedin:authorize/>

The call to authorize message processor must be made from a message coming from an HTTP inbound endpoint as the authorize process will reply with a redirect to the service provider. The following is an example of how to use it in a flow with an HTTP inbound endpoint:

    <flow name="authorizationAndAuthenticationFlow">
        <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
        <linkedin:authorize/>
    </flow>

If you hit that endpoint via a web-browser it will initiate the OAuth dance, redirecting the user to the service provider page and creating a callback endpoint so the service provider can call us back once the user has been authenticated. Once the callback gets called then the connector will switch to an authorized state and any message processor or source that requires authentication can be called.

The authorize message processor supports the following attributes:

Authorize Attributes
NameDefault ValueDescription
authorizationUrl https://api.linkedin.com/uas/oauth/authorize Optional. The URL defined by the Service Provider where the resource owner will be redirected to grant authorization to the connector
accessTokenUrl https://api.linkedin.com/uas/oauth/accessToken Optional. The URL defined by the Service Provider to obtain an access token
requestTokenUrl https://api.linkedin.com/uas/oauth/requestToken Optional. The URL defined by the Service Provider used to obtain an un-authorized request token

After Authorization

The authorize message processor is an intercepting one. If something that requires authentication is requested but the connector is not authorized yet, the authorize message processor will be triggered. It will redirect the user to the service provider so that he can authorize the connector. This is why the authorize message processor needs to be behind an http:inbound-endpoint. Once authentication and authorization are successful, the service provider will respond to the connector with a callback. The connector will extract information from this callback, set its own internal state to authorized, and then move on to executing anything that had been interrupted by the authorization method.

  <flow name="authorizationAndAuthenticationFlow">
      <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
      <linkedin:authorize/>
      <http:response-builder status="200">
          <set-payload value="You have successfully authorized the connector"/>
      </http:response-builder>
  </flow>

In the above example we added the http:response-builder (keep in mind that this element is available only in Mule 3.3.0 and later). If the connector is not yet authorized, the execution of the response builder will be delayed until the callback is received.

On the other hand, if the connector had already been authorized before, then the flow execution will not be delayed; it will continue and the http:response-builder will get executed right away rather than after the callback.

Error Handling during Authorization

If for any reason, an errors ocurrs while processing the callback, the exception strategy of the flow containing the authorize will be executed. So, if the callback sent the wrong information you can handle that situation by setting up an exception strategy as follows:

  <flow name="authorizationAndAuthenticationFlow">
      <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
      <linkedin:authorize/>
      <http:response-builder status="200">
          <set-payload value="You have successfully authorized the connector"/>
      </http:response-builder>
      <catch-exception-strategy>
         <http:response-builder status="404">
             <set-payload value="An error has occurred authorizing the connector"/>
         </http:response-builder>
      </catch-exception-strategy>
  </flow>

What happens if a tenant who is not yet authorized wants to perform an OAuth protected operation? You can set this with the onNoToken property:

<google-calendars:config-with-oauth name="google-calendars" consumerKey="${google.apiclient}" consumerSecret="${google.apisecret}" onNoToken="[STOP_FLOW|EXCEPTION]">
    <google-calendars:oauth-callback-config connector-ref="${oauth.http.connector}" domain="${oauth.url}" localPort="${https.port}" async="false" path="oauth2callback" />
</google-calendars:config-with-oauth>

The onNoToken property can be set to two different values:

Unauthorize

Once this connector has been authorized further calls to the authorize message processor will be no-ops. If you wish to reset the state of the connector back to a non-authorized state you can call:

    <linkedin:unauthorize/>

Keep in mind that after the connector is unauthorized all future calls that attempt to access protected resources will fail until the connector is re-authorized.

Callback Customization

As mentioned earlier, once authorize gets called and before we redirect the user to the service provider, we create a callback endpoint. The callback endpoint will get called automatically by the service provider once the user is authenticated and he grants authorization to the connector to access his private information.

The callback can be customized in the config element of the this connector as follows:

    <linkedin:config>
        <linkedin:oauth-callback-config domain="${fullDomain}" localPort="${http.port}" remotePort="80"/>
    </linkedin:config>

The oauth-callback-config element can be used to customize the endpoint that gets created for the callback. It features the following attributes:

OAuth Callback Config Attributes
NameDescription
connector-ref Optional. Reference to a user-defined HTTP connector.
domain Optional. The domain portion of the callback URL. This is usually something like xxx.cloudhub.io if you are deploying to CloudHub for example.
localPort Optional. The local port number that the endpoint will listen on. Normally 80, in the case of CloudHub you can use the environment variable ${http.port}.
remotePort Optional. This is the port number that we will tell the service provider we are listening on. It is usually the same as localPort but it is separated in case your deployment features port forwarding or a proxy.
path Optional. Path under which the callback should be exposed. If not specified a random path will be generated.

The example shown above is what the configuration would look like if your app would be deployed to CloudHub.

Saving and Restoring State

Once the service providers hits the callback it will do so in way that state information it is also sent. This state information is later used by the connector on each call made to the service provider to let him know that we have completed the authorization and authentication process.

The state information is currently held in-memory but the connector offers hooks to save/restore this state. The ammount of information that needs to be saved and/or restored varies between version of the OAuth specification. At the bare minimum for OAuth 1.0a that needs to be the OAuth access token and OAuth access token secret.

The following is an example of how to log the access token and access token secret.

    <linkedin:config>
        <linkedin:oauth-save-access-token>
            <logger level="INFO" message="Received access token #[variable:OAuthAccessToken] and #[variable:OAuthAccessTokenSecret]"/>
        </linkedin:oauth-save-access-token>
    </linkedin:config>

The oauth-save-access-token is a message processor chain and you can add inside of it as many message processors as you want. The chain will be called with special inbound properties in the message which the information that needs saved.

Restoring the information is equally simple:

    <linkedin:config>
        <linkedin:oauth-restore-access-token>
            <message-properties-transformer scope="invocation">
                <add-message-property key="OAuthAccessToken" value="123"/>
                <add-message-property key="OAuthAccessTokenSecret" value="567"/>
            </message-properties-transformer>
        </linkedin:oauth-restore-access-token>
    </linkedin:config>

The example above does not do anything useful expect hardcode the access token and the token secret to 123 and 567 respectively. Just like oauth-save-access-token, oauth-restore-access-token is another message processor chain. Once the chain is done executing we will extract the OAuth access token property and OAuth access token secret property values.

The following shows a full example on how to save and restore using Mule ObjectStore Module to store the information inside an object store.

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:linkedin="http://www.mulesoft.org/schema/mule/linkedin"
      xmlns:objectstore="http://www.mulesoft.org/schema/mule/objectstore"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core
               http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/objectstore
               http://www.mulesoft.org/schema/mule/objectstore/1.0/mule-objectstore.xsd
               http://www.mulesoft.org/schema/mule/linkedin
               http://www.mulesoft.org/schema/mule/linkedin/current/mule-linkedin.xsd">

    <linkedin:config>
        <linkedin:oauth-save-access-token>
            <objectstore:store key="OAuthAccessToken" value-ref="#[variable:OAuthAccessToken]"/>
            <objectstore:store key="OAuthAccessTokenSecret" value-ref="#[variable:OAuthAccessTokenSecret]"/>
        </linkedin:oauth-save-access-token>
        <linkedin:oauth-restore-access-token>
            <enricher target="#[header:OAuthAccessToken]">
                <objectstore:retrieve key="OAuthAccessToken"/>
            </enricher>
            <enricher target="#[header:OAuthAccessTokenSecret]">
                <objectstore:retrieve key="OAuthAccessTokenSecret"/>
            </enricher>
        </linkedin:oauth-restore-access-token>
    </linkedin:config>

</mule>

Message Processors

<linkedin:get-connections-by-id>

Gets the connections by id. For details see http://developer.linkedin.com/docs/DOC-1004

XML Sample
<linkedin:get-connections-by-id id="some-id"
                                start="10"
                                count="20"
                                modificationDate="2011-08-20T00:00:00-00:00"
                                modificationType="NEW">
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:get-connections-by-id>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
id The id to search String */* UTF-8
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
modificationDate Optional. The modification date, if set modification type needs to be specified Date */*
modificationType Optional. The modification type, if set modification date needs to be specified ConnectionModificationType */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Connections the connections by id

<linkedin:get-connections-by-url>

Gets the connections by url. For details see http://developer.linkedin.com/docs/DOC-1004

XML Sample
<linkedin:get-connections-by-url url="some-url"
                                 start="10"
                                 count="20"
                                 modificationDate="2011-08-20T00:00:00-00:00"
                                 modificationType="NEW">
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:get-connections-by-url>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
url The url to search String */* UTF-8
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
modificationDate Optional. The modification date, if set modification type needs to be specified Date */*
modificationType Optional. The modification type, if set modification date needs to be specified ConnectionModificationType */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Connections the connections by url

<linkedin:get-connections-for-current-user>

Gets the connections for current user. For details see http://developer.linkedin.com/docs/DOC-1004

XML Sample
<linkedin:get-connections-for-current-user start="10"
                                           count="20"
                                           modificationDate="2011-08-20T00:00:00-00:00"
                                           modificationType="NEW">
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:get-connections-for-current-user>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
modificationDate Optional. The modification date, if set modification type needs to be specified Date */*
modificationType Optional. The modification type, if set modification date needs to be specified ConnectionModificationType */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Connections the connections for current user

<linkedin:get-network-update-comments>

Gets the network update comments. For details see http://developer.linkedin.com/docs/DOC-1043

XML Sample
<linkedin:get-network-update-comments networkUpdateId="some-network-update-id"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
networkUpdateId The network update id to search String */* UTF-8
Returns
Return Type Description
UpdateComments the network update comments

<linkedin:get-network-update-likes>

Gets the network update likes. For details see http://developer.linkedin.com/docs/DOC-1043

XML Sample
<linkedin:get-network-update-likes networkUpdateId="some-network-update-id"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
networkUpdateId The network update id to search String */* UTF-8
Returns
Return Type Description
Likes the network update likes

<linkedin:get-network-updates>

Gets the network updates. For details see http://developer.linkedin.com/docs/DOC-1006

XML Sample
<linkedin:get-network-updates start="10"
                              count="20"
                              showHiddenMembers="true"
                              startDate="2011-08-10T00:00:00-00:00"
                              endDate="2011-08-10T00:00:00-00:00">
    <linkedin:update-types>
        <linkedin:update-type>PROFILE_UPDATE</linkedin:update-type>
        <linkedin:update-type>RECOMMENDATION_UPDATE</linkedin:update-type>
    </linkedin:update-types>
</linkedin:get-network-updates>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
startDate Optional. The start date, if set end date needs to be specified Date */*
endDate Optional. The end date, if set start date needs to be specified Date */*
showHiddenMembers Optional. Whether to show hidden memberts Boolean */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:update-types> Optional. The update types to retrieve List<NetworkUpdateType>
Returns
Return Type Description
Network the network updates

<linkedin:get-profile-by-id>

Gets the profile by id. For details see http://developer.linkedin.com/docs/DOC-1002

XML Sample
<linkedin:get-profile-by-id id="some-id">
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:get-profile-by-id>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
id The id to search String */* UTF-8
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Person the profile by id

<linkedin:get-profile-by-url>

Gets the profile by url. For details see http://developer.linkedin.com/docs/DOC-1002

XML Sample
<linkedin:get-profile-by-url url="some-url" profileType="STANDARD"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
url The url to search String */* UTF-8
profileType The profile type to search ProfileType */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Person the profile by url

<linkedin:get-profile-for-current-user>

Gets the profile for current user. For details see http://developer.linkedin.com/docs/DOC-1002

XML Sample
<linkedin:get-profile-for-current-user>
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:get-profile-for-current-user>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
Returns
Return Type Description
Person the profile for current user

<linkedin:get-user-updates>

Gets the network updates. For details see http://developer.linkedin.com/docs/DOC-1006

XML Sample
<linkedin:get-user-updates start="10"
                           count="20"
                           startDate="2011-08-10T00:00:00-00:00"
                           endDate="2011-08-10T00:00:00-00:00">
    <linkedin:update-types>
        <linkedin:update-type>PROFILE_UPDATE</linkedin:update-type>
        <linkedin:update-type>RECOMMENDATION_UPDATE</linkedin:update-type>
    </linkedin:update-types>
</linkedin:get-user-updates>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
startDate Optional. The start date, if set end date needs to be specified Date */*
endDate Optional. The end date, if set start date needs to be specified Date */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:update-types> Optional. The update types to retrieve List<NetworkUpdateType>
Returns
Return Type Description
Network the network updates

<linkedin:get-user-updates-by-id>

Gets the network updates. For details see http://developer.linkedin.com/docs/DOC-1006

XML Sample
<linkedin:get-user-updates-by-id id="some-id"
                                 start="10"
                                 count="20"
                                 startDate="2011-08-10T00:00:00-00:00"
                                 endDate="2011-08-10T00:00:00-00:00">
    <linkedin:update-types>
        <linkedin:update-type>PROFILE_UPDATE</linkedin:update-type>
        <linkedin:update-type>RECOMMENDATION_UPDATE</linkedin:update-type>
    </linkedin:update-types>
</linkedin:get-user-updates-by-id>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
id The id to search String */* UTF-8
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
startDate Optional. The start date, if set end date needs to be specified Date */*
endDate Optional. The end date, if set end date needs to be specified Date */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:update-types> Optional. The update types to retrieve List<NetworkUpdateType>
Returns
Return Type Description
Network the network updates

<linkedin:like-post>

Like post. For details see http://developer.linkedin.com/docs/DOC-1043

XML Sample
<linkedin:like-post networkUpdateId="some-network-update-id"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
networkUpdateId The network update id String */* UTF-8

<linkedin:post-comment>

Post comment. For details see http://developer.linkedin.com/docs/DOC-1043

XML Sample
<linkedin:post-comment networkUpdateId="some-network-update-id" commentText="some-comment-text"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
networkUpdateId The network update id String */* UTF-8
commentText The comment text String */* UTF-8

<linkedin:post-network-update>

Post network update. For details see http://developer.linkedin.com/docs/DOC-1009

XML Sample
<linkedin:post-network-update updateText="some-update-text"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
updateText The update text String */* UTF-8

<linkedin:post-share>

Post share. For details see http://developer.linkedin.com/docs/DOC-1212

XML Sample
<linkedin:post-share commentText="some-comment"
                     title="some-title"
                     url="some-url"
                     imageUrl="some-image-url"
                     visibility="ALL_MEMBERS"
                     postToTwitter="true"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
commentText The comment text String */* UTF-8
title The title String */* UTF-8
url The url String */* UTF-8
imageUrl The image url String */* UTF-8
visibility The visibility LinkedInVisibilityType */*
postToTwitter false Optional. Whether to post to twitter Boolean */*

<linkedin:re-share>

Re-share. For details see http://developer.linkedin.com/docs/DOC-1212

XML Sample
<linkedin:re-share shareId="some-share-id"
                   commentText="some-comment"
                   visibility="ALL_MEMBERS"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
shareId The share id String */* UTF-8
commentText The comment text String */* UTF-8
visibility The visibility LinkedInVisibilityType */*

<linkedin:search-people>

Search people. For details see http://developer.linkedin.com/docs/DOC-1005

XML Sample
<linkedin:search-people start="10"
                        count="20"
                        sortOrder="RECOMMENDERS">
    <linkedin:search-parameters>
        <linkedin:search-parameter key="CURRENT_COMPANY">MuleSoft</linkedin:search-parameter>
        <linkedin:search-parameter key="TITLE">Engineer</linkedin:search-parameter>
    </linkedin:search-parameters>
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
</linkedin:search-people>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
sortOrder RELEVANCE Optional. The sort order to use, defaults to RELEVANCE SearchSortOrder */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:search-parameters> Optional. The search parameters to use Map<SearchParameter, String>
<linkedin:profile-fields> Optional. The profile fields to retriee List<ProfileField>
Returns
Return Type Description
People the people

<linkedin:search-people-with-facet-fields>

Search people. For details see http://developer.linkedin.com/docs/DOC-1005

XML Sample
<linkedin:search-people-with-facet-fields start="10"
                                          count="20"
                                          sortOrder="RECOMMENDERS">
    <linkedin:search-parameters>
        <linkedin:search-parameter key="CURRENT_COMPANY">MuleSoft</linkedin:search-parameter>
        <linkedin:search-parameter key="TITLE">Engineer</linkedin:search-parameter>
    </linkedin:search-parameters>
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
    <linkedin:facet-fields>
        <linkedin:facet-field>BUCKET_NAME</linkedin:facet-field>
        <linkedin:facet-field>BUCKET_CODE</linkedin:facet-field>
    </linkedin:facet-fields>
    <linkedin:facets>
        <linkedin:facet key="INDUSTRY">Software</linkedin:facet>
        <linkedin:facet key="PAST_COMPANY">MuleSource</linkedin:facet>
    </linkedin:facets>
</linkedin:search-people-with-facet-fields>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
sortOrder RELEVANCE Optional. The sort order, defaults to RELEVANCE SearchSortOrder */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:search-parameters> The search parameters Map<SearchParameter, String>
<linkedin:profile-fields> The profile fields to retrieve List<ProfileField>
<linkedin:facet-fields> The facet fields to use List<FacetField>
<linkedin:facets> Optional. The facets to use Map<FacetType, String>
Returns
Return Type Description
PeopleSearch the people

<linkedin:search-people-with-facets>

Search people. For details see http://developer.linkedin.com/docs/DOC-1005

XML Sample
<linkedin:search-people-with-facets start="10"
                                    count="20"
                                    sortOrder="RECOMMENDERS">
    <linkedin:search-parameters>
        <linkedin:search-parameter key="CURRENT_COMPANY">MuleSoft</linkedin:search-parameter>
        <linkedin:search-parameter key="TITLE">Engineer</linkedin:search-parameter>
    </linkedin:search-parameters>
    <linkedin:profile-fields>
        <linkedin:profile-field>LAST_NAME</linkedin:profile-field>
        <linkedin:profile-field>HONORS</linkedin:profile-field>
    </linkedin:profile-fields>
    <linkedin:facets>
        <linkedin:facet key="INDUSTRY">Software</linkedin:facet>
        <linkedin:facet key="PAST_COMPANY">MuleSource</linkedin:facet>
    </linkedin:facets>
</linkedin:search-people-with-facets>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
start Optional. The start, if set count needs to be specified Integer */*
count Optional. The count, if set start needs to be specified Integer */*
sortOrder RELEVANCE Optional. The sort order to use, defaults to RELEVANCE SearchSortOrder */*
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:search-parameters> The search parameters Map<SearchParameter, String>
<linkedin:profile-fields> Optional. The profile fields to retrieve List<ProfileField>
<linkedin:facets> The facet type and a comma separated string with all the values Map<FacetType, String>
Returns
Return Type Description
People the people

<linkedin:send-invite-by-email>

Send invite. For details see http://developer.linkedin.com/docs/DOC-1012

XML Sample
<linkedin:send-invite-by-email email="some-email"
                               firstName="some-name"
                               lastName="some-last-name"
                               subject="some-subject"
                               message="some-message"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
email The email String */* UTF-8
firstName The first name String */* UTF-8
lastName The last name String */* UTF-8
subject The subject String */* UTF-8
message The message String */* UTF-8

<linkedin:send-message>

Send message. For details see http://developer.linkedin.com/docs/DOC-1044

XML Sample
<linkedin:send-message subject="some-subject" message="some-message">
    <linkedin:recepient-ids>
        <linkedin:recepient-id>recipientId1</linkedin:recepient-id>
        <linkedin:recepient-id>recipientId2</linkedin:recepient-id>
    </linkedin:recepient-ids>
</linkedin:send-message>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
subject The subject String */* UTF-8
message The message String */* UTF-8
Child Elements
NameDefault ValueDescriptionJava Type
<linkedin:recepient-ids> The recepient ids List<String>

<linkedin:unlike-post>

Unlike post. For details see http://developer.linkedin.com/docs/DOC-1043

XML Sample
<linkedin:unlike-post networkUpdateId="some-network-update-id"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
networkUpdateId The network update id String */* UTF-8

<linkedin:update-current-status>

Update current status. For details see http://developer.linkedin.com/docs/DOC-1007

XML Sample
<linkedin:update-current-status status="new-status" postToTwitter="true"/>

Attributes
NameDefault ValueDescriptionJava TypeMIME TypeEncoding
config-ref Optional. Specify which configuration to use.
status The status String */* UTF-8
postToTwitter false Optional. Whether to post the update to Twitter Boolean */*

Message Sources

Transformers