API Hackery:
      Customizing Your Library’s
         Services Using APIs

   Nicholas Schiller    Presentation site: bit.ly/XqyzfM
WSU Vancouver Library   Test the app: bit.ly/WvqAR4
Online Northwest 2013   C o d e o n G it H u b : htt p s: //
  February 8, 2013      github.com/nnschiller/easy_api
     Corvallis, OR
Desired Outcomes:


You will be able to explain how APIs work.

You’ll leave with ideas on how APIs can help
your patrons.

You’ll leave energized to make things.
This Talk is Not:

A step-by-step tutorial or walkthrough.
(There will be gaps.)

A coding lesson. (My role there is student or
peer not instructor.)

A technical treatment of the subject.
APIs are:
Application Programming Interfaces
 Specifications and standards
   Keys to the silo

     How to ask a service for
     what you want.
APIs are about sharing
data.

Librarians are about
sharing information.

APIs and Librarians should
be friends.
APIs are a key part of
   library systems’
movement from closed
 “black-box” tools to
 truly open systems.
Examples:
Google Maps API

  With an authentication key and latitude &
  longitude coordinates, you can put a map
  on your page.

WorldCat Search API

Twitter APIs

  Instructions for capturing tweets and
  hashtags.
We’ll want a guide to lead us through this.
  For technology optimists:
   he will be our Beatrice.




              Our Beatrice
For technology pessimists
     he will be our Virgil.
Dr. Walter Bishop




Our guide for building wonderful
        things with APIs
I am
forming a
hypothesis.



               Would
                  you
               like to
              hear it?
The relative
                             difficulty* of
                 1/6
                             making library
                               tools with
                                 APIs.
 2/3                   1/6




the problem & solution       the code   the design
The caveats:
 *Two
      Relative Difficulty Levels*
    1. I made these ratios up. They don’t                1/6
    reflect my time invested.
                                            2/3                1/6
    2. What we don’t know how
      to do (yet) seems much harder, but
      we can learn & we can find help.

  “Pseudo-code is your friend” or follow
  Anne Lamott’s advice on first drafts.

    the problem & solution   the code             the design
Write code
Articulate your
                            using an API to
 problem and
  identify a
                   +         generate the
                            desired solution.
   solution.



                 Wrap the
             solution code in
      +           a user
             friendly format.
Articulate
   Information            API + scripting
                          language (PHP,
   Need, form      +     JavaScript, Ruby,
Boolean Queries,
 ID Appropriate         Python) + HTML 5
  Data Sources



            HTML 5, CSS 3 &
       +     jQuery Mobile
“Let me introduce you to test
                subject #6.”
Practical example of an
   API solving a real
    library problem.
 Our WorldCat Local discovery layer presents
 obstacles to students who are looking for
 ebooks.



 The ebooks facet doesn’t use the same
 definition of ebook that our students assume.
“We need her to
help us understand this skill.”
To Successfully find an
  eBook in our collection:
Type the following into our WorldCat discovery tool:

     kw:NASA +mt:ebk -mt:gnp
     -mt:cpb -mt:deg

       Also consider excluding material types
       upw, upc, cdc, dct
Don't you understand this is Greek
   to me? Except that I speak
 Greek. This is Aramaic to me. Not
the western dialect, I do speak it.
What we need is:

something to automatically do this for eBook
searches.

to get the user’s search query, add our
Boolean logic phrase to the query, get the
results and present them to the user.

the WorldCat Search API.
While we’re at it

Let’s format our tool for tablets and mobile
devices.

Let’s connect the user directly to the full
text right on their tablets and/or mobile
devices or whatever screen they prefer.

(I’m working on the assumption that eBooks
and tablets go together.)
Core Librarian
skills: information         API + scripting
                            language (PHP,
need articulation,    +   JavaScript, Ruby) +
 Boolean queries,
    data source                HTML 5
     expertise



               HTML 5, CSS 3 &
        +       jQuery Mobile
WorldCat Search API

Request a key. (Keys denote permission to
access the service.)

Submit your requests formatted in either
opensearch or SRU standards.

Specify how you want the data returned.
WorldCat Search API

Opensearch: from A9 www.opensearch.org

  basic structure, kw indexes only

  returns RSS or Atom

SRU: www.loc.gov/standards/sru/

  enables complex queries of multiple
  indexes

  returns XML or MARC
For Our Example
we can use both

  The WorldCat Search API can return
  formatted citations using opensearch.

  Opensearch only searches keyword
  indexes but our search requires the
  material type index.

  If we want to search the mt: index and
  get formatted citations, we’ll need to use
  opensearch with SRU formatting. The API
  allows this.
http://www.worldcat.org/webservices/
 catalog/search/worldcat/opensearch?
  q=srw.kw+any+%22biofuel%22+and
+srw.li+any+%22ws2%22+and+srw.mt
 +any+%22ebk%22+not+srw.mt+any+
%22gpb%22+not+srw.mt+any+%22cnp
    %22+not+srw.mt+any+%22deg
  %22&format=rss&cformat=chicago
  &wskey=[insert your API key here]
A friend from Washington State
invented these glasses in order to
   be able to see a URL’s aura.
http://www.worldcat.org/
    webservices/catalog/search/
 worldcat/opensearch?q=srw.kw+any
  +”biofuel”+and+srw.li+any+”ws2”
+and+srw.mt+any+”ebk”+not+srw.mt
    +any+”gpb”+not+srw.mt+any
   +”cnp”+not+srw.mt+any+”deg”
   &format=rss&cformat=chicago
 &wskey=[insert your API key here]
Let’s Celebrate, Because
 the Hard Part is Done.
API + scripting
language (PHP) +
    HTML 5
Excellent.
Let’s make some <?PHP ?>
Do You Remember?
Slide 17: “What we need is to get the user’s
search query, add our Boolean logic phrase
to the query, get the results and present
them to the user.”

Our code will do EXACTLY these three
things.

As a n00b coder, I was only able to succeed
by keeping a razor-sharp focus on exactly
these goals.
Audience Choice:



Look at the code

Look at the web app (beta)
Special Thanks to:

Jason Clark with Montana State University
Libraries

Bruce Washburn with OCLC Research



They shared their code under FreeBSD and
GNU open licenses, allowing me to borrow
freely.
HTML 5,
  CSS 3 &
jQuery Mobile
Either a green unicorn just raced
                   across the lab,




or I accidentally used jQuery
           Mobile.
jQuery Mobile automates:

    The buttons, pickers, & search inputs

    The theme and color scheme

    The behavior in diverse screens and browsers
Image Credits

John Noble / Walter Bishop / Walternate images are
from the Fox TV series Fringe and are used under fair
use as set forth in the Code of Best Practices for Fair
Use in Online Video. See especially #6 SIX: Quoting in
Order to Recombine Elements to Make a New Work
That Depends for its Meaning on (Often Unlikely)
Relationships Between the Elements.

The images from Dore’s engravings of Dante’s Divine
Comedy are in the public domain.
Demo the Web App (beta)
      bit.ly/WvqAR4

Code Repository on GitHub:
https://github.com/nnschiller/
           easy_api
Further Reading
OCLC Worldcat Search API

    http://www.oclc.org/developer/services/worldcat-
    search-api

    http://www.oclc.org/worldcatapi/default.htm

    http://www.oclc.org/us/en/support/documentation/
    firstsearch/z3950/z3950_databases/specs/
    materialtypes.htm

    http://www.oclc.org/developer/news/worldcat-search-
    api-tips-and-tricks
Further Reading
Opensearch

      http://www.opensearch.org/Home

      http://oclc.org/developer/documentation/worldcat-
      search-api/opensearch-responses

SRU

      http://www.loc.gov/standards/sru/

      http://www.worldcat.org/webservices/catalog/
      search/sru?wskey=[YOUR WCS API KEY IS
      REQUIRED]
Further Reading
Tutorials

       http://www.codecademy.com/courses/javascript-
       beginner-en-EID4t

       http://www.tizag.com/phpT/

       http://www.codecademy.com

Code

       http://www.worldcat.org/devnet/code/devnetDemos/
       trunk/webservices_php_libraries/
       wcapi_opensearch.php

       http://www.lib.montana.edu/~jason/files/worldcat-
       basic/code.txt
API Hackery:
      Customizing Your Library’s
         Services Using APIs

   Nicholas Schiller    Presentation site: bit.ly/XqyzfM
WSU Vancouver Library   Test the app: bit.ly/WvqAR4
Online Northwest 2013   C o d e o n G it H u b : htt p s: //
  February 8, 2013      github.com/nnschiller/easy_api
     Corvallis, OR

Walter api

  • 1.
    API Hackery: Customizing Your Library’s Services Using APIs Nicholas Schiller Presentation site: bit.ly/XqyzfM WSU Vancouver Library Test the app: bit.ly/WvqAR4 Online Northwest 2013 C o d e o n G it H u b : htt p s: // February 8, 2013 github.com/nnschiller/easy_api Corvallis, OR
  • 2.
    Desired Outcomes: You willbe able to explain how APIs work. You’ll leave with ideas on how APIs can help your patrons. You’ll leave energized to make things.
  • 3.
    This Talk isNot: A step-by-step tutorial or walkthrough. (There will be gaps.) A coding lesson. (My role there is student or peer not instructor.) A technical treatment of the subject.
  • 4.
    APIs are: Application ProgrammingInterfaces Specifications and standards Keys to the silo How to ask a service for what you want.
  • 5.
    APIs are aboutsharing data. Librarians are about sharing information. APIs and Librarians should be friends.
  • 6.
    APIs are akey part of library systems’ movement from closed “black-box” tools to truly open systems.
  • 7.
    Examples: Google Maps API With an authentication key and latitude & longitude coordinates, you can put a map on your page. WorldCat Search API Twitter APIs Instructions for capturing tweets and hashtags.
  • 8.
    We’ll want aguide to lead us through this. For technology optimists: he will be our Beatrice. Our Beatrice
  • 9.
    For technology pessimists he will be our Virgil.
  • 10.
    Dr. Walter Bishop Ourguide for building wonderful things with APIs
  • 11.
    I am forming a hypothesis. Would you like to hear it?
  • 12.
    The relative difficulty* of 1/6 making library tools with APIs. 2/3 1/6 the problem & solution the code the design
  • 13.
    The caveats: *Two Relative Difficulty Levels* 1. I made these ratios up. They don’t 1/6 reflect my time invested. 2/3 1/6 2. What we don’t know how to do (yet) seems much harder, but we can learn & we can find help. “Pseudo-code is your friend” or follow Anne Lamott’s advice on first drafts. the problem & solution the code the design
  • 14.
    Write code Articulate your using an API to problem and identify a + generate the desired solution. solution. Wrap the solution code in + a user friendly format.
  • 15.
    Articulate Information API + scripting language (PHP, Need, form + JavaScript, Ruby, Boolean Queries, ID Appropriate Python) + HTML 5 Data Sources HTML 5, CSS 3 & + jQuery Mobile
  • 16.
    “Let me introduceyou to test subject #6.”
  • 17.
    Practical example ofan API solving a real library problem. Our WorldCat Local discovery layer presents obstacles to students who are looking for ebooks. The ebooks facet doesn’t use the same definition of ebook that our students assume.
  • 19.
    “We need herto help us understand this skill.”
  • 20.
    To Successfully findan eBook in our collection: Type the following into our WorldCat discovery tool: kw:NASA +mt:ebk -mt:gnp -mt:cpb -mt:deg Also consider excluding material types upw, upc, cdc, dct
  • 21.
    Don't you understandthis is Greek to me? Except that I speak Greek. This is Aramaic to me. Not the western dialect, I do speak it.
  • 22.
    What we needis: something to automatically do this for eBook searches. to get the user’s search query, add our Boolean logic phrase to the query, get the results and present them to the user. the WorldCat Search API.
  • 23.
    While we’re atit Let’s format our tool for tablets and mobile devices. Let’s connect the user directly to the full text right on their tablets and/or mobile devices or whatever screen they prefer. (I’m working on the assumption that eBooks and tablets go together.)
  • 24.
    Core Librarian skills: information API + scripting language (PHP, need articulation, + JavaScript, Ruby) + Boolean queries, data source HTML 5 expertise HTML 5, CSS 3 & + jQuery Mobile
  • 25.
    WorldCat Search API Requesta key. (Keys denote permission to access the service.) Submit your requests formatted in either opensearch or SRU standards. Specify how you want the data returned.
  • 26.
    WorldCat Search API Opensearch:from A9 www.opensearch.org basic structure, kw indexes only returns RSS or Atom SRU: www.loc.gov/standards/sru/ enables complex queries of multiple indexes returns XML or MARC
  • 27.
    For Our Example wecan use both The WorldCat Search API can return formatted citations using opensearch. Opensearch only searches keyword indexes but our search requires the material type index. If we want to search the mt: index and get formatted citations, we’ll need to use opensearch with SRU formatting. The API allows this.
  • 28.
    http://www.worldcat.org/webservices/ catalog/search/worldcat/opensearch? q=srw.kw+any+%22biofuel%22+and +srw.li+any+%22ws2%22+and+srw.mt +any+%22ebk%22+not+srw.mt+any+ %22gpb%22+not+srw.mt+any+%22cnp %22+not+srw.mt+any+%22deg %22&format=rss&cformat=chicago &wskey=[insert your API key here]
  • 29.
    A friend fromWashington State invented these glasses in order to be able to see a URL’s aura.
  • 30.
    http://www.worldcat.org/ webservices/catalog/search/ worldcat/opensearch?q=srw.kw+any +”biofuel”+and+srw.li+any+”ws2” +and+srw.mt+any+”ebk”+not+srw.mt +any+”gpb”+not+srw.mt+any +”cnp”+not+srw.mt+any+”deg” &format=rss&cformat=chicago &wskey=[insert your API key here]
  • 31.
    Let’s Celebrate, Because the Hard Part is Done.
  • 32.
  • 33.
  • 34.
    Do You Remember? Slide17: “What we need is to get the user’s search query, add our Boolean logic phrase to the query, get the results and present them to the user.” Our code will do EXACTLY these three things. As a n00b coder, I was only able to succeed by keeping a razor-sharp focus on exactly these goals.
  • 35.
    Audience Choice: Look atthe code Look at the web app (beta)
  • 39.
    Special Thanks to: JasonClark with Montana State University Libraries Bruce Washburn with OCLC Research They shared their code under FreeBSD and GNU open licenses, allowing me to borrow freely.
  • 40.
    HTML 5, CSS 3 & jQuery Mobile
  • 41.
    Either a greenunicorn just raced across the lab, or I accidentally used jQuery Mobile.
  • 42.
    jQuery Mobile automates: The buttons, pickers, & search inputs The theme and color scheme The behavior in diverse screens and browsers
  • 43.
    Image Credits John Noble/ Walter Bishop / Walternate images are from the Fox TV series Fringe and are used under fair use as set forth in the Code of Best Practices for Fair Use in Online Video. See especially #6 SIX: Quoting in Order to Recombine Elements to Make a New Work That Depends for its Meaning on (Often Unlikely) Relationships Between the Elements. The images from Dore’s engravings of Dante’s Divine Comedy are in the public domain.
  • 44.
    Demo the WebApp (beta) bit.ly/WvqAR4 Code Repository on GitHub: https://github.com/nnschiller/ easy_api
  • 45.
    Further Reading OCLC WorldcatSearch API http://www.oclc.org/developer/services/worldcat- search-api http://www.oclc.org/worldcatapi/default.htm http://www.oclc.org/us/en/support/documentation/ firstsearch/z3950/z3950_databases/specs/ materialtypes.htm http://www.oclc.org/developer/news/worldcat-search- api-tips-and-tricks
  • 46.
    Further Reading Opensearch http://www.opensearch.org/Home http://oclc.org/developer/documentation/worldcat- search-api/opensearch-responses SRU http://www.loc.gov/standards/sru/ http://www.worldcat.org/webservices/catalog/ search/sru?wskey=[YOUR WCS API KEY IS REQUIRED]
  • 47.
    Further Reading Tutorials http://www.codecademy.com/courses/javascript- beginner-en-EID4t http://www.tizag.com/phpT/ http://www.codecademy.com Code http://www.worldcat.org/devnet/code/devnetDemos/ trunk/webservices_php_libraries/ wcapi_opensearch.php http://www.lib.montana.edu/~jason/files/worldcat- basic/code.txt
  • 48.
    API Hackery: Customizing Your Library’s Services Using APIs Nicholas Schiller Presentation site: bit.ly/XqyzfM WSU Vancouver Library Test the app: bit.ly/WvqAR4 Online Northwest 2013 C o d e o n G it H u b : htt p s: // February 8, 2013 github.com/nnschiller/easy_api Corvallis, OR