Versions Compared

Key

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


Online Directory API

Section


Column
width20%


Panel
borderColor#BF9900
bgColor#FFFFFF
titleBGColor#E5D699
borderStylesolid
titleIn this SectionborderStylesolid
Table of Contents
indent5px15px
stylenone



Column

Overview

These APIs provide a bulk load API for data that is published from the Online Directory system.

We may be deprecating this function soon (September 1, 2022).
If you need assistance with this APIs, please email middleware-api@ucdavis.edu.

Audience


Excerpt

This documentation is intended for developers who wish to perform a bulk download of the public data within the Online Directory 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.


Application requirements

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

During periods of peak usage, API requests may be throttled. 

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 Request
curl -i -H "Accept: application/json" https://iet-ws.ucdavis.edu/directory/load?key=myKey&v=1.0

This command performs a bulk load request (/directory/load). The response has a Content-Type of text/javascript.

Code Block
langxml
titleSample JSON Response
{
  "responseData" : {
    "results" :Ã? [
{
"checksum": "761156509",
"departmentNumber": "061419",
"eduPersonAffiliation" : "staff",
"cn": "Curtis L Bray",
"givenName": "Curtis",
"sn": "Bray",
"mail" : "clbray@ucdavis.edu",
"ou": "APPLICATION DEVELOPMENT & DATA ADMINISTRATION",
"postalAddress": "3820 Chiles Rd$Davis, CA 95618",
"telephoneNumber" : "+1 530 754 6199",
"l": "Davis",
"postalCode" : "95618",
"street": "3820 Chiles Rd",
"st": "CA",
"title": "Manager",
"displayName": "Curtis Bray"
},
{ .... }
 ],
    "cursor" : {
               "estimatedResultCount": "20102",
               "currentIndex": 0,
               "moreResultsUrl": "https://iet-ws-test.ucdavis.edu/ondir/load?start=500&key=myKey&v=1.0"
               }
  },
  "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 URL for the IET Middleware Online Directory Bulk Load API is:

https://iet-ws.ucdavis.edu/directory/load

URL arguments

This section describes the arguments that can be used for Bulk Load requests.

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.

Optional URL arguments

The following table lists the optional URL arguments.

Argument

Example

Description

start

start=500

This argument supplies the starting record index of the first search result. Each successful response contains a cursorobject (see below) which includes an array of pages. The start property for a page may be used as a valid value for this argument. For reference, a sample cursor object is shown below:

No Format
"cursor" : {
            "estimatedResultCount": "20102",
            "currentIndex": 0,
            "moreResultsUrl": "https://iet-ws.ucdavis.edu/api/load...."
            }


Response format

Each response follow this general format:

Code Block
langxml
{
  "responseData" : {
    "results" : [],
    "cursor" : {}
  },
  "responseDetails" : null | string-on-error,
  "responseStatus" : 0 | error-code
}

In the JSON fragment above, note that the responseData property contains a results array and an optional cursor.

Results array: guaranteed fields

The results array always contains the parameters listed in this section, even if the value is empty.

NOTE: All data returned from this API will be filtered to only return records that are not marked private or protected. Each person will have a single result returned that provides their primary listing information along with the first device/address data in that listing. These parameters are based on the LDAP attributes as defined by: Attributes for ou=People,dc=ucdavis,dc=edu.

Property

Description

checksum

Checksum for return recorded. Can be used to detect changed valued from when the record was previously retrieved.

ucdPersonUUID

Unique identifier for this result. This value can be used to correlate results between multiple Online Directory APIs.

mail

Mail (primary)

cn

Full name(s) of the form (as components are defined): First Last, Nick Last, First Middle Last

displayName

Name formatted per white pages rules

givenName

First name

sn

Last name

eduPersonNickname

Nickname, if defined

telephoneNumber

Telephone number (primary)

pager

Pager number (primary)

mobile

Mobile (primary)

postalAddress

Personal mailing address (primary)

street

Street (primary)

l

Locality/City (primary)

c

Country (primary)

postalCode

Zip Code (primary)

st

State (primary)

labeledURI

URL (primary)

ou

Department name (primary)

title

Title (primary)

cursor

Cursor is a property that is present once a search completes successfully. When present, the property specifies how an application can request additional search results for the current query term, the estimated result count, the current index, and the URL for a search results page. The following structure represents the cursor:

  • estimatedResultCount supplies the estimated number of results that bulk load contains.
  • currentIndex supplies the index of the first result record of the current set of results.
  • moreResultsUrl supplies a URL to obtain the next set of records. This is a convenience value that uses the currentIndex+<internal batch size> to execute the next bulk load. When this value is null you've reached the end of available results.

results[]

results[] contains an array of bulk load result objects, one for each result. Each time the API executes, this property is cleared, and each time a API completes, the array is populated. If there are no results to report, the .length property of this array will be set to 0. Therefore, results will never be null, and you can always safely check for results.length == 0.

The responseStatus property contains a value of 0 on success and a custom error status code on failure. If there is a failure, responseDetails contains a diagnostic string.

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.