Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


Section
Column
width20%
Panel
borderColor#BF9900
bgColor#FFFFFF
titleBGColor#E5D699
titleIn this Section
borderStylesolid
Table of Contents
indent15px
stylenone
Column

Overview

These APIs provide search capability for People data that is published from the IAM Identity Store.  These APIs will return general information about people, including names, system ids, affiliations, primary user accounts, and contact info.  

Audience

Excerpt

This documentation is intended for developers who wish to perform a basic search on the public data within the IAM system from within their application via the REST with JSON interface.

This is currently the only interface available for this API. If you would like to see an XML interface please email middleware-api@ucdavis.edu.

Summary of People APIs

People API

The centerpiece of the Identity Store People APIs is backed by a de-normalized view of people information as described by the images below:

(TODO:: Insert image of CV_PEOPLE)

The data from this view is exposed through the People API, and is accessible at:
Wiki Markup


h2. Overview

These APIs provide search capability for People data that is published from the IAM Identity Store.  These APIs will return general information about people, including names, system ids, affiliations, primary user accounts, and contact info.  

h2. Audience
{excerpt}
This documentation is intended for developers who wish to perform a basic search on the public data within the IAM system from within their application via the REST with JSON interface.{excerpt}
This is currently the only interface available for this API. If you would like to see an XML interface please email [mailto:middleware-api@ucdavis.edu].

h2. Summary of People APIs


h4. People API

The centerpiece of the Identity Store People APIs is backed by a de-normalized view of people information as described by the images below:

(TODO:: Insert image of CV_PEOPLE)

The data from this view is exposed through the People API, and is accessible at: [https://iet-ws-test.ucdavis.edu/api/iam/people/search
]

Accessing this data is as easy as passing your search parameters as query parameters in the url.  For example, the following curl command would return information about the user, Gary Sharpe.


curl \-i \-H "Accept: application/json" [https://iet-ws-test.ucdavis.edu/api/iam/people/search?firstName=Gary&lastName=Sharpe&key=myKeyv&v=1.0
]

The specifics of the content returned are described in more detail below.

h4.
 Supporting People APIs



Additional, supporting APIs are available to provide access to a subset of the data available in the de-normalized view, as well as other information about a person not available in the de-normalized view.


* Official Name

* Display Name

* System Ids
  • Affiliations
  • Contact Info
  • Primary Kerberos Account
  • Primary HSAD Account
  • If you need assistance with this APIs, please email
    
    * Affiliations
    * Contact Info
    * Primary Kerberos Account
    * Primary HSAD Account
    
    If you need assistance with this APIs, please email [mailto:middleware-api@ucdavis.edu
    .

    Application requirements

    Each request must provide a valid application key. You may sign up for your own application key here <INSERT LINK>.

    Using the JSON interface

    The easiest way to start learning about this interface is to try it out. This section shows how to use the curl command line tool to execute sample queries.

    Code Block
    titleSample JSON Requests
    ].
    
    
    
    
    
    
    h2. Application requirements
    
    Each request must provide a valid application key. You may sign up for your own application key here <INSERT LINK>.
    
    {color:#002666}{*}Using the JSON interface{*}{color}
    
    The easiest way to start learning about this interface is to try it out. This section shows how to use the&nbsp;curl&nbsp;command line tool to execute sample queries.
    {code:title=Sample JSON Requests}{code} Attach this curl command to the beginning of any of the below sample requests:
    
    	curl -i -H "Accept: application/json"
    
    
    
     People API
    
    	https://iet-ws-test.ucdavis.edu/api/iam/people/search?firstName=Gary&lastName=Sharpe&key=myKeyv&v=1.0
    
    
     DisplayName API
    
    	https://iet-ws-test.ucdavis.edu/api/iam/people/displayname/{iamid}?key=myKeyv&v=1.0
    
    
     SystemIds API
    
    	https://iet-ws-test.ucdavis.edu/api/iam/people/systemids/{iamid}?key=myKeyv&v=1.0
    	https://iet-ws-test.ucdavis.edu/api/iam/people/systemids/search?mothraId=1111111&key=myKeyv&v=1.0
    
    
     Affiliations API
    
    	https://iet-ws-test.ucdavis.edu/api/iam/people/affiliations/{iamid}?key=myKeyv&v=1.0
    	https://iet-ws-test.ucdavis.edu/api/iam/people/affiliations/isfaculty?key=myKeyv&v=1.0
    
    
    
     PriKerberosAccount
    
    	https://iet-ws-test.ucdavis.edu/api/iam/people/prikerbacct/{iamid}&key=myKeyv&v=1.0
    
    
    
    The response to all of the above requests
    have a Content-Type of text/javascript.  An example response for the the following request is shown below:curl -i -H "Accept: application/json"
     have a&nbsp;{color:#339966}Content-Type&nbsp;of&nbsp;text/javascript{color}. &nbsp;An example response for the the following request is shown below:
    
    curl \-i \-H "Accept: application/json" [https://iet-ws-test.ucdavis.edu/api/iam/people/search?firstName=Gary&lastName=Sharpe&key=myKeyv&v=1.0
    ]
    {code
    :lang
    =xml
    |title
    =Sample JSON Response
    }
    {
      "responseData" : {
        "results" : [
    {
    "IAMId": "",
    "mothraId": "",
    "PPSId" : "",
    "studentId": "",
    "bannerPIdM": "",
    "externalId": "",
    "offFirstName" : "",
    "offMiddleName": "",
    "offLastName": "",
    "offSuffix" : "",
    "offFullName": "",
    "disFirstName" : "",
    "disMiddleName": "",
    "disLastName": "",
    "disSuffix" : "",
    "disFullName": "",
    "isFaculty": "",
    "isStudent": "",
    "isStaff": ""
    "privacyCode": "",
    "modifyDate": "",
    
    
    },
    { ...<More results>.... }
     ],
      "responseDetails" : null,
      "responseStatus" : 0
    }
    

    JSON reference

    Unlike the core JavaScript interface, the JSON interface is exposed through a uniform URL that contains CGI arguments. Your application can use an HTTP stack of its choosing. In order to use the JSON interface:

    • You must construct a properly formatted URL with all necessary CGI arguments.
    • You must send an HTTP referer header that accurately identifies your application.
    • You must process the JSON-encoded response.

    Request format

    URL base address

    The standard URLs for the IAM Identity Store People APIs varies based on exactly which API is invoked.  The details are provided in documentation about each individual API.

    URL arguments

    This section provides examples of the kinds of arguments that can be used with the People APIs

    The value of a CGI argument must always be properly escaped. This can be done via the functional equivalent of JavaScript's encodeURIComponent() method.

    Required URL arguments

    The following table lists the required URL arguments.

    Argument

    Example

    Description

    key

    key=your-key

    This argument supplies the application's key. You can sign up for an API key <INSERT LINK HERE>.
    It must be a valid key associated with your application. The key is required for this API to implement quality of service rules for this API. If your application is making too many requests it will be throttled to ensure resources are not overloaded during times of peak usage. Also, by supplying a key we can identify and contact you should something go wrong with your application.

    v

    v=1.0

    This argument supplies protocol version number. The only valid value at this point in time is 1.0.

    Search URL arguments

    The following table lists the possible search query URL arguments. At least one argument should be provided to perform a search. If multiple search criteria are provided an 'AND' search will be performed to match on all arguments.

    Wildcard Searches: Any argument may use a wildcard within the query value. You may use multiple wildcards in any position in the search criteria. See examples below.*

    Example search arguments:

    Search for anyone with first name of
    Code Block
    titleSearch for anyone with last name of 'Bray'
    {code}
    
    
    h3. JSON reference
    
    
    h2.
    
    {color:#000000}Unlike the core JavaScript interface, the JSON interface is exposed through a uniform URL that contains CGI arguments. Your application can use an HTTP stack of its choosing. In order to use the JSON interface:{color}
    * You must construct a properly formatted URL with all necessary CGI arguments.
    * You must send an HTTP referer header that accurately identifies your application.
    * You must process the JSON-encoded response.
    
    h3. Request format
    
    h4. {color:#003366}{*}URL base address{*}{color}
    
    The standard URLs for the IAM Identity Store People APIs varies based on exactly which API is invoked. &nbsp;The details are provided in documentation about each individual API.
    
    h4. URL arguments
    
    This section provides examples of the kinds of arguments that can be used with the People APIs
    
    The value of a CGI argument must always be properly escaped. This can be done via the functional equivalent of JavaScript's&nbsp;encodeURIComponent()&nbsp;method.
    
    h5. Required URL arguments
    
    The following table lists the required URL arguments.
    || *Argument* || *Example* || *Description* ||
    | key | key=your-key | This argument supplies the application's key. You can sign up for an API key <INSERT LINK HERE>. \\
    It must be a valid key associated with your application. The key is required for this API to implement quality of service rules for this API. If your application is making too many requests it will be throttled to ensure resources are not overloaded during times of peak usage. Also, by supplying a key we can identify and contact you should something go wrong with your application. |
    | v | v=1.0 | This argument supplies protocol version number. The only valid value at this point in time is&nbsp;1.0. |
    
    h5. Search URL arguments
    
    The following table lists the possible search query URL arguments. At least one argument should be provided to perform a search. If multiple search criteria are provided an *'AND'* search will be performed to match on all arguments.
    
    *Wildcard Searches*: Any argument may use a wildcard within the query value. You may use multiple wildcards in any position in the search criteria. See examples below.\*
    
    Example search arguments:
    
    {code:title=Search for anyone with last name of 'Bray'}/api/directory/search?sn=Bray&key=myKeyv&v=1.0
    Code Block
    title
    {code}
    
    {code:title=Search for anyone with first name of 'Curtis' and last name starting with 'B'
    }/api/directory/search?givenName=Curtis&sn=B*&key=myKeyv&v=1.0
    Code Block
    titleSearch for anyone with a displayName that starts with 'J' and ends with 'Jones'
    {code}
    
    {code:title=Search for anyone with a displayName that starts with 'J' and ends with 'Jones'}/api/directory/search?displayName=J*Jones&key=myKey&v=1.0
    Response format

    Each response follow this general format:

    Code Block
    langxml
    {code}
    
    
    h5. Response format
    
    Each response follow this general format:
    {code:lang=xml}
    {
      "responseData" : {
        "results" : []
      },
      "responseDetails" : null | string-on-error,
      "responseStatus" : 0 | error-code
    }
    {code}
    
    
    In the JSON fragment above, note
    that the responseData property contains a results array and an optional cursor.

    Trouble shooting

    If you encounter problems with your code:

  • Make sure your API key is valid.
  • Look for typos. Remember that JavaScript is a case-sensitive language.
  • Use a JavaScript debugger. In Firefox, you can use the JavaScript console or the Firebug. In IE, you can use the Microsoft Script Debugger.
  • If you need to examine the JSON string returned from the server, you can use JSON Lint to make a single, long string human readable.
  • Email middleware-api@ucdavis.edu with a description of your problem and a trace of the request and response.
     that the&nbsp;responseData&nbsp;property contains a&nbsp;results&nbsp;array and an optional&nbsp;cursor.
    
    h4.
    
    
    h2. Trouble shooting
    
    If you encounter problems with your code:
    * Make sure your API key is valid.
    * Look for typos. Remember that JavaScript is a case-sensitive language.
    * Use a JavaScript debugger. In Firefox, you can use the JavaScript console or the&nbsp;[Firebug|http://www.getfirebug.com/]. In IE, you can use the&nbsp;[Microsoft Script Debugger|http://msdn2.microsoft.com/en-us/library/ms532989.aspx].
    * If you need to examine the JSON string returned from the server, you can use&nbsp;[JSON Lint|http://www.jsonlint.com/]&nbsp;to make a single, long string human readable.
    * Email [mailto:middleware-api@ucdavis.edu] with a description of your problem and a trace of the request and response.