Umlaut partial html API

Revision as of 16:53, 1 June 2009 by Wickr (Talk | contribs) (Reverted edits by 85.131.208.3 (Talk); changed back to last version by Wickr)

Revision as of 16:53, 1 June 2009 by Wickr (Talk | contribs) (Reverted edits by 85.131.208.3 (Talk); changed back to last version by Wickr)

The Umlaut partial HTML API is meant for when you want Umlaut to generate HTML, but you want to embed that HTML on an external page. The API will deliver sections of generated HTML, that you can include elsewhere.

If you plan to include it via javascript, you will likely find it even more convenient to use the [Umlaut partial html API javascript helper], saving you even more work. The javascript helper uses the API behind the scenes.

Accessing the API

Supplied via the resolve/partial_html_sections actions. Instead of accessing the ordinary resolver base URL, you replace "resolve?" in your query with "resolve/partial_html", eg http://umlaut.university.edu/resolve/partial_html? . You send the OpenURL context object the same as you would for an ordinary resolve action, in URL or POST XML, etc.

By default, the API returns XML. To return json instead, include:

&umlaut.response_format=json

To return jsonp, wrapped in a javascript procedure call:

&umlaut.response_format=jsonp&umlaut.jsonp=desiredJavascriptFunctionName

Response

<complete>

When accessing Umlaut over an API, it's important to realize that the initial response from Umlaut may not include all Umlaut information. Umlaut continues to run services in the background that can generate responses and enhance metadata. <complete> will contain 'true' or 'false' depending on whether background services are still executing. Further elements in the response provide information on what is still executing, and how to retrieve further information.

<in_progress>

This block will only be present when <complete> is 'false'. It provides information on completion status, and how to refresh the response for more information prepared in the background. For more information, see the documentation in Umlaut full API#<in_progress>, the block is the same here.

<html_section>

What you really want is contained in 0 or more html_section blocks. Each one contains some generated HTML, along with some metadata about it. The id attribute of <html_section> tells you which section it is. What sections exist is configured in Umlaut in the "partial_html_map" configuration param, which by default is set to the "bg_update_map" config params :divs key. To see the sections in a default Umlaut installation, see: environment.rb in svn, look for bg_update_map. The :divs key of the hash there is an array of hashes, each individual hash has a :div_id key that corresponds to the html_sections id in this api response. For Umlaut developers, the :partial key tells you what Rails partial is used to generate this section.

The sections and their contents can be customized by the Umlaut administrator by changing the partial_html_map config (and/or the bg_update_map config).

Inside an html_section in the response there is a bit of metadata for you:

<included_services>

What ServiceTypeValues are included in this html section. This specifies what type of data is in this block. For a list of possible ServiceTypeValues in a default Umlaut configuration, see service_type_values.yml in umlaut SVN.

<service_load_complete>

true or false. False if this html_section might change as more background services run, true if this html_section is completely finished.

<response_count>

How many Umlaut response objects were used to generate this block? Can be useful if you want to do something different with 0 (no content) vs. non-0 (content).

<html_content>

The actual html content. It is of course standardly XML-escaped in XML, or json-escaped in json.