##Soapi.JS2 var ctx = new Soapi.ApiContext(apiKey); ctx.initialize(function() { // get a page of users ctx.official.stackApps.Users().invoke(function(users) { users.ForEach(function(user) { // get a page of each user's questions w/answers user.Questions().withAnswers(true).invoke(function(questions) { // for each of the user's questions questions.ForEach(function(question) { // enumerate it's answers, if any question.answers.ForEach(function(answer) { // and get a page of the answer's owner's favorites answer.owner.Favorites().invoke(function(favorites) { favorites.ForEach(function(favorite) { // shall I go on? ;-) }); }); }); }); }); }); }); }); ##About Soapi.JS2 is being released separately from [Soapi.JS][1] as it is a completely different take on accessing the API via JavaScript. [Soapi.JS][2] is a very lightweight library that provides full API coverage. Soapi.JS2 takes it to 11 with a complete paradigm shift. It is a bit heavier and revolves around a fluent, relational query approach similar to that of the [Soapi.CS][3] library, providing a seamless view on the data served by the API. ###License MIT-X11/GPL ###Download ***Alpha*** version available at [http://soapi.info/Downloads/Soapi.JS2-alpha-08-21-2010.zip][4] ChangeLog: Soapi.JS2-alpha-08-21-2010 - implemented [ThrotteCache][11] Soapi.JS2-alpha-08-20-2010 - implemented paging fully - implemented .total method Soapi.JS2-alpha-08-19-2010 - initial release ###Platform JavaScript - Any browser that doesn't burn oil. ##Contact code poet ##Code Included in the alpha zip is a full coverage test suite and a rather detailed walkthrough. ###QuickStart - [ApiContext][5] - the root of all queries <-- **start here** - [Api Coverage][6] - how Soapi.JS2 maps to the API - [Relational Queries][7] - how to treat the API like a database - [Async usage pattern][8] - how to call and what to expect - [Parameterization And Paging][9] - how to get exactly what you want from the API - [Stubs][10] - filling placeholder objects - [Throttling and Caching][11] - concentrate on features, not plumbing.. ###Sample Code - [Basic Usage Example 01][12] - demonstrates how to retrieve related data from the api using Soapi.JS ###Reference - [Linq.js][13] - Soapi.JS will detect if linq.js is loaded and if found will return all results that would normally be JavaScript `Array` as an instance of `Enumerable`. Most sample code that I provide will utilize this functionality. This is highly recommended reading for anyone building non-trivial JavaScript applications. [1]: http://stackapps.com/questions/494/soapi-js-v1-0-fluent-javascript-wrapper-for-the-stackoverflow-api [2]: http://stackapps.com/questions/494/soapi-js-v1-0-fluent-javascript-wrapper-for-the-stackoverflow-api [3]: http://stackapps.com/questions/386/soapi-cs-a-fully-relational-fluent-net-stack-exchange-api-client-library [4]: http://soapi.info/Downloads/Soapi.JS2-alpha-08-21-2010.zip [5]: #1441 [6]: #1436 [7]: #1437 [8]: #1435 [9]: #1440 [10]: #1438 [11]: #1448 [12]: #1434 [13]: http://linqjs.codeplex.com/