SlideShare a Scribd company logo
1 of 58
Download to read offline
Diving and digital data
For example: Fotografie
Name all the Fish....
Talk about accomadations....
and the dangers for you and your data...
Clouds
Google Data APIs
Frank Mantek
β€œThe benefit [of GData] is that you'd have a single
 API that could be used to query, update, and index
 structured data on the web--anywhere on the web.
 It's a pretty powerful vision and something I didn't
 expect to see for a couple more
 years.”



Jeremy Zawodny, Yahoo
Contrast this with the API efforts on Yahoo! Developer Network or
Windows Live Dev which are an inconsistent glop of incompatible
RESTful protocols, SOAP APIs and XML-RPC methods all under the
same roof. In the Google case, an app that can read and write data
to Blogger can also do so to Google Calendar or Picasa Web Albums
with minimal changes. This is not the case when using APIs provided
by two Yahoo! services (e.g . Flickr and del.icio.us) or two Windows
Live services (e.g. Live Search and Windows Live Spaces) which
use completely different protocols, object models and authentication
mechanisms even though provided by the same vendor.quot;

 Dare Obasanjo, Architect, Microsoft
Google’s APIs

     β€’ Google Offers Many APIs
       – AJAX APIs – Presentation Oriented APIs
          β€’ Maps, Search, Feeds
       – Google Data APIs – Full Fidelity Data APIs
          β€’ Calendar, Blogger, Base, ...
       – AdWords API – SOAP based RPC API
       – Gadgets API – Portable JavaScript β€œApplets”
       – Checkout API – ReST based API
       – Desktop API – Extended Search
       – ... and many more ...


                                                       QCon
11
                                                       2008
Building Web Services the REST way




                                     QCon
                                     2008
Building Web Services the REST way

β€’ SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)




                                                      QCon
                                                      2008
Building Web Services the REST way

β€’ SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)
β€’ REST:
  – Common actions (HTTP Get, Post, Put, Delete)
  – Operate on whole resources (XML documents)
  – Uniform resource names and links (URIs)




                                                      QCon
                                                      2008
Building Web Services the REST way

β€’ SOAP:
  – Arbitrary actions (verbs)
  – Arbitrarily data payloads
  – Complex service description and behavior (WSDL)
β€’ REST:
  – Common actions (HTTP Get, Post, Put, Delete)
  – Operate on whole resources (XML documents)
  – Uniform resource names and links (URIs)
β€’ Why REST over SOAP?
  – It’s how the web works! (stateless, cachable, scalable)
  – It’s easy on the programmer
                                                              QCon
                                                              2008
Elements of the Data API

                  β€’ Simple Format
        Atom
                     – Atom Syndication
     Publishing          Format
      Protocol    β€’ Simple Protocol
                     – HTTP

                                          Google
                  β€’ Google Extensions
                                           Data
                     –   Data Model
                                           APIs
                     –   Query
                     –   Concurrency
                     –   Authentication

                                               QCon
13
                                               2008
Data Model: Standard Atom

     <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;>
         <category scheme=quot;http://schemas.google.com/g/2005#kindquot;
                   term=quot;http://schemas.google.com/g/2005#eventquot;/>
         <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id>
         <published>2005-01-18T21:00:00Z</published>
         <updated>2006-01-01T00:00:00Z</updated>
         <title>Discuss BazMat API</title>
         <content>We will discuss integrating GData with BazMat.</content>
         <author>
              <name>Jo March</name>
         </author>
         <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'>
              <gd:reminder minutes='15'/>
         </gd:when>
         <gd:where valueString='Building 41, Room X'/>
         <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/>
         <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/>
     </entry>


                                                                                      QCon
14
                                                                                      2008
Data Model: Google Kinds and Extensions

     <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;>
         <category scheme=quot;http://schemas.google.com/g/2005#kindquot;
                   term=quot;http://schemas.google.com/g/2005#eventquot;/>
         <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id>
         <published>2005-01-18T21:00:00Z</published>
         <updated>2006-01-01T00:00:00Z</updated>
         <title>Discuss BazMat API</title>
         <content>We will discuss integrating GData with BazMat.</content>
         <author>
              <name>Jo March</name>
         </author>
         <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'>
              <gd:reminder minutes='15'/>
         </gd:when>
         <gd:where valueString='Building 41, Room X'/>
         <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/>
         <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/>
     </entry>


                                                                                      QCon
15
                                                                                      2008
Querying a Feed

β€’ Full Text Search
   – http://www.example.com/feeds/friends?q=John
β€’ Categories (Tags)
   – http://www.example.com/feeds/friends/-/work|play
β€’ Update Time
  – http://www.example.com/feeds/friends?
     updated-min=2005-08-09T10:57:00-08:00
β€’ Custom ...
  – eg. spreadsheets supports min-row, max-row, ...
β€’ Output Format
  – http://www.example.com/feeds/friends?alt=json

                                                        QCon
                                                        2008
Optimistic Concurrency

     GET /feeds/entry1

     200 OK
     <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version1/quot;/>



     PUT /feeds/entry1/version1/

     200 OK
     <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version2/quot;/>



     DELETE /feeds/entry1/version1/

     409 CONFLICT


                                                                               QCon
17
                                                                               2008
Security and Authentication

     β€’ Authentication for Desktop Apps
        – Users authenticates to Google Authentication Service
        – Google returns Auth Token to Application
     β€’ Authentication for Web Apps
        – Web Application redirects to Google Auth Service (1)
        – Login to Google, redirect back to app with Auth Token (2)
        – Web Application uses Token to proxy GData (3)
        – Password remains secure

                                          (1b)                 Accounts
                  (2a)                                 Authentication
         Client
        Browser
                  (1a)
                                                               Calendar
                                Web App          (3)
                                                         data API
                         (2b)
                                                                          QCon
18
                                                                          2008
Atom Publishing Everywhere?

     β€’   Google Apps data API
     β€’   Google Base data API
     β€’   Blogger data API
     β€’   Google Calendar data API
     β€’   Google Code Search data API
     β€’   Google Notebook data API
     β€’   Picasa Web Albums data API
     β€’   Google Spreadsheets data API
     β€’   Google Doclist data API
     β€’   YouTube data API
     β€’   ... and the list is growing ...
                                           QCon
19
                                           2008
Developer Support

β€’ Open Source Client Libraries
                        – .NET
   – Java
                        – Python
   – PHP
                        – JSON (JavaScript)
   – Objective C
β€’ Contributed Client Libraries
   – Ruby               – Perl              – Lisp
β€’ Documentation
   – Developer Guides
   – Knowledge Base
β€’ Active Developer Community (Google Groups)
   – Google Data API Group, ...
   – Google Groups Wiki ...

                                                     QCon
                                                     2008
Google Apps data API

     β€’ Functionality
       – Programmatically enable access to these Google Apps
          applications
       – Create, retrieve, update and delete user accounts,
          nicknames and email lists.
     β€’ Supported Client Libraries
       – Basic HTTP
       – Java
       – .NET




                                                               QCon
21
                                                               2008
Google Base data API

     β€’ Functionality
       – Query Google Base data to create applications and
           mashups.
       – Input and manage Google Base items programmatically.
     β€’ Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python



                                                                QCon
22
                                                                2008
Blogger

     β€’ Functionality
       – Create new blog posts, edit or delete existing posts, and
           query for posts that match particular criteria.
     β€’ Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C




                                                                     QCon
23
                                                                     2008
Google Calendar

     β€’ Functionality
       – Create new events, edit or delete existing events, and query
           for events that match particular criteria.
     β€’ Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C




                                                                  QCon
24
                                                                  2008
Google Code Search

     β€’ Functionality
       – Read Only - Query for public code snippets that match
           particular criteria.
     β€’ Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   PHP
       –   Python
       –   Objective C



                                                                 QCon
25
                                                                 2008
Picasa Web Albums

     β€’ Functionality
       – Request a list of a user's albums, photos, comments, or
          tags, edit or delete content in an existing entry, and query
          the content in an existing entry
     β€’ Supported Client Libraries
       – Basic HTTP
       – Java
       – .NET support soon




                                                                         QCon
26
                                                                         2008
Google Spreadsheets

     β€’ Functionality
       – Request a list of a user's spreadsheets, edit or delete
           content in an existing Spreadsheets worksheet, and query
           the content in an existing Spreadsheets worksheet
     β€’ Supported Client Libraries
       –   Basic HTTP
       –   Java
       –   .NET
       –   Python




                                                                   QCon
27
                                                                   2008
What Some Developers are Doing

                      Ambient Clock
                       (Calendar)
                                      Phixr Online
                                      Photo Editor
                                      (PicasaWeb)




 Timesheets with
Google Office Tools
 (Spreadsheets,
    Calendar)




                                                     QCon
                                                     2008
Spanning Sync (www.spanningsync.com)

     β€’ two way synchronization between iCal and Google
      Calendar
     β€’ Client/Server architecture, all GData operations happen on
      the server
     β€’ Straight HTTP calls using PHP
     β€’ around 6M GData API calls per day




                                                              QCon
29
                                                              2008
Gumiyo (www.gumiyo.com)

     β€’ Buyer/Seller platform using Google Base data api
     β€’ Allows creation of ads completely on your mobile device
      (take picture, send MMS to your account)
     β€’ Searching/buying on the phone
     β€’ Rule based alert system that sends real time
      notifications to your phone




                                                             QCon
30
                                                             2008
Bloghud (www.bloghud.com)

     β€’ This is a Second Life β€œHeads Up” device (900 Linden for
      the Pro Version)
     β€’ It allows you to post to your blog from inside the virtual
      world, using Google Authentication for Web Apps
     β€’ /9 β€œyour message” posts or drag text based notecards on
      the Hud




                                                                    QCon
31
                                                                    2008
Choosing REST over SOAP

β€’ Technologies of REST are well understood
  β€’ HTTP, URIs, XML, Atom
β€’ Four actions are sufficient
  β€’ most of the time (90% solution)
β€’ Developers like it
  β€’ Every API behaves the same
β€’ REST was a good choice




                                             QCon
                                             2008
Is REST as flexible as SOAP?

β€’ Some Operations are not obvious
  – eg. transactions
  – eg. send notification with reply

β€’ Be creative
  β€’ notifications as side effects of update
  β€’ drop box feeds (insert only)
  β€’ virtually infinite feeds (get & update only)


β€’ REST is sufficient, but you may have to be creative

                                                        QCon
                                                        2008
Using the Atom Publishing Protocol ...




                                              QCon
34
                                              2008
Using the Atom Publishing Protocol ...

     β€’ Good REST based design




                                              QCon
34
                                              2008
Using the Atom Publishing Protocol ...

     β€’ Good REST based design
     β€’ Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue




                                                   QCon
34
                                                   2008
Using the Atom Publishing Protocol ...

     β€’ Good REST based design
     β€’ Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue
     β€’ Missing Authentication:
       – Solution: Google Auth
       – More secure than Basic Auth, slowed integration




                                                           QCon
34
                                                           2008
Using the Atom Publishing Protocol ...

     β€’ Good REST based design
     β€’ Missing Query:
       – Solution: query parameters
       – Not always sufficient ... an open issue
     β€’ Missing Authentication:
        – Solution: Google Auth
        – More secure than Basic Auth, slowed integration
     β€’ Concurrent Operations
        – Solution: Optimistic Concurrency via Edit URIs
        – We should have used strong eTags

                                                            QCon
34
                                                            2008
Extending the Atom Publishing Protocol ...

     β€’ Engineers care about efficiency

     β€’ Forced Read-Modify-Write
       – Solution: URIs based on the data (ACL)

     β€’ Batch Processing
       – Solution: GData batch extension

     β€’ Incremental Changes / Updates
       – an open issue ...


                                                  QCon
35
                                                  2008
Using Atom Data Format ...




                                  QCon
36
                                  2008
Using Atom Data Format ...

     β€’ Originally designed for blogs not data




                                                QCon
36
                                                2008
Using Atom Data Format ...

     β€’ Originally designed for blogs not data

     β€’ Drawbacks
       – syntax constraints (atom:content, atom:updated)




                                                           QCon
36
                                                           2008
Using Atom Data Format ...

     β€’ Originally designed for blogs not data

     β€’ Drawbacks
       – syntax constraints (atom:content, atom:updated)

     β€’ Benefits
       –   standardized (IETF)
       –   extensible
       –   useful fields (atom:id, atom:updated)
       –   can use a feed reader (cool!)




                                                           QCon
36
                                                           2008
Using Atom Data Format ...

     β€’ Originally designed for blogs not data

     β€’ Drawbacks
       – syntax constraints (atom:content, atom:updated)

     β€’ Benefits
       –   standardized (IETF)
       –   extensible
       –   useful fields (atom:id, atom:updated)
       –   can use a feed reader (cool!)


     β€’ Overall, a very good choice

                                                           QCon
36
                                                           2008
Modeling Data in Atom ...




                                 QCon
37
                                 2008
Modeling Data in Atom ...

     β€’ How to indicate extensions / semantics?
       – Solution: atom:category URI to indicate β€œkind”
       – Should have been human readable string




                                                          QCon
37
                                                          2008
Modeling Data in Atom ...

     β€’ How to indicate extensions / semantics?
       – Solution: atom:category URI to indicate β€œkind”
       – Should have been human readable string

     β€’ How to indicate related feeds and entries?
       – Solutions: ...
          β€’ link@rel, gd:feedLink, gd:entryLink, content@href
       – No clear standard, try to be consistent


                                                                QCon
37
                                                                2008
Designing New Data Formats ...




                                      QCon
38
                                      2008
Designing New Data Formats ...

     β€’ The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace




                                                QCon
38
                                                2008
Designing New Data Formats ...

     β€’ The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace




                                                QCon
38
                                                2008
Designing New Data Formats ...

     β€’ The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace

     β€’ Our Experience:
       – Almost every Google API has extended it
       – Used only by Google APIs (so far)




                                                   QCon
38
                                                   2008
Designing New Data Formats ...

     β€’ The Idea: GD-namespace
       – Create reusable extensions and kinds
       – Manage extensions in one namespace

     β€’ Our Experience:
       – Almost every Google API has extended it
       – Used only by Google APIs (so far)

     β€’ Alternatives:
       – Reuse existing XML schemas (GeoRSS, MediaRSS)
       – Create an ecology of β€˜kinds’ (GData ACL)

                                                         QCon
38
                                                         2008
Care for your Developers

β€’ Protocol Centric & Language Agnostic

β€’ Open your Code

β€’ Give Fair Warnings of Changes

β€’ Meet your Developers




                                         QCon
                                         2008
Do you feel lucky?

     β€’ Questions, comments?




                              QCon
40
                              2008
Google G Data Reading And Writing Data On The Web 1

More Related Content

What's hot

GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademyMarcinStachniuk
Β 
Vaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsVaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsPeter Lehto
Β 
Vaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkVaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkPeter Lehto
Β 
Techlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinTechlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinPeter Lehto
Β 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIPeter Lehto
Β 
Think jQuery
Think jQueryThink jQuery
Think jQueryYing Zhang
Β 
Building impressive layout systems with vaadin
Building impressive layout systems with vaadinBuilding impressive layout systems with vaadin
Building impressive layout systems with vaadinPeter Lehto
Β 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Jonas FollesΓΈ
Β 
Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)jcompagner
Β 
Vaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationVaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationPeter Lehto
Β 
Binding business data to vaadin components
Binding business data to vaadin componentsBinding business data to vaadin components
Binding business data to vaadin componentsPeter Lehto
Β 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Startedguest1af57e
Β 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Searchindeedeng
Β 
Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...David GΓ³mez GarcΓ­a
Β 
Vaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderVaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderPeter Lehto
Β 
Vaadin with Java EE 7
Vaadin with Java EE 7Vaadin with Java EE 7
Vaadin with Java EE 7Peter Lehto
Β 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web FrameworkLuther Baker
Β 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegapyangdj
Β 

What's hot (19)

GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - PiΔ™kne API w Twojej Aplikacji - KrakowGraphAcademy
Β 
Vaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web ComponentsVaadin DevDay 2017 - Web Components
Vaadin DevDay 2017 - Web Components
Β 
Vaadin 8 with Spring Framework
Vaadin 8 with Spring FrameworkVaadin 8 with Spring Framework
Vaadin 8 with Spring Framework
Β 
Techlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with VaadinTechlunch - Dependency Injection with Vaadin
Techlunch - Dependency Injection with Vaadin
Β 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UI
Β 
Think jQuery
Think jQueryThink jQuery
Think jQuery
Β 
Building impressive layout systems with vaadin
Building impressive layout systems with vaadinBuilding impressive layout systems with vaadin
Building impressive layout systems with vaadin
Β 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
Β 
Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)Wicket Next (1.4/1.5)
Wicket Next (1.4/1.5)
Β 
Vaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfigurationVaadin 8 with Spring Frameworks AutoConfiguration
Vaadin 8 with Spring Frameworks AutoConfiguration
Β 
Binding business data to vaadin components
Binding business data to vaadin componentsBinding business data to vaadin components
Binding business data to vaadin components
Β 
Data binding
Data bindingData binding
Data binding
Β 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
Β 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search
Β 
Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...Building modular monoliths that could scale to microservices (only if they ne...
Building modular monoliths that could scale to microservices (only if they ne...
Β 
Vaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with BinderVaadin 8 - Data Binding with Binder
Vaadin 8 - Data Binding with Binder
Β 
Vaadin with Java EE 7
Vaadin with Java EE 7Vaadin with Java EE 7
Vaadin with Java EE 7
Β 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
Β 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
Β 

Similar to Google G Data Reading And Writing Data On The Web 1

Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Datadeimos
Β 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsChris Schalk
Β 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick Chanezon
Β 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
Β 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developerslisab517
Β 
Using the Google AJAX APIs
Using the Google AJAX APIsUsing the Google AJAX APIs
Using the Google AJAX APIsChris Schalk
Β 
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsAdvanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsGoogleTecTalks
Β 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munichdion
Β 
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryCodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryMΓ‘rton Kodok
Β 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standardWonsuk Lee
Β 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principleelliando dias
Β 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008Association Paris-Web
Β 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea OverviewChris Schalk
Β 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformDidier Girard
Β 
Web 2.0 And Ajax
Web 2.0 And AjaxWeb 2.0 And Ajax
Web 2.0 And Ajaxelliando dias
Β 
Zembly Programming Language
Zembly Programming LanguageZembly Programming Language
Zembly Programming Languagezembly
Β 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009Christopher Judd
Β 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Androidsullis
Β 
Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Romit Mehta
Β 
Dataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDeepak Chandramouli
Β 

Similar to Google G Data Reading And Writing Data On The Web 1 (20)

Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
Β 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your Applications
Β 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
Β 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
Β 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developers
Β 
Using the Google AJAX APIs
Using the Google AJAX APIsUsing the Google AJAX APIs
Using the Google AJAX APIs
Β 
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap IsAdvanced Gadget And Ui Development Using Googles Ajax Ap Is
Advanced Gadget And Ui Development Using Googles Ajax Ap Is
Β 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
Β 
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQueryCodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
CodeCamp Iasi - Creating serverless data analytics system on GCP using BigQuery
Β 
The current status of html5 technology and standard
The current status of html5 technology and standardThe current status of html5 technology and standard
The current status of html5 technology and standard
Β 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principle
Β 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
Β 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
Β 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
Β 
Web 2.0 And Ajax
Web 2.0 And AjaxWeb 2.0 And Ajax
Web 2.0 And Ajax
Β 
Zembly Programming Language
Zembly Programming LanguageZembly Programming Language
Zembly Programming Language
Β 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
Β 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Android
Β 
Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018Gimel at Dataworks Summit San Jose 2018
Gimel at Dataworks Summit San Jose 2018
Β 
Dataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platformDataworks | 2018-06-20 | Gimel data platform
Dataworks | 2018-06-20 | Gimel data platform
Β 

More from QConLondon2008

J Ruby Power On The Jvm
J Ruby Power On The JvmJ Ruby Power On The Jvm
J Ruby Power On The JvmQConLondon2008
Β 
Market Risk System Bnp Paribas
Market Risk System Bnp ParibasMarket Risk System Bnp Paribas
Market Risk System Bnp ParibasQConLondon2008
Β 
A Tale Of Two Systems
A Tale Of Two SystemsA Tale Of Two Systems
A Tale Of Two SystemsQConLondon2008
Β 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebQConLondon2008
Β 
14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns ConcreteQConLondon2008
Β 
The Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryThe Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryQConLondon2008
Β 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
Β 
Managers In Scrum
Managers In ScrumManagers In Scrum
Managers In ScrumQConLondon2008
Β 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And SerendipityQConLondon2008
Β 

More from QConLondon2008 (10)

J Ruby Power On The Jvm
J Ruby Power On The JvmJ Ruby Power On The Jvm
J Ruby Power On The Jvm
Β 
Agile Mashups
Agile MashupsAgile Mashups
Agile Mashups
Β 
Market Risk System Bnp Paribas
Market Risk System Bnp ParibasMarket Risk System Bnp Paribas
Market Risk System Bnp Paribas
Β 
A Tale Of Two Systems
A Tale Of Two SystemsA Tale Of Two Systems
A Tale Of Two Systems
Β 
Google G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The WebGoogle G Data Reading And Writing Data On The Web
Google G Data Reading And Writing Data On The Web
Β 
14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete14147503 Intentions Interfaces Making Patterns Concrete
14147503 Intentions Interfaces Making Patterns Concrete
Β 
The Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J QueryThe Dom Scripting Toolkit J Query
The Dom Scripting Toolkit J Query
Β 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
Β 
Managers In Scrum
Managers In ScrumManagers In Scrum
Managers In Scrum
Β 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And Serendipity
Β 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
Β 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Β 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
Β 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
Β 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
Β 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Β 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Β 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
Β 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
Β 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
Β 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
Β 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
Β 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Β 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Β 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Β 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
Β 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
Β 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Β 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Β 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
Β 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Β 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Β 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Β 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Β 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Β 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Β 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Β 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Β 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Β 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Β 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Β 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Β 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Β 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Β 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Β 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Β 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Β 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Β 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Β 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
Β 

Google G Data Reading And Writing Data On The Web 1

  • 1.
  • 4. Name all the Fish....
  • 6. and the dangers for you and your data...
  • 9. β€œThe benefit [of GData] is that you'd have a single API that could be used to query, update, and index structured data on the web--anywhere on the web. It's a pretty powerful vision and something I didn't expect to see for a couple more years.” Jeremy Zawodny, Yahoo
  • 10. Contrast this with the API efforts on Yahoo! Developer Network or Windows Live Dev which are an inconsistent glop of incompatible RESTful protocols, SOAP APIs and XML-RPC methods all under the same roof. In the Google case, an app that can read and write data to Blogger can also do so to Google Calendar or Picasa Web Albums with minimal changes. This is not the case when using APIs provided by two Yahoo! services (e.g . Flickr and del.icio.us) or two Windows Live services (e.g. Live Search and Windows Live Spaces) which use completely different protocols, object models and authentication mechanisms even though provided by the same vendor.quot; Dare Obasanjo, Architect, Microsoft
  • 11. Google’s APIs β€’ Google Offers Many APIs – AJAX APIs – Presentation Oriented APIs β€’ Maps, Search, Feeds – Google Data APIs – Full Fidelity Data APIs β€’ Calendar, Blogger, Base, ... – AdWords API – SOAP based RPC API – Gadgets API – Portable JavaScript β€œApplets” – Checkout API – ReST based API – Desktop API – Extended Search – ... and many more ... QCon 11 2008
  • 12. Building Web Services the REST way QCon 2008
  • 13. Building Web Services the REST way β€’ SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) QCon 2008
  • 14. Building Web Services the REST way β€’ SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) β€’ REST: – Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs) QCon 2008
  • 15. Building Web Services the REST way β€’ SOAP: – Arbitrary actions (verbs) – Arbitrarily data payloads – Complex service description and behavior (WSDL) β€’ REST: – Common actions (HTTP Get, Post, Put, Delete) – Operate on whole resources (XML documents) – Uniform resource names and links (URIs) β€’ Why REST over SOAP? – It’s how the web works! (stateless, cachable, scalable) – It’s easy on the programmer QCon 2008
  • 16. Elements of the Data API β€’ Simple Format Atom – Atom Syndication Publishing Format Protocol β€’ Simple Protocol – HTTP Google β€’ Google Extensions Data – Data Model APIs – Query – Concurrency – Authentication QCon 13 2008
  • 17. Data Model: Standard Atom <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;> <category scheme=quot;http://schemas.google.com/g/2005#kindquot; term=quot;http://schemas.google.com/g/2005#eventquot;/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/> <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/> </entry> QCon 14 2008
  • 18. Data Model: Google Kinds and Extensions <entry xmlns:gd=quot;http://schemas.google.com/g/2005quot;> <category scheme=quot;http://schemas.google.com/g/2005#kindquot; term=quot;http://schemas.google.com/g/2005#eventquot;/> <id>http://mycal.example.com/feeds/jo/home/full/e1a2af0</id> <published>2005-01-18T21:00:00Z</published> <updated>2006-01-01T00:00:00Z</updated> <title>Discuss BazMat API</title> <content>We will discuss integrating GData with BazMat.</content> <author> <name>Jo March</name> </author> <gd:when startTime='2005-01-18T21:00:00Z' endTime='2005-01-18T22:00:00Z'> <gd:reminder minutes='15'/> </gd:when> <gd:where valueString='Building 41, Room X'/> <gd:eventStatus value=quot;http://schemas.google.com/g/2005#event.confirmedquot;/> <gd:visibility value=quot;http://schemas.google.com/g/2005#event.publicquot;/> </entry> QCon 15 2008
  • 19. Querying a Feed β€’ Full Text Search – http://www.example.com/feeds/friends?q=John β€’ Categories (Tags) – http://www.example.com/feeds/friends/-/work|play β€’ Update Time – http://www.example.com/feeds/friends? updated-min=2005-08-09T10:57:00-08:00 β€’ Custom ... – eg. spreadsheets supports min-row, max-row, ... β€’ Output Format – http://www.example.com/feeds/friends?alt=json QCon 2008
  • 20. Optimistic Concurrency GET /feeds/entry1 200 OK <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version1/quot;/> PUT /feeds/entry1/version1/ 200 OK <link rel=quot;editquot; href=quot;http://www.example.com/feeds/entry1/version2/quot;/> DELETE /feeds/entry1/version1/ 409 CONFLICT QCon 17 2008
  • 21. Security and Authentication β€’ Authentication for Desktop Apps – Users authenticates to Google Authentication Service – Google returns Auth Token to Application β€’ Authentication for Web Apps – Web Application redirects to Google Auth Service (1) – Login to Google, redirect back to app with Auth Token (2) – Web Application uses Token to proxy GData (3) – Password remains secure (1b) Accounts (2a) Authentication Client Browser (1a) Calendar Web App (3) data API (2b) QCon 18 2008
  • 22. Atom Publishing Everywhere? β€’ Google Apps data API β€’ Google Base data API β€’ Blogger data API β€’ Google Calendar data API β€’ Google Code Search data API β€’ Google Notebook data API β€’ Picasa Web Albums data API β€’ Google Spreadsheets data API β€’ Google Doclist data API β€’ YouTube data API β€’ ... and the list is growing ... QCon 19 2008
  • 23. Developer Support β€’ Open Source Client Libraries – .NET – Java – Python – PHP – JSON (JavaScript) – Objective C β€’ Contributed Client Libraries – Ruby – Perl – Lisp β€’ Documentation – Developer Guides – Knowledge Base β€’ Active Developer Community (Google Groups) – Google Data API Group, ... – Google Groups Wiki ... QCon 2008
  • 24. Google Apps data API β€’ Functionality – Programmatically enable access to these Google Apps applications – Create, retrieve, update and delete user accounts, nicknames and email lists. β€’ Supported Client Libraries – Basic HTTP – Java – .NET QCon 21 2008
  • 25. Google Base data API β€’ Functionality – Query Google Base data to create applications and mashups. – Input and manage Google Base items programmatically. β€’ Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python QCon 22 2008
  • 26. Blogger β€’ Functionality – Create new blog posts, edit or delete existing posts, and query for posts that match particular criteria. β€’ Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 23 2008
  • 27. Google Calendar β€’ Functionality – Create new events, edit or delete existing events, and query for events that match particular criteria. β€’ Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 24 2008
  • 28. Google Code Search β€’ Functionality – Read Only - Query for public code snippets that match particular criteria. β€’ Supported Client Libraries – Basic HTTP – Java – .NET – PHP – Python – Objective C QCon 25 2008
  • 29. Picasa Web Albums β€’ Functionality – Request a list of a user's albums, photos, comments, or tags, edit or delete content in an existing entry, and query the content in an existing entry β€’ Supported Client Libraries – Basic HTTP – Java – .NET support soon QCon 26 2008
  • 30. Google Spreadsheets β€’ Functionality – Request a list of a user's spreadsheets, edit or delete content in an existing Spreadsheets worksheet, and query the content in an existing Spreadsheets worksheet β€’ Supported Client Libraries – Basic HTTP – Java – .NET – Python QCon 27 2008
  • 31. What Some Developers are Doing Ambient Clock (Calendar) Phixr Online Photo Editor (PicasaWeb) Timesheets with Google Office Tools (Spreadsheets, Calendar) QCon 2008
  • 32. Spanning Sync (www.spanningsync.com) β€’ two way synchronization between iCal and Google Calendar β€’ Client/Server architecture, all GData operations happen on the server β€’ Straight HTTP calls using PHP β€’ around 6M GData API calls per day QCon 29 2008
  • 33. Gumiyo (www.gumiyo.com) β€’ Buyer/Seller platform using Google Base data api β€’ Allows creation of ads completely on your mobile device (take picture, send MMS to your account) β€’ Searching/buying on the phone β€’ Rule based alert system that sends real time notifications to your phone QCon 30 2008
  • 34. Bloghud (www.bloghud.com) β€’ This is a Second Life β€œHeads Up” device (900 Linden for the Pro Version) β€’ It allows you to post to your blog from inside the virtual world, using Google Authentication for Web Apps β€’ /9 β€œyour message” posts or drag text based notecards on the Hud QCon 31 2008
  • 35. Choosing REST over SOAP β€’ Technologies of REST are well understood β€’ HTTP, URIs, XML, Atom β€’ Four actions are sufficient β€’ most of the time (90% solution) β€’ Developers like it β€’ Every API behaves the same β€’ REST was a good choice QCon 2008
  • 36. Is REST as flexible as SOAP? β€’ Some Operations are not obvious – eg. transactions – eg. send notification with reply β€’ Be creative β€’ notifications as side effects of update β€’ drop box feeds (insert only) β€’ virtually infinite feeds (get & update only) β€’ REST is sufficient, but you may have to be creative QCon 2008
  • 37. Using the Atom Publishing Protocol ... QCon 34 2008
  • 38. Using the Atom Publishing Protocol ... β€’ Good REST based design QCon 34 2008
  • 39. Using the Atom Publishing Protocol ... β€’ Good REST based design β€’ Missing Query: – Solution: query parameters – Not always sufficient ... an open issue QCon 34 2008
  • 40. Using the Atom Publishing Protocol ... β€’ Good REST based design β€’ Missing Query: – Solution: query parameters – Not always sufficient ... an open issue β€’ Missing Authentication: – Solution: Google Auth – More secure than Basic Auth, slowed integration QCon 34 2008
  • 41. Using the Atom Publishing Protocol ... β€’ Good REST based design β€’ Missing Query: – Solution: query parameters – Not always sufficient ... an open issue β€’ Missing Authentication: – Solution: Google Auth – More secure than Basic Auth, slowed integration β€’ Concurrent Operations – Solution: Optimistic Concurrency via Edit URIs – We should have used strong eTags QCon 34 2008
  • 42. Extending the Atom Publishing Protocol ... β€’ Engineers care about efficiency β€’ Forced Read-Modify-Write – Solution: URIs based on the data (ACL) β€’ Batch Processing – Solution: GData batch extension β€’ Incremental Changes / Updates – an open issue ... QCon 35 2008
  • 43. Using Atom Data Format ... QCon 36 2008
  • 44. Using Atom Data Format ... β€’ Originally designed for blogs not data QCon 36 2008
  • 45. Using Atom Data Format ... β€’ Originally designed for blogs not data β€’ Drawbacks – syntax constraints (atom:content, atom:updated) QCon 36 2008
  • 46. Using Atom Data Format ... β€’ Originally designed for blogs not data β€’ Drawbacks – syntax constraints (atom:content, atom:updated) β€’ Benefits – standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!) QCon 36 2008
  • 47. Using Atom Data Format ... β€’ Originally designed for blogs not data β€’ Drawbacks – syntax constraints (atom:content, atom:updated) β€’ Benefits – standardized (IETF) – extensible – useful fields (atom:id, atom:updated) – can use a feed reader (cool!) β€’ Overall, a very good choice QCon 36 2008
  • 48. Modeling Data in Atom ... QCon 37 2008
  • 49. Modeling Data in Atom ... β€’ How to indicate extensions / semantics? – Solution: atom:category URI to indicate β€œkind” – Should have been human readable string QCon 37 2008
  • 50. Modeling Data in Atom ... β€’ How to indicate extensions / semantics? – Solution: atom:category URI to indicate β€œkind” – Should have been human readable string β€’ How to indicate related feeds and entries? – Solutions: ... β€’ link@rel, gd:feedLink, gd:entryLink, content@href – No clear standard, try to be consistent QCon 37 2008
  • 51. Designing New Data Formats ... QCon 38 2008
  • 52. Designing New Data Formats ... β€’ The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace QCon 38 2008
  • 53. Designing New Data Formats ... β€’ The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace QCon 38 2008
  • 54. Designing New Data Formats ... β€’ The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace β€’ Our Experience: – Almost every Google API has extended it – Used only by Google APIs (so far) QCon 38 2008
  • 55. Designing New Data Formats ... β€’ The Idea: GD-namespace – Create reusable extensions and kinds – Manage extensions in one namespace β€’ Our Experience: – Almost every Google API has extended it – Used only by Google APIs (so far) β€’ Alternatives: – Reuse existing XML schemas (GeoRSS, MediaRSS) – Create an ecology of β€˜kinds’ (GData ACL) QCon 38 2008
  • 56. Care for your Developers β€’ Protocol Centric & Language Agnostic β€’ Open your Code β€’ Give Fair Warnings of Changes β€’ Meet your Developers QCon 2008
  • 57. Do you feel lucky? β€’ Questions, comments? QCon 40 2008