From fef8134d7e12cfa4dca573de379e4b02d4d202af Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 11:37:17 -0400 Subject: [PATCH 01/37] publish: Update_errors.md (#815) generated from commit bdb693031027c2e5af77cb709cb86836c3e2e74c --- fonts/slate.eot | Bin 0 -> 1876 bytes fonts/slate.svg | 14 + fonts/slate.ttf | Bin 0 -> 1720 bytes fonts/slate.woff | Bin 0 -> 1796 bytes fonts/slate.woff2 | Bin 0 -> 796 bytes images/logo.png | Bin 0 -> 22317 bytes images/navbar.png | Bin 0 -> 96 bytes index.html | 503 ++++++++++++++++++++++++++++++++++++ javascripts/all.js | 131 ++++++++++ javascripts/all_nosearch.js | 31 +++ stylesheets/print.css | 1 + stylesheets/screen.css | 1 + 12 files changed, 681 insertions(+) create mode 100755 fonts/slate.eot create mode 100644 fonts/slate.svg create mode 100755 fonts/slate.ttf create mode 100755 fonts/slate.woff create mode 100755 fonts/slate.woff2 create mode 100644 images/logo.png create mode 100644 images/navbar.png create mode 100644 index.html create mode 100644 javascripts/all.js create mode 100644 javascripts/all_nosearch.js create mode 100644 stylesheets/print.css create mode 100644 stylesheets/screen.css diff --git a/fonts/slate.eot b/fonts/slate.eot new file mode 100755 index 0000000000000000000000000000000000000000..13c4839a1975d4c92d66753d75553f922743c6ef GIT binary patch literal 1876 zcmaJ?&2Jl35TEDWeRg&sP8)xqh$Kr)Yzaiu#`dnNaHtS!Xx9i53LF}#nAmmP`Xfq= z;s{Zte*qCEK;i~h4hYFPaA-x4sD#vVrBXQ{MIaD@1Ke8kn|8tnQ^fdI9N^x@? zd<=RUJW{D`U;b-v<0kYSA}zO8E|&DaCqF0BzlPme0}$TUZbAP8`m<~GR{K~75*dg= zcCEQu4DE@ZpmS=+>&5muJwb0nf0^x#V!izR7X1vpggLV7&CM3_1j&!tPMS_)mkgrN zC!rsJe5kniow8zt{RT+zltXle=pd}!=-!|+8X9a|iyqm&z#GOh#?Z4hMmoI$K1va6 zrUYgm&_U=R+`ZrJ0!LQ9E`42ef0@uHvC8U zo}w4%B?O&MCX$JGEG)w^HIqqa()pb0xK4IFpUb457c*fwDPqaQf|z%md}h1{#>ac0 zD>_@{@&c$_-fEYWRBE3yj7U8q4MTz%hA^cOxdwei%19MlXpM(P_)+e=@Rm}B>tXap zwoqO*DogaoKF+^`!zvX>{f10 zq*F6dk@0&Ok4=k2cHR|EKKaOn+_Q3KG-~~J-9n!;&D+d{W9=SQ|IqlDm9?y2uUl{( zi(0o$Q@Cby<g+B7U zE7gMM6{=S}Ps}C~lhg72%h#4X&vB-0d)je4Z)w>(?>M%-xE~jH;l@L}Lcyy(n4O9z z65lS`w&R>XbW_^$2bKN!lz(S%N3N!tcP>R={D&-^3rjyfS-aWi!AkH>sk+00G5&qW zC1%n(1Gmpd;5$IPUF_Lw@K%&WbbxEX?LgKcF9x!K$J`8LiMQ^#KsG5yOZ=|rBS1K&l2uG4tC&hwF_o-hDp_Le zTrgI}?0+pse + + +Generated by IcoMoon + + + + + + + + + + diff --git a/fonts/slate.ttf b/fonts/slate.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ace9a46a7e1ed6b6ab3de2f30ef3e27c572f88d3 GIT binary patch literal 1720 zcmaJ>-D_KA7=PaL@t*V?ZMro%kz(6pV-rwZyCyk@Q7?wb>UJv9`gO6wj7^qiCTUqB zO%X@;7dX69!8^V6LWJzXiw!F%45qgVdLa}=5xvm6E&iVKo-9$jJ@CHI_viaTf`}a2 zC!H2wcyVDVd0amU$>&(FZ8pn0bm7yth{U7dH)`ef4)6r{E^wmO*t_`0^~*QG?-S|8 zt!lYq{5ky*k?|Sy{uTt*p8hrX-@re<)$DYS^+1t{800m!H_O^}@g4X@@W-3w?hZXf zuY!M;^{sNV`qeJ|2)=?Gg`Mqo2XzAEd#oqjAaRXMBJF+c79{T|EPkbe7-PE;5S;Q~ zaGL1Q(r@%{&}khDI-bPX!~GUGz-0@x9Aaiik?BxrHq?#(PnWnI%nYaReOv*$ZSm>?)ctla|1hAG;T1^YPnfOv{N&_J8ekcvoG^Cm?MLpzb znO-8ASEU{s)D{<<&JKz%JjTWAM|EWWzjHMajT;ECdZ?bsKw&|^tZONrkvOuIkI%De zUYTtG_26}0jYK0>4*B1QgBuPLXU?}t^*TiboK|r`R>P0_HD+(cdi{Ze{FKYDLBs0R~?v6B%Rx~Edo2aasT@IJ-vtfG(iE^ z$Awv_E5l{^C4s84a|;3+->t#z!u^V-9Nj!@+Ph(RslFP9tMyA^DCS*vdNzG<@yc2l z`u?ov&H8>AuC0gXeBbj{4$|U#n6XQ^x*FE+&d;P>_lp(J^Zj%8%oMl&cI_ZN6TKO{ zkvFp2-&{yO{TDd~50<`txN&oc<4*8TskuV~pXj~g5i{t$k=GYVU^@bQTx>a5uvcK? zADE$i`dge4A3((KH9;?{zv*7K*f>Jt^humckR5yQeHf=xv0R7Ti)jP&N=%#Ng5wPM z_VCv|5z{smX^sCCV+<0Gsc02b(JH2*RZK;zn2MJ0U5I^E%r-TsOdYDyD_EDQO?BF) z7OFc*Cuk9TtZz5Uo$8RKb(q)a%}C8|gD__z_YMNoV9|<#sst6tUZ*|mXK52w&tq|_ J6Wq-M;U6NW`v(93 literal 0 HcmV?d00001 diff --git a/fonts/slate.woff b/fonts/slate.woff new file mode 100755 index 0000000000000000000000000000000000000000..1e72e0ee0018119d7c814c2097cc60c0bcd05d84 GIT binary patch literal 1796 zcmaJ>&2Jl35TCanZ=GF;-Nqj%Qj#SmwgjS~vAs(b4i$%lc7v*fuR|jhlemtH?Nqf< z5&;$c3y8RZ#0{p83^QtGf$~^ZU#vdPL3b z4fcBr_DN>rKz!G#?&4f~pM4ZRM6a}~ts1aTadwIM%N_dh>UO7#K7YRFXF@YA68l_? z@xFm7>0K?wZ&VUvut!OxMlIIQ5*<0_&Hha~Yl49Y@PK@!7+CqFG*;eClSR)#j$=Xw zNnrjF9T`VX|4zRT99<||DqHk_nzSa(NzO5voBad{L?lOWoE4r?ZbRP(V_X@TZL>{} z(3A8mk}l-3xojrwNJr*pi-lsLQVxSKC{0w##ljO}){#>poy#tYg)pcTCk9|L<3To?f*omEO$b9ODUa}gVj!a zAvUB1l6OCpmTg;7PgnO)phbF-Xik@UVo+OLa3((}zVs*;Zywi?{r}GOL=0{q1ou!q ztD%;HAbGE?Z5HC#RzAMSTXWiN9ioS*i+Usm@#fI}eK@$`F!8DQHtAj`iEnm!UKH}P zNl{d*%%o>TwzLq6ppv_9BR_a$H<|Q)z2RXkyY6k4BJlQ)o4+xU@=Bif%MA~%sib$? zbw%hV*Y96nzi0MvpHdWZeO#D>x^i4rP!XsqKRYk5@ZB2RF5E9QWp(qg81F^VmBvaG ztu(Ggk(kS7r)DyTm#?ozQ4q}d{!9==(dt@sJ_vk&`7k5ChZ~1PD=Sgs?%Z@HoBe#* z_k-a4JvVKwyWWZ=q2@1#9uk~9EfrHBtA=!8%MC` zIGu@c6SyDi7WCym@ z2-w*rE$c_UfviKEL=Vy>={0bo+(i5#P1q3$6VB``hVMrCzU@B6vbqKcPy}m-BtQn- zkylU>byNe6DE>18g5d9bm%bZqa|qF=7&3(|U!AY)%Yg-vOsqKIq$w0D$r*3}ks4=+ z>U6?w2xMd=B$;zQ9v)F1K7KwfQ9|)<9nl&i?6-rchs{I8LC1eK^@#(|^QwB-{VeQz zoHLn@cwG?Yo(X!F(Q8iBOqSNs${h}C*?qJYLuZAnVXqx{ww|}Ux0`ca^V#hz?c7{r z7ldYbmk!M1m3G+IYC6(!VcCzqp&pJkZ#1@kw2W<^EJMqOM;^&dq6ELC*|pK!(cC0< zbZtF%BzLsuTw5O*+eg;dX0a+hcfI=gj8a~qWYJoMamHAo)!Qq|6&~9S8`{d0T?L&% z@$R=P6H0rTp6V+-Dlb>EB67JEMQ>kk%`y}{hvBC(RNEw)*%|U|4>SL+B=3rE@y*rw zR_bLZr&~XN?C;+yx2IilcDnrb?M)}An;DsTe@^rq$9L-UWNqY_oTyWyYisN3CMIh; z*C)b12exYgK^2c4S}J#2YJ+00rUlj%+LqQ7E%lldEc`K|1Bky)iLkwF{Wltvj!{A+PBEzhE3BX) zFBgqmj@&z?N1*=OK?z54T7is8FiA(N66oe`X+cKl>`n&&000000HC;3 zk^ug-#56-JW5JAtMV6Rgj#+|9A(7;@^`+^dWy@Alt7D86w|;R>QMs>d+47HJVfKhH aD;vc&%m&dlj4($-ipx}q&#}A+00017%3vV? literal 0 HcmV?d00001 diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..68a478fae3611d878af18c575cf8218b818f41db GIT binary patch literal 22317 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
hg5Z+!{Sa)O9QNxi$tfwtDZos~b$g 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 F`9JqINYVfR literal 0 HcmV?d00001 diff --git a/images/navbar.png b/images/navbar.png new file mode 100644 index 0000000000000000000000000000000000000000..df38e90d87e1a215371b4977e18cde90f8832537 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*PVQ%R6tFatx` + + + + + + API Reference + + + + + + + + + + + NAV + Navbar + + + +
+
+
+

Introduction

+

Welcome to the Kittn API! You can use our API to access Kittn API endpoints, which can get information on various cats, kittens, and breeds in our database.

+ +

We have language bindings in Shell, Ruby, and Python! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

+ +

This example API documentation page was created with Slate. Feel free to edit it and use it as a base for your own API's documentation.

+

Authentication

+
+

To authorize, use this code:

+
+
require 'kittn'
+
+api = Kittn::APIClient.authorize!('meowmeowmeow')
+
import kittn
+
+api = kittn.authorize('meowmeowmeow')
+
# With shell, you can just pass the correct header with each request
+curl "api_endpoint_here"
+  -H "Authorization: meowmeowmeow"
+
const kittn = require('kittn');
+
+let api = kittn.authorize('meowmeowmeow');
+
+
+

Make sure to replace meowmeowmeow with your API key.

+
+ +

Kittn uses API keys to allow access to the API. You can register a new Kittn API key at our developer portal.

+ +

Kittn expects for the API key to be included in all API requests to the server in a header that looks like the following:

+ +

Authorization: meowmeowmeow

+ + +

Kittens

Get All Kittens

require 'kittn'
+
+api = Kittn::APIClient.authorize!('meowmeowmeow')
+api.kittens.get
+
import kittn
+
+api = kittn.authorize('meowmeowmeow')
+api.kittens.get()
+
curl "http://example.com/api/kittens"
+  -H "Authorization: meowmeowmeow"
+
const kittn = require('kittn');
+
+let api = kittn.authorize('meowmeowmeow');
+let kittens = api.kittens.get();
+
+
+

The above command returns JSON structured like this:

+
+
[
+  {
+    "id": 1,
+    "name": "Fluffums",
+    "breed": "calico",
+    "fluffiness": 6,
+    "cuteness": 7
+  },
+  {
+    "id": 2,
+    "name": "Max",
+    "breed": "unknown",
+    "fluffiness": 5,
+    "cuteness": 10
+  }
+]
+
+

This endpoint retrieves all kittens.

+

HTTP Request

+

GET http://example.com/api/kittens

+

Query Parameters

+ + + + + + + + + + + + + + + + + +
ParameterDefaultDescription
include_catsfalseIf set to true, the result will also include cats.
availabletrueIf set to false, the result will include kittens that have already been adopted.
+ + +

Get a Specific Kitten

require 'kittn'
+
+api = Kittn::APIClient.authorize!('meowmeowmeow')
+api.kittens.get(2)
+
import kittn
+
+api = kittn.authorize('meowmeowmeow')
+api.kittens.get(2)
+
curl "http://example.com/api/kittens/2"
+  -H "Authorization: meowmeowmeow"
+
const kittn = require('kittn');
+
+let api = kittn.authorize('meowmeowmeow');
+let max = api.kittens.get(2);
+
+
+

The above command returns JSON structured like this:

+
+
{
+  "id": 2,
+  "name": "Max",
+  "breed": "unknown",
+  "fluffiness": 5,
+  "cuteness": 10
+}
+
+

This endpoint retrieves a specific kitten.

+ + +

HTTP Request

+

GET http://example.com/kittens/<ID>

+

URL Parameters

+ + + + + + + + + + +
ParameterDescription
IDThe ID of the kitten to retrieve
+

Delete a Specific Kitten

require 'kittn'
+
+api = Kittn::APIClient.authorize!('meowmeowmeow')
+api.kittens.delete(2)
+
import kittn
+
+api = kittn.authorize('meowmeowmeow')
+api.kittens.delete(2)
+
curl "http://example.com/api/kittens/2"
+  -X DELETE
+  -H "Authorization: meowmeowmeow"
+
const kittn = require('kittn');
+
+let api = kittn.authorize('meowmeowmeow');
+let max = api.kittens.delete(2);
+
+
+

The above command returns JSON structured like this:

+
+
{
+  "id": 2,
+  "deleted" : ":("
+}
+
+

This endpoint retrieves a specific kitten.

+

HTTP Request

+

DELETE http://example.com/kittens/<ID>

+

URL Parameters

+ + + + + + + + + + +
ParameterDescription
IDThe ID of the kitten to delete
+

Errors

+ + +

The Kittn API uses the following error codes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error CodeMeaning
400Bad Request -- Your request sucks.
401Unauthorized -- Your API key is wrong.
403Forbidden -- The kitten requested is hidden for administrators only.
404Not Found -- The specified kitten could not be found.
405Method Not Allowed -- You tried to access a kitten with an invalid method.
406Not Acceptable -- You requested a format that isn't json.
410Gone -- The kitten requested has been removed from our servers.
418I'm a teapot.
429Too Many Requests -- You're requesting too many kittens! Slow down!
500Internal Server Error -- We had a problem with our server. Try again later.
503Service Unavailable -- We're temporarily offline for maintenance. Please try again later.
+ +
+
+ +
+
+ + diff --git a/javascripts/all.js b/javascripts/all.js new file mode 100644 index 0000000..84f75e8 --- /dev/null +++ b/javascripts/all.js @@ -0,0 +1,131 @@ +!function(){if("ontouchstart"in window){var e,t,n,r,i,o,s={};e=function(e,t){return Math.abs(e[0]-t[0])>5||Math.abs(e[1]-t[1])>5},t=function(e){this.startXY=[e.touches[0].clientX,e.touches[0].clientY],this.threshold=!1},n=function(t){return!this.threshold&&void(this.threshold=e(this.startXY,[t.touches[0].clientX,t.touches[0].clientY]))},r=function(t){if(!this.threshold&&!e(this.startXY,[t.changedTouches[0].clientX,t.changedTouches[0].clientY])){var n=t.changedTouches[0],r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),r.simulated=!0,t.target.dispatchEvent(r)}},i=function(e){var t=Date.now(),n=t-s.time,r=e.clientX,i=e.clientY,a=[Math.abs(s.x-r),Math.abs(s.y-i)],u=o(e.target,"A")||e.target,c=u.nodeName,l="A"===c,f=window.navigator.standalone&&l&&e.target.getAttribute("href");return s.time=t,s.x=r,s.y=i,!((!e.simulated&&(n<500||n<1500&&a[0]<50&&a[1]<50)||f)&&(e.preventDefault(),e.stopPropagation(),!f))&&(f&&(window.location=u.getAttribute("href")),void(u&&u.classList&&(u.classList.add("energize-focus"),window.setTimeout(function(){u.classList.remove("energize-focus")},150))))},o=function(e,t){for(var n=e;n!==document.body;){if(!n||n.nodeName===t)return n;n=n.parentNode}return null},document.addEventListener("touchstart",t,!1),document.addEventListener("touchmove",n,!1),document.addEventListener("touchend",r,!1),document.addEventListener("click",i,!0)}}(),/*! + * jQuery JavaScript Library v2.2.0 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-08T20:02Z + */ +function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=oe.type(e);return"function"!==n&&!oe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(oe.isFunction(t))return oe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return oe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(ge.test(t))return oe.filter(t,e,n);t=oe.filter(t,e)}return oe.grep(e,function(e){return Z.call(t,e)>-1!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t={};return oe.each(e.match(we)||[],function(e,n){t[n]=!0}),t}function s(){Q.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s),oe.ready()}function a(){this.expando=oe.expando+a.uid++}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(je,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:Ne.test(n)?oe.parseJSON(n):n)}catch(e){}ke.set(e,t,n)}else n=void 0;return n}function c(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:function(){return oe.css(e,t,"")},u=a(),c=n&&n[3]||(oe.cssNumber[t]?"":"px"),l=(oe.cssNumber[t]||"px"!==c&&+u)&&Ae.exec(oe.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do o=o||".5",l/=o,oe.style(e,t,l+c);while(o!==(o=a()/u)&&1!==o&&--s)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function l(e,t){var n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&oe.nodeName(e,t)?oe.merge([e],n):n}function f(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(c=oe.contains(o.ownerDocument,o),s=l(d.appendChild(o),"script"),c&&f(s),n)for(p=0;o=s[p++];)Fe.test(o.type||"")&&n.push(o);return d}function d(){return!0}function h(){return!1}function g(){try{return Q.activeElement}catch(e){}}function v(e,t,n,r,i,o){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)v(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=h;else if(!i)return this;return 1===o&&(s=i,i=function(e){return oe().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=oe.guid++)),e.each(function(){oe.event.add(this,t,i,r,n)})}function m(e,t){return oe.nodeName(e,"table")&&oe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function y(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function x(e){var t=ze.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function b(e,t){var n,r,i,o,s,a,u,c;if(1===t.nodeType){if(Ee.hasData(e)&&(o=Ee.access(e),s=Ee.set(t,o),c=o.events)){delete s.handle,s.events={};for(i in c)for(n=0,r=c[i].length;n1&&"string"==typeof g&&!re.checkClone&&Be.test(g))return e.each(function(i){var o=e.eq(i);v&&(t[0]=g.call(this,i,o.html())),T(o,t,n,r)});if(d&&(i=p(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=oe.map(l(i,"script"),y),a=s.length;f")).appendTo(t.documentElement),t=Ve[0].contentDocument,t.write(),t.close(),n=C(e,t),Ve.detach()),Ue[e]=n),n}function k(e,t,n){var r,i,o,s,a=e.style;return n=n||Je(e),n&&(s=n.getPropertyValue(t)||n[t],""!==s||oe.contains(e.ownerDocument,e)||(s=oe.style(e,t)),!re.pixelMarginRight()&&Qe.test(s)&&Ye.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o)),void 0!==s?s+"":s}function N(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function j(e){if(e in rt)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=nt.length;n--;)if(e=nt[n]+t,e in rt)return e}function L(e,t,n){var r=Ae.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function A(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=oe.css(e,n+De[o],!0,i)),r?("content"===n&&(s-=oe.css(e,"padding"+De[o],!0,i)),"margin"!==n&&(s-=oe.css(e,"border"+De[o]+"Width",!0,i))):(s+=oe.css(e,"padding"+De[o],!0,i),"padding"!==n&&(s+=oe.css(e,"border"+De[o]+"Width",!0,i)));return s}function D(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,s=Je(t),a="border-box"===oe.css(t,"boxSizing",!1,s);if(Q.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=k(t,n,s),(o<0||null==o)&&(o=t.style[n]),Qe.test(o))return o;i=a&&(re.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+A(t,n,r||(a?"border":"content"),i,s)+"px"}function O(e,t){for(var n,r,i,o=[],s=0,a=e.length;s=0&&n=0},isPlainObject:function(e){return"object"===oe.type(e)&&!e.nodeType&&!oe.isWindow(e)&&!(e.constructor&&!ne.call(e.constructor.prototype,"isPrototypeOf"))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ee[te.call(e)]||"object":typeof e},globalEval:function(e){var t,n=eval;e=oe.trim(e),e&&(1===e.indexOf("use strict")?(t=Q.createElement("script"),t.text=e,Q.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(ae,"ms-").replace(ue,ce)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[I]=!0,e}function i(e){var t=O.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||U)-(~e.sourceIndex||U);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}function l(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function p(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(h,x.length):x),o?o(null,s,x,u):K.apply(s,x)})}function y(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],s=o||T.relative[" "],a=o?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var i=!o&&(r||n!==j)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,i}];a1&&h(l),a>1&&p(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,o=e.length>0,s=function(r,s,a,u,c){var l,f,p,d=0,h="0",g=r&&[],m=[],y=j,x=r||o&&T.find.TAG("*",c),b=_+=null==y?1:Math.random()||.1,w=x.length;for(c&&(j=s===O||s||c);h!==w&&null!=(l=x[h]);h++){if(o&&l){for(f=0,s||l.ownerDocument===O||(D(l),a=!$);p=e[f++];)if(p(l,s||O,a)){u.push(l);break}c&&(_=b)}i&&((l=!p&&l)&&d--,r&&g.push(l))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(d>0)for(;h--;)g[h]||m[h]||(m[h]=J.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&d+n.length>1&&t.uniqueSort(u)}return c&&(_=b,j=y),g};return i?r(s):s}var b,w,T,S,C,E,k,N,j,L,A,D,O,q,$,F,H,P,R,I="sizzle"+1*new Date,M=e.document,_=0,W=0,B=n(),z=n(),X=n(),V=function(e,t){return e===t&&(A=!0),0},U=1<<31,Y={}.hasOwnProperty,Q=[],J=Q.pop,G=Q.push,K=Q.push,Z=Q.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),pe=new RegExp("^"+re+"$"),de={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,ve=/^[^{]+\{\s*\[native \w/,me=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){D()};try{K.apply(Q=Z.call(M.childNodes),M.childNodes),Q[M.childNodes.length].nodeType}catch(e){K={apply:Q.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},D=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:M;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,q=O.documentElement,$=!C(O),(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(O.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=ve.test(O.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=I,!O.getElementsByName||!O.getElementsByName(I).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&$){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&$)return t.getElementsByClassName(e)},H=[],F=[],(w.qsa=ve.test(O.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+I+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+I+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=O.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=ve.test(P=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=P.call(e,"div"),P.call(e,"[s!='']:x"),H.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),H=H.length&&new RegExp(H.join("|")),t=ve.test(q.compareDocumentPosition),R=t||ve.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===O||e.ownerDocument===M&&R(M,e)?-1:t===O||t.ownerDocument===M&&R(M,t)?1:L?ee(L,e)-ee(L,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],u=[t];if(!i||!o)return e===O?-1:t===O?1:i?-1:o?1:L?ee(L,e)-ee(L,t):0;if(i===o)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===M?-1:u[r]===M?1:0},O):O},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==O&&D(e),n=n.replace(le,"='$1']"),w.matchesSelector&&$&&!X[n+" "]&&(!H||!H.test(n))&&(!F||!F.test(n)))try{var r=P.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,O,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==O&&D(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==O&&D(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!$):void 0;return void 0!==r?r:w.attributes||!$?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!w.detectDuplicates,L=!w.sortStable&&e.slice(0),e.sort(V),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return L=null,e},S=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=S(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=S(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:de,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return de.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&B(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,d,h,g=o!==s?"nextSibling":"previousSibling",v=t.parentNode,m=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&y){for(p=v,f=p[I]||(p[I]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],d=c[0]===_&&c[1],x=d&&c[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[_,d,x];break}}else if(y&&(p=t,f=p[I]||(p[I]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],d=c[0]===_&&c[1],x=d),x===!1)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((a?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++x||(y&&(f=p[I]||(p[I]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[_,x]),p!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[I]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),s=i.length;s--;)r=ee(e,i[s]),e[r]=!(t[r]=i[s])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(ae,"$1"));return i[I]?r(function(e,t,n,r){for(var o,s=i(e,null,r,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||S(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=$?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[n<0?n+t:n]}),even:c(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=o[0]).type&&w.getById&&9===t.nodeType&&$&&T.relative[o[1].type]){if(t=(T.find.ID(s.matches[0].replace(be,we),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=de.needsContext.test(e)?0:o.length;i--&&(s=o[i],!T.relative[a=s.type]);)if((u=T.find[a])&&(r=u(s.matches[0].replace(be,we),ye.test(o[0].type)&&l(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return K.apply(n,r),n;break}}return(c||k(e,f))(r,t,!$,n,!t||ye.test(e)&&l(t.parentNode)||t),n},w.sortStable=I.split("").sort(V).join("")===I,w.detectDuplicates=!!A,D(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(O.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);oe.find=le,oe.expr=le.selectors,oe.expr[":"]=oe.expr.pseudos,oe.uniqueSort=oe.unique=le.uniqueSort,oe.text=le.getText,oe.isXMLDoc=le.isXML,oe.contains=le.contains;var fe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&oe(e).is(n))break;r.push(e)}return r},pe=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},de=oe.expr.match.needsContext,he=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,ge=/^.[^:#\[\.,]*$/;oe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?oe.find.matchesSelector(r,e)?[r]:[]:oe.find.matches(e,oe.grep(t,function(e){return 1===e.nodeType}))},oe.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(oe(e).filter(function(){for(t=0;t1?oe.unique(r):r),r.selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&de.test(e)?oe(e):e||[],!1).length}});var ve,me=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ye=oe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||ve,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:me.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof oe?t[0]:t,oe.merge(this,oe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:Q,!0)),he.test(r[1])&&oe.isPlainObject(t))for(r in t)oe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=Q.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=Q,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):oe.isFunction(e)?void 0!==n.ready?n.ready(e):e(oe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),oe.makeArray(e,this))};ye.prototype=oe.fn,ve=oe(Q);var xe=/^(?:parents|prev(?:Until|All))/,be={children:!0,contents:!0,next:!0,prev:!0};oe.fn.extend({has:function(e){var t=oe(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&oe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?oe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?Z.call(oe(e),this[0]):Z.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(oe.uniqueSort(oe.merge(this.get(),oe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),oe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return fe(e,"parentNode")},parentsUntil:function(e,t,n){return fe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return fe(e,"nextSibling")},prevAll:function(e){return fe(e,"previousSibling")},nextUntil:function(e,t,n){return fe(e,"nextSibling",n)},prevUntil:function(e,t,n){return fe(e,"previousSibling",n)},siblings:function(e){return pe((e.parentNode||{}).firstChild,e)},children:function(e){return pe(e.firstChild)},contents:function(e){return e.contentDocument||oe.merge([],e.childNodes)}},function(e,t){oe.fn[e]=function(n,r){var i=oe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=oe.filter(r,i)),this.length>1&&(be[e]||oe.uniqueSort(i),xe.test(e)&&i.reverse()),this.pushStack(i)}});var we=/\S+/g;oe.Callbacks=function(e){e="string"==typeof e?o(e):oe.extend({},e);var t,n,r,i,s=[],a=[],u=-1,c=function(){for(i=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)s.splice(n,1),n<=u&&u--}),this},has:function(e){return e?oe.inArray(e,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return i=a=[],s=n="",this},disabled:function(){return!s},lock:function(){return i=a=[],n||(s=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},oe.extend({Deferred:function(e){var t=[["resolve","done",oe.Callbacks("once memory"),"resolved"],["reject","fail",oe.Callbacks("once memory"),"rejected"],["notify","progress",oe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return oe.Deferred(function(n){oe.each(t,function(t,o){var s=oe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&oe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?oe.extend(e,r):r}},i={};return r.pipe=r.then,oe.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=J.call(arguments),s=o.length,a=1!==s||e&&oe.isFunction(e.promise)?s:0,u=1===a?e:oe.Deferred(),c=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?J.call(arguments):i,r===t?u.notifyWith(n,r):--a||u.resolveWith(n,r)}};if(s>1)for(t=new Array(s),n=new Array(s),r=new Array(s);i0||(Te.resolveWith(Q,[oe]),oe.fn.triggerHandler&&(oe(Q).triggerHandler("ready"),oe(Q).off("ready"))))}}),oe.ready.promise=function(t){return Te||(Te=oe.Deferred(),"complete"===Q.readyState||"loading"!==Q.readyState&&!Q.documentElement.doScroll?e.setTimeout(oe.ready):(Q.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s))),Te.promise(t)},oe.ready.promise();var Se=function(e,t,n,r,i,o,s){var a=0,u=e.length,c=null==n;if("object"===oe.type(n)){i=!0;for(a in n)Se(e,t,a,n[a],!0,o,s)}else if(void 0!==r&&(i=!0,oe.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(oe(e),n)})),t))for(;a-1&&void 0!==n&&ke.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){ke.remove(this,e)})}}),oe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Ee.get(e,t),n&&(!r||oe.isArray(n)?r=Ee.access(e,t,oe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=oe.queue(e,t),r=n.length,i=n.shift(),o=oe._queueHooks(e,t),s=function(){oe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Ee.get(e,n)||Ee.access(e,n,{empty:oe.Callbacks("once memory").add(function(){Ee.remove(e,[t+"queue",n])})})}}),oe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};He.optgroup=He.option,He.tbody=He.tfoot=He.colgroup=He.caption=He.thead,He.th=He.td;var Pe=/<|&#?\w+;/;!function(){var e=Q.createDocumentFragment(),t=e.appendChild(Q.createElement("div")),n=Q.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),re.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",re.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Re=/^key/,Ie=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Me=/^([^.]*)(?:\.(.+)|)/;oe.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,v=Ee.get(e);if(v)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=oe.guid++),(u=v.events)||(u=v.events={}),(s=v.handle)||(s=v.handle=function(t){return"undefined"!=typeof oe&&oe.event.triggered!==t.type?oe.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(we)||[""],c=t.length;c--;)a=Me.exec(t[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d&&(f=oe.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=oe.event.special[d]||{},l=oe.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&oe.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||(p=u[d]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,h,s)!==!1||e.addEventListener&&e.addEventListener(d,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),oe.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,v=Ee.hasData(e)&&Ee.get(e);if(v&&(u=v.events)){for(t=(t||"").match(we)||[""],c=t.length;c--;)if(a=Me.exec(t[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d){for(f=oe.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;o--;)l=p[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,h,v.handle)!==!1||oe.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)oe.event.remove(e,d+t[c],n,r,!0);oe.isEmptyObject(u)&&Ee.remove(e,"handle events")}},dispatch:function(e){e=oe.event.fix(e);var t,n,r,i,o,s=[],a=J.call(arguments),u=(Ee.get(this,"events")||{})[e.type]||[],c=oe.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=oe.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((oe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a), +void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:oe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a]*)\/>/gi,We=/\s*$/g;oe.extend({htmlPrefilter:function(e){return e.replace(_e,"<$1>")},clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=oe.contains(e.ownerDocument,e);if(!(re.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||oe.isXMLDoc(e)))for(s=l(a),o=l(e),r=0,i=o.length;r0&&f(s,!u&&l(e,"script")),a},cleanData:function(e){for(var t,n,r,i=oe.event.special,o=0;void 0!==(n=e[o]);o++)if(Ce(n)){if(t=n[Ee.expando]){if(t.events)for(r in t.events)i[r]?oe.event.remove(n,r):oe.removeEvent(n,r,t.handle);n[Ee.expando]=void 0}n[ke.expando]&&(n[ke.expando]=void 0)}}}),oe.fn.extend({domManip:T,detach:function(e){return S(this,e,!0)},remove:function(e){return S(this,e)},text:function(e){return Se(this,function(e){return void 0===e?oe.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return T(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=m(this,e);t.appendChild(e)}})},prepend:function(){return T(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=m(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return T(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return T(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(oe.cleanData(l(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return oe.clone(this,e,t)})},html:function(e){return Se(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!We.test(e)&&!He[($e.exec(e)||["",""])[1].toLowerCase()]){e=oe.htmlPrefilter(e);try{for(;n1)},show:function(){return O(this,!0)},hide:function(){return O(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Oe(this)?oe(this).show():oe(this).hide()})}}),oe.Tween=q,q.prototype={constructor:q,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||oe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(oe.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=oe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=oe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){oe.fx.step[e.prop]?oe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[oe.cssProps[e.prop]]&&!oe.cssHooks[e.prop]?e.elem[e.prop]=e.now:oe.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},oe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},oe.fx=q.prototype.init,oe.fx.step={};var it,ot,st=/^(?:toggle|show|hide)$/,at=/queueHooks$/;oe.Animation=oe.extend(I,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return c(n.elem,e,Ae.exec(t),n),n}]},tweener:function(e,t){oe.isFunction(e)?(t=e,e=["*"]):e=e.match(we);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){oe.removeAttr(this,e)})}}),oe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?oe.prop(e,t,n):(1===o&&oe.isXMLDoc(e)||(t=t.toLowerCase(),i=oe.attrHooks[t]||(oe.expr.match.bool.test(t)?ut:void 0)),void 0!==n?null===n?void oe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=oe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!re.radioValue&&"radio"===t&&oe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(we);if(o&&1===e.nodeType)for(;n=o[i++];)r=oe.propFix[n]||n,oe.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),ut={set:function(e,t,n){return t===!1?oe.removeAttr(e,n):e.setAttribute(n,n),n}},oe.each(oe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ct[t]||oe.find.attr;ct[t]=function(e,t,r){var i,o;return r||(o=ct[t],ct[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,ct[t]=o),i}});var lt=/^(?:input|select|textarea|button)$/i,ft=/^(?:a|area)$/i;oe.fn.extend({prop:function(e,t){return Se(this,oe.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[oe.propFix[e]||e]})}}),oe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&oe.isXMLDoc(e)||(t=oe.propFix[t]||t,i=oe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=oe.find.attr(e,"tabindex");return t?parseInt(t,10):lt.test(e.nodeName)||ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),re.optSelected||(oe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),oe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){oe.propFix[this.toLowerCase()]=this});var pt=/[\t\r\n\f]/g;oe.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,u=0;if(oe.isFunction(e))return this.each(function(t){oe(this).addClass(e.call(this,t,M(this)))});if("string"==typeof e&&e)for(t=e.match(we)||[];n=this[u++];)if(i=M(n),r=1===n.nodeType&&(" "+i+" ").replace(pt," ")){for(s=0;o=t[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");a=oe.trim(r),i!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,u=0;if(oe.isFunction(e))return this.each(function(t){oe(this).removeClass(e.call(this,t,M(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(we)||[];n=this[u++];)if(i=M(n),r=1===n.nodeType&&(" "+i+" ").replace(pt," ")){for(s=0;o=t[s++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");a=oe.trim(r),i!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):oe.isFunction(e)?this.each(function(n){oe(this).toggleClass(e.call(this,n,M(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=oe(this),o=e.match(we)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=M(this),t&&Ee.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Ee.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+M(n)+" ").replace(pt," ").indexOf(t)>-1)return!0;return!1}});var dt=/\r/g;oe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=oe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,oe(this).val()):e,null==i?i="":"number"==typeof i?i+="":oe.isArray(i)&&(i=oe.map(i,function(e){return null==e?"":e+""})),t=oe.valHooks[this.type]||oe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=oe.valHooks[i.type]||oe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(dt,""):null==n?"":n)}}}),oe.extend({valHooks:{option:{get:function(e){return oe.trim(e.value)}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,s=o?null:[],a=o?i+1:r.length,u=i<0?a:o?i:0;u-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),oe.each(["radio","checkbox"],function(){oe.valHooks[this]={set:function(e,t){if(oe.isArray(t))return e.checked=oe.inArray(oe(e).val(),t)>-1}},re.checkOn||(oe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var ht=/^(?:focusinfocus|focusoutblur)$/;oe.extend(oe.event,{trigger:function(t,n,r,i){var o,s,a,u,c,l,f,p=[r||Q],d=ne.call(t,"type")?t.type:t,h=ne.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||Q,3!==r.nodeType&&8!==r.nodeType&&!ht.test(d+oe.event.triggered)&&(d.indexOf(".")>-1&&(h=d.split("."),d=h.shift(),h.sort()),c=d.indexOf(":")<0&&"on"+d,t=t[oe.expando]?t:new oe.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:oe.makeArray(n,[t]),f=oe.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!oe.isWindow(r)){for(u=f.delegateType||d,ht.test(u+d)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||Q)&&p.push(a.defaultView||a.parentWindow||e)}for(o=0;(s=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,l=(Ee.get(s,"events")||{})[t.type]&&Ee.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&Ce(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!Ce(r)||c&&oe.isFunction(r[d])&&!oe.isWindow(r)&&(a=r[c],a&&(r[c]=null),oe.event.triggered=d,r[d](),oe.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=oe.extend(new oe.Event,n,{type:e,isSimulated:!0});oe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}}),oe.fn.extend({trigger:function(e,t){return this.each(function(){oe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return oe.event.trigger(e,t,n,!0)}}),oe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){oe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),oe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),re.focusin="onfocusin"in e,re.focusin||oe.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){oe.event.simulate(t,e.target,oe.event.fix(e))};oe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Ee.access(r,t);i||r.addEventListener(e,n,!0),Ee.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Ee.access(r,t)-1;i?Ee.access(r,t,i):(r.removeEventListener(e,n,!0),Ee.remove(r,t))}}});var gt=e.location,vt=oe.now(),mt=/\?/;oe.parseJSON=function(e){return JSON.parse(e+"")},oe.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||oe.error("Invalid XML: "+t),n};var yt=/#.*$/,xt=/([?&])_=[^&]*/,bt=/^(.*?):[ \t]*([^\r\n]*)$/gm,wt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Tt=/^(?:GET|HEAD)$/,St=/^\/\//,Ct={},Et={},kt="*/".concat("*"),Nt=Q.createElement("a");Nt.href=gt.href,oe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:gt.href,type:"GET",isLocal:wt.test(gt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":kt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":oe.parseJSON,"text xml":oe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?B(B(e,oe.ajaxSettings),t):B(oe.ajaxSettings,e)},ajaxPrefilter:_(Ct),ajaxTransport:_(Et),ajax:function(t,n){function r(t,n,r,a){var c,f,y,x,w,S=n;2!==b&&(b=2,u&&e.clearTimeout(u),i=void 0,s=a||"",T.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(x=z(p,T,r)),x=X(p,x,T,c),c?(p.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(oe.lastModified[o]=w),w=T.getResponseHeader("etag"),w&&(oe.etag[o]=w)),204===t||"HEAD"===p.type?S="nocontent":304===t?S="notmodified":(S=x.state,f=x.data,y=x.error,c=!y)):(y=S,!t&&S||(S="error",t<0&&(t=0))),T.status=t,T.statusText=(n||S)+"",c?g.resolveWith(d,[f,S,T]):g.rejectWith(d,[T,S,y]),T.statusCode(m),m=void 0,l&&h.trigger(c?"ajaxSuccess":"ajaxError",[T,p,c?f:y]),v.fireWith(d,[T,S]),l&&(h.trigger("ajaxComplete",[T,p]),--oe.active||oe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,s,a,u,c,l,f,p=oe.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?oe(d):oe.event,g=oe.Deferred(),v=oe.Callbacks("once memory"),m=p.statusCode||{},y={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!a)for(a={};t=bt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)m[t]=[m[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return i&&i.abort(t),r(0,t),this}};if(g.promise(T).complete=v.add,T.success=T.done,T.error=T.fail,p.url=((t||p.url||gt.href)+"").replace(yt,"").replace(St,gt.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=oe.trim(p.dataType||"*").toLowerCase().match(we)||[""],null==p.crossDomain){c=Q.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=Nt.protocol+"//"+Nt.host!=c.protocol+"//"+c.host}catch(e){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=oe.param(p.data,p.traditional)),W(Ct,p,n,T),2===b)return T;l=oe.event&&p.global,l&&0===oe.active++&&oe.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Tt.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(mt.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=xt.test(o)?o.replace(xt,"$1_="+vt++):o+(mt.test(o)?"&":"?")+"_="+vt++)),p.ifModified&&(oe.lastModified[o]&&T.setRequestHeader("If-Modified-Since",oe.lastModified[o]),oe.etag[o]&&T.setRequestHeader("If-None-Match",oe.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",p.contentType),T.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+kt+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)T.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,T,p)===!1||2===b))return T.abort();w="abort";for(f in{success:1,error:1,complete:1})T[f](p[f]);if(i=W(Et,p,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,p]),2===b)return T;p.async&&p.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},p.timeout));try{b=1,i.send(y,r)}catch(e){if(!(b<2))throw e;r(-1,e)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return oe.get(e,t,n,"json")},getScript:function(e,t){return oe.get(e,void 0,t,"script")}}),oe.each(["get","post"],function(e,t){oe[t]=function(e,n,r,i){return oe.isFunction(n)&&(i=i||r,r=n,n=void 0),oe.ajax(oe.extend({url:e,type:t,dataType:i,data:n,success:r},oe.isPlainObject(e)&&e))}}),oe._evalUrl=function(e){return oe.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},oe.fn.extend({wrapAll:function(e){var t;return oe.isFunction(e)?this.each(function(t){oe(this).wrapAll(e.call(this,t))}):(this[0]&&(t=oe(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return oe.isFunction(e)?this.each(function(t){oe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=oe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=oe.isFunction(e);return this.each(function(n){oe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){oe.nodeName(this,"body")||oe(this).replaceWith(this.childNodes)}).end()}}),oe.expr.filters.hidden=function(e){return!oe.expr.filters.visible(e)},oe.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var jt=/%20/g,Lt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;oe.param=function(e,t){var n,r=[],i=function(e,t){t=oe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=oe.ajaxSettings&&oe.ajaxSettings.traditional),oe.isArray(e)||e.jquery&&!oe.isPlainObject(e))oe.each(e,function(){i(this.name,this.value)});else for(n in e)V(n,e[n],t,i);return r.join("&").replace(jt,"+")},oe.fn.extend({serialize:function(){return oe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=oe.prop(this,"elements");return e?oe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!oe(this).is(":disabled")&&Ot.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!qe.test(e))}).map(function(e,t){var n=oe(this).val();return null==n?null:oe.isArray(n)?oe.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}}),oe.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var qt={0:200,1223:204},$t=oe.ajaxSettings.xhr();re.cors=!!$t&&"withCredentials"in $t,re.ajax=$t=!!$t,oe.ajaxTransport(function(t){var n,r;if(re.cors||$t&&!t.crossDomain)return{send:function(i,o){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(s in i)a.setRequestHeader(s,i[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(qt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),oe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return oe.globalEval(e),e}}}),oe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),oe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=oe(" @@ -246,8 +247,8 @@
@@ -258,7 +259,7 @@

Introduction

We have language bindings in Shell, Ruby, and Python! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

-

This example API documentation page was created with Slate. Feel free to edit it and use it as a base for your own API's documentation.

+

This example API documentation page was created with Slate. Feel free to edit it and use it as a base for your own API's documentation.

Authentication

To authorize, use this code:

diff --git a/stylesheets/print.css b/stylesheets/print.css index 46e4f52..a67af4f 100644 --- a/stylesheets/print.css +++ b/stylesheets/print.css @@ -1 +1 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4{font-weight:bold}.content pre,.content code{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content pre,.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify,.toc-footer,.lang-selector,.search,#nav-button{display:none}.tocify-wrapper>img{margin:0 auto;display:block}.content{font-size:12px}.content pre,.content code{border:1px solid #999;border-radius:5px;font-size:0.8em}.content pre code{border:0}.content pre{padding:1.3em}.content code{padding:0.2em}.content table{border:1px solid #999}.content table tr{border-bottom:1px solid #999}.content table td,.content table th{padding:0.7em}.content p{line-height:1.5}.content a{text-decoration:none;color:#000}.content h1{font-size:2.5em;padding-top:0.5em;padding-bottom:0.5em;margin-top:1em;margin-bottom:21px;border:2px solid #ccc;border-width:2px 0;text-align:center}.content h2{font-size:1.8em;margin-top:2em;border-top:2px solid #ccc;padding-top:0.8em}.content h1+h2,.content h1+div+h2{border-top:none;padding-top:0;margin-top:0}.content h3,.content h4{font-size:0.8em;margin-top:1.5em;margin-bottom:0.8em;text-transform:uppercase}.content h5,.content h6{text-transform:uppercase}.content aside{padding:1em;border:1px solid #ccc;border-radius:5px;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4{font-weight:bold}.content pre,.content code{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content pre,.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify,.toc-footer,.lang-selector,.search,#nav-button{display:none}.tocify-wrapper>img{margin:0 auto;display:block}.content{font-size:12px}.content pre,.content code{border:1px solid #999;border-radius:5px;font-size:0.8em}.content pre code{border:0}.content pre{padding:1.3em}.content code{padding:0.2em}.content table{border:1px solid #999}.content table tr{border-bottom:1px solid #999}.content table td,.content table th{padding:0.7em}.content p{line-height:1.5}.content a{text-decoration:none;color:#000}.content h1{font-size:2.5em;padding-top:0.5em;padding-bottom:0.5em;margin-top:1em;margin-bottom:21px;border:2px solid #ccc;border-width:2px 0;text-align:center}.content h2{font-size:1.8em;margin-top:2em;border-top:2px solid #ccc;padding-top:0.8em}.content h1+h2,.content h1+div+h2{border-top:none;padding-top:0;margin-top:0}.content h3,.content h4{font-size:0.8em;margin-top:1.5em;margin-bottom:0.8em;text-transform:uppercase}.content h5,.content h6{text-transform:uppercase}.content aside{padding:1em;border:1px solid #ccc;border-radius:5px;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px} \ No newline at end of file diff --git a/stylesheets/screen.css b/stylesheets/screen.css index d2ca59a..4db33fd 100644 --- a/stylesheets/screen.css +++ b/stylesheets/screen.css @@ -1 +1 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6,html,body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-weight:bold}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.toc-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.toc-wrapper>.search:before{content:"\e607"}html,body{color:#333;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#F3F7F9;height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.toc-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#2E3336;font-size:13px;font-weight:bold}.toc-wrapper .lang-selector{display:none}.toc-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.toc-wrapper>img{display:block;max-width:100%}.toc-wrapper>.search{position:relative}.toc-wrapper>.search input{background:#2E3336;border-width:0 0 1px 0;border-color:#666;padding:6px 0 6px 20px;box-sizing:border-box;margin:10px 15px;width:200px;outline:none;color:#fff;border-radius:0}.toc-wrapper>.search:before{position:absolute;top:17px;left:15px;color:#fff}.toc-wrapper .logo{margin-bottom:0px}.toc-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background:#1E2224}.toc-wrapper .search-results.visible{height:30%;margin-bottom:1em}.toc-wrapper .search-results li{margin:1em 15px;line-height:1}.toc-wrapper .search-results a{color:#fff;text-decoration:none}.toc-wrapper .search-results a:hover{text-decoration:underline}.toc-wrapper ul,.toc-wrapper li{list-style:none;margin:0;padding:0;line-height:28px}.toc-wrapper li{color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:200ms}.toc-wrapper .toc-link.active{background-color:#0F75D4;color:#fff}.toc-wrapper .toc-link.active-parent{background-color:#1E2224;color:#fff}.toc-wrapper .toc-list-h2{display:none;background-color:#1E2224;font-weight:500}.toc-wrapper .toc-h2{padding-left:25px;font-size:12px}.toc-wrapper .toc-footer{padding:1em 0;margin-top:1em;border-top:1px dashed #666}.toc-wrapper .toc-footer li,.toc-wrapper .toc-footer a{color:#fff;text-decoration:none}.toc-wrapper .toc-footer a:hover{text-decoration:underline}.toc-wrapper .toc-footer li{font-size:0.8em;line-height:1.7;text-decoration:none}.toc-link,.toc-footer li{padding:0 15px 0 15px;display:block;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:130ms}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#000;text-decoration:none;font-weight:bold;opacity:0.7;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;padding:6px 6px 6px;background-color:rgba(243,247,249,0.7);transform-origin:0 0;transform:rotate(-90deg) translate(-100%, 0);border-radius:0 0 0 5px}#nav-button img{height:16px;vertical-align:bottom}#nav-button:hover{opacity:1}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:#F3F7F9;min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2E3336;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;border-bottom:5px solid #2E3336}.lang-selector{background-color:#1E2224;width:100%;font-weight:bold}.lang-selector a{display:block;float:left;color:#fff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#111;color:#fff}.lang-selector a.active{background-color:#2E3336;color:#fff}.lang-selector:after{content:'';clear:both;display:block}.content{-webkit-transform:translateZ(0);position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:25px;padding-top:0.5em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#fdfdfd}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:19px;margin-top:4em;margin-bottom:0;border-top:1px solid #ccc;padding-top:1.2em;padding-bottom:1.2em;background-image:linear-gradient(to bottom, rgba(255,255,255,0.2), rgba(255,255,255,0))}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:15px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2E3336;border-bottom:2px solid #F3F7F9}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #ccc;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #ccc}.content table tr:nth-child(odd)>td{background-color:white}.content table tr:nth-child(even)>td{background-color:#fbfcfd}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.6;margin-top:0}.content img{max-width:100%}.content code{background-color:rgba(0,0,0,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;background:#8fbcd4;line-height:1.6}.content aside.warning{background-color:#c97a7e}.content aside.success{background-color:#6ac174}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px}.content .search-highlight{padding:2px;margin:-2px;border-radius:4px;border:1px solid #F7E633;background:linear-gradient(to top left, #F7E633 0%, #F1D32F 100%)}.content pre,.content blockquote{background-color:#1E2224;color:#fff;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#fff;text-decoration:none;border-bottom:dashed 1px #ccc}.content pre{padding-top:2em;padding-bottom:2em;padding:2em 28px}.content blockquote>p{background-color:#191D1F;padding:13px 2em;color:#eee}@media (max-width: 930px){.toc-wrapper{left:-230px}.toc-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}.toc-link{padding-top:0.3em;padding-bottom:0.3em}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.toc-wrapper .lang-selector{display:block}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#1E2224} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6,html,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-weight:bold}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.toc-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.toc-wrapper>.search:before{content:"\e607"}html,body{color:#333;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#F3F7F9;height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.toc-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#2E3336;font-size:13px;font-weight:bold}.toc-wrapper .lang-selector{display:none}.toc-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.toc-wrapper>img{display:block;max-width:100%}.toc-wrapper>.search{position:relative}.toc-wrapper>.search input{background:#2E3336;border-width:0 0 1px 0;border-color:#666;padding:6px 0 6px 20px;box-sizing:border-box;margin:10px 15px;width:200px;outline:none;color:#fff;border-radius:0}.toc-wrapper>.search:before{position:absolute;top:17px;left:15px;color:#fff}.toc-wrapper .logo{margin-bottom:10px}.toc-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background:#1E2224}.toc-wrapper .search-results.visible{height:30%;margin-bottom:1em}.toc-wrapper .search-results li{margin:1em 15px;line-height:1}.toc-wrapper .search-results a{color:#fff;text-decoration:none}.toc-wrapper .search-results a:hover{text-decoration:underline}.toc-wrapper ul,.toc-wrapper li{list-style:none;margin:0;padding:0;line-height:28px}.toc-wrapper li{color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:200ms}.toc-wrapper .toc-link.active{background-color:#0F75D4;color:#fff}.toc-wrapper .toc-link.active-parent{background-color:#1E2224;color:#fff}.toc-wrapper .toc-list-h2{display:none;background-color:#1E2224;font-weight:500}.toc-wrapper .toc-h2{padding-left:25px;font-size:12px}.toc-wrapper .toc-footer{padding:1em 0;margin-top:1em;border-top:1px dashed #666}.toc-wrapper .toc-footer li,.toc-wrapper .toc-footer a{color:#fff;text-decoration:none}.toc-wrapper .toc-footer a:hover{text-decoration:underline}.toc-wrapper .toc-footer li{font-size:0.8em;line-height:1.7;text-decoration:none}.toc-link,.toc-footer li{padding:0 15px 0 15px;display:block;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:130ms}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#000;text-decoration:none;font-weight:bold;opacity:0.7;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;padding:6px 6px 6px;background-color:rgba(243,247,249,0.7);transform-origin:0 0;transform:rotate(-90deg) translate(-100%, 0);border-radius:0 0 0 5px}#nav-button img{height:16px;vertical-align:bottom}#nav-button:hover{opacity:1}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:#F3F7F9;min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2E3336;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;border-bottom:5px solid #2E3336}.lang-selector{background-color:#1E2224;width:100%;font-weight:bold}.lang-selector a{display:block;float:left;color:#fff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#111;color:#fff}.lang-selector a.active{background-color:#2E3336;color:#fff}.lang-selector:after{content:'';clear:both;display:block}.content{-webkit-transform:translateZ(0);position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:25px;padding-top:0.5em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#fdfdfd}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:19px;margin-top:4em;margin-bottom:0;border-top:1px solid #ccc;padding-top:1.2em;padding-bottom:1.2em;background-image:linear-gradient(to bottom, rgba(255,255,255,0.2), rgba(255,255,255,0))}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:15px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2E3336;border-bottom:2px solid #F3F7F9}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #ccc;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #ccc}.content table tr:nth-child(odd)>td{background-color:white}.content table tr:nth-child(even)>td{background-color:#fbfcfd}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.6;margin-top:0}.content img{max-width:100%}.content code{background-color:rgba(0,0,0,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;background:#8fbcd4;line-height:1.6}.content aside.warning{background-color:#c97a7e}.content aside.success{background-color:#6ac174}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px}.content .search-highlight{padding:2px;margin:-2px;border-radius:4px;border:1px solid #F7E633;background:linear-gradient(to top left, #F7E633 0%, #F1D32F 100%)}.content pre,.content blockquote{background-color:#1E2224;color:#fff;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#fff;text-decoration:none;border-bottom:dashed 1px #ccc}.content pre{padding-top:2em;padding-bottom:2em;padding:2em 28px}.content blockquote>p{background-color:#191D1F;padding:13px 2em;color:#eee}@media (max-width: 930px){.toc-wrapper{left:-230px}.toc-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}.toc-link{padding-top:0.3em;padding-bottom:0.3em}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.toc-wrapper .lang-selector{display:block}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#1E2224} \ No newline at end of file From c6d93e29e1ddde3520a5c45b4b841ae91d57fc2c Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 12:35:24 -0400 Subject: [PATCH 04/37] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..5dad3c5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +dev.beta.splitwise.com \ No newline at end of file From 2f950ae8d11da26f467216dbc3ba367af542260f Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 16:27:40 -0400 Subject: [PATCH 05/37] publish: Initial work porting API docs generated from commit eba67cf309227ee17f1b19c84dd6361ab380949d --- CNAME | 1 - images/favicon.ico | Bin 0 -> 32988 bytes index.html | 401 +++++++++++++++++++++++---------------------- 3 files changed, 202 insertions(+), 200 deletions(-) delete mode 100644 CNAME create mode 100644 images/favicon.ico diff --git a/CNAME b/CNAME deleted file mode 100644 index 5dad3c5..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -dev.beta.splitwise.com \ No newline at end of file diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..12f65d91615148c7b0cf5da120c2cc7c24aae5c5 GIT binary patch literal 32988 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 Iz`q#yA5CD<#{d8T literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 2bf38f1..2a6b572 100644 --- a/index.html +++ b/index.html @@ -199,10 +199,11 @@ + - + NAV @@ -212,10 +213,7 @@
From 2036f49c612e8034e6d361b693bc117d0461a47e Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 16:27:56 -0400 Subject: [PATCH 06/37] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..5dad3c5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +dev.beta.splitwise.com \ No newline at end of file From 720c33a7cfff2c3451d6466ee21a3550097989b3 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 16:34:51 -0400 Subject: [PATCH 07/37] publish: Fix weird word-break settings generated from commit 218ae23c20bdab96bfe32dc6530dd95ec67be279 --- CNAME | 1 - stylesheets/print.css | 2 +- stylesheets/screen.css | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 5dad3c5..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -dev.beta.splitwise.com \ No newline at end of file diff --git a/stylesheets/print.css b/stylesheets/print.css index a67af4f..0665c97 100644 --- a/stylesheets/print.css +++ b/stylesheets/print.css @@ -1 +1 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4{font-weight:bold}.content pre,.content code{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content pre,.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify,.toc-footer,.lang-selector,.search,#nav-button{display:none}.tocify-wrapper>img{margin:0 auto;display:block}.content{font-size:12px}.content pre,.content code{border:1px solid #999;border-radius:5px;font-size:0.8em}.content pre code{border:0}.content pre{padding:1.3em}.content code{padding:0.2em}.content table{border:1px solid #999}.content table tr{border-bottom:1px solid #999}.content table td,.content table th{padding:0.7em}.content p{line-height:1.5}.content a{text-decoration:none;color:#000}.content h1{font-size:2.5em;padding-top:0.5em;padding-bottom:0.5em;margin-top:1em;margin-bottom:21px;border:2px solid #ccc;border-width:2px 0;text-align:center}.content h2{font-size:1.8em;margin-top:2em;border-top:2px solid #ccc;padding-top:0.8em}.content h1+h2,.content h1+div+h2{border-top:none;padding-top:0;margin-top:0}.content h3,.content h4{font-size:0.8em;margin-top:1.5em;margin-bottom:0.8em;text-transform:uppercase}.content h5,.content h6{text-transform:uppercase}.content aside{padding:1em;border:1px solid #ccc;border-radius:5px;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4{font-weight:bold}.content pre,.content code{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content pre,.content code{word-break:normal;-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify,.toc-footer,.lang-selector,.search,#nav-button{display:none}.tocify-wrapper>img{margin:0 auto;display:block}.content{font-size:12px}.content pre,.content code{border:1px solid #999;border-radius:5px;font-size:0.8em}.content pre code{border:0}.content pre{padding:1.3em}.content code{padding:0.2em}.content table{border:1px solid #999}.content table tr{border-bottom:1px solid #999}.content table td,.content table th{padding:0.7em}.content p{line-height:1.5}.content a{text-decoration:none;color:#000}.content h1{font-size:2.5em;padding-top:0.5em;padding-bottom:0.5em;margin-top:1em;margin-bottom:21px;border:2px solid #ccc;border-width:2px 0;text-align:center}.content h2{font-size:1.8em;margin-top:2em;border-top:2px solid #ccc;padding-top:0.8em}.content h1+h2,.content h1+div+h2{border-top:none;padding-top:0;margin-top:0}.content h3,.content h4{font-size:0.8em;margin-top:1.5em;margin-bottom:0.8em;text-transform:uppercase}.content h5,.content h6{text-transform:uppercase}.content aside{padding:1em;border:1px solid #ccc;border-radius:5px;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px} \ No newline at end of file diff --git a/stylesheets/screen.css b/stylesheets/screen.css index 4db33fd..6928a07 100644 --- a/stylesheets/screen.css +++ b/stylesheets/screen.css @@ -1 +1 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6,html,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-weight:bold}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content code{word-break:break-all;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.toc-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.toc-wrapper>.search:before{content:"\e607"}html,body{color:#333;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#F3F7F9;height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.toc-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#2E3336;font-size:13px;font-weight:bold}.toc-wrapper .lang-selector{display:none}.toc-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.toc-wrapper>img{display:block;max-width:100%}.toc-wrapper>.search{position:relative}.toc-wrapper>.search input{background:#2E3336;border-width:0 0 1px 0;border-color:#666;padding:6px 0 6px 20px;box-sizing:border-box;margin:10px 15px;width:200px;outline:none;color:#fff;border-radius:0}.toc-wrapper>.search:before{position:absolute;top:17px;left:15px;color:#fff}.toc-wrapper .logo{margin-bottom:10px}.toc-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background:#1E2224}.toc-wrapper .search-results.visible{height:30%;margin-bottom:1em}.toc-wrapper .search-results li{margin:1em 15px;line-height:1}.toc-wrapper .search-results a{color:#fff;text-decoration:none}.toc-wrapper .search-results a:hover{text-decoration:underline}.toc-wrapper ul,.toc-wrapper li{list-style:none;margin:0;padding:0;line-height:28px}.toc-wrapper li{color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:200ms}.toc-wrapper .toc-link.active{background-color:#0F75D4;color:#fff}.toc-wrapper .toc-link.active-parent{background-color:#1E2224;color:#fff}.toc-wrapper .toc-list-h2{display:none;background-color:#1E2224;font-weight:500}.toc-wrapper .toc-h2{padding-left:25px;font-size:12px}.toc-wrapper .toc-footer{padding:1em 0;margin-top:1em;border-top:1px dashed #666}.toc-wrapper .toc-footer li,.toc-wrapper .toc-footer a{color:#fff;text-decoration:none}.toc-wrapper .toc-footer a:hover{text-decoration:underline}.toc-wrapper .toc-footer li{font-size:0.8em;line-height:1.7;text-decoration:none}.toc-link,.toc-footer li{padding:0 15px 0 15px;display:block;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:130ms}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#000;text-decoration:none;font-weight:bold;opacity:0.7;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;padding:6px 6px 6px;background-color:rgba(243,247,249,0.7);transform-origin:0 0;transform:rotate(-90deg) translate(-100%, 0);border-radius:0 0 0 5px}#nav-button img{height:16px;vertical-align:bottom}#nav-button:hover{opacity:1}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:#F3F7F9;min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2E3336;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;border-bottom:5px solid #2E3336}.lang-selector{background-color:#1E2224;width:100%;font-weight:bold}.lang-selector a{display:block;float:left;color:#fff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#111;color:#fff}.lang-selector a.active{background-color:#2E3336;color:#fff}.lang-selector:after{content:'';clear:both;display:block}.content{-webkit-transform:translateZ(0);position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:25px;padding-top:0.5em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#fdfdfd}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:19px;margin-top:4em;margin-bottom:0;border-top:1px solid #ccc;padding-top:1.2em;padding-bottom:1.2em;background-image:linear-gradient(to bottom, rgba(255,255,255,0.2), rgba(255,255,255,0))}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:15px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2E3336;border-bottom:2px solid #F3F7F9}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #ccc;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #ccc}.content table tr:nth-child(odd)>td{background-color:white}.content table tr:nth-child(even)>td{background-color:#fbfcfd}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.6;margin-top:0}.content img{max-width:100%}.content code{background-color:rgba(0,0,0,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;background:#8fbcd4;line-height:1.6}.content aside.warning{background-color:#c97a7e}.content aside.success{background-color:#6ac174}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px}.content .search-highlight{padding:2px;margin:-2px;border-radius:4px;border:1px solid #F7E633;background:linear-gradient(to top left, #F7E633 0%, #F1D32F 100%)}.content pre,.content blockquote{background-color:#1E2224;color:#fff;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#fff;text-decoration:none;border-bottom:dashed 1px #ccc}.content pre{padding-top:2em;padding-bottom:2em;padding:2em 28px}.content blockquote>p{background-color:#191D1F;padding:13px 2em;color:#eee}@media (max-width: 930px){.toc-wrapper{left:-230px}.toc-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}.toc-link{padding-top:0.3em;padding-bottom:0.3em}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.toc-wrapper .lang-selector{display:block}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#1E2224} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6,html,body{font-family:'Lato', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-weight:bold}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;font-size:12px;line-height:1.5}.content code{word-break:normal;-webkit-hyphens:manual;-ms-hyphens:manual;hyphens:manual}@font-face{font-family:'slate';src:url(../fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.toc-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.toc-wrapper>.search:before{content:"\e607"}html,body{color:#333;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#F3F7F9;height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.toc-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#2E3336;font-size:13px;font-weight:bold}.toc-wrapper .lang-selector{display:none}.toc-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.toc-wrapper>img{display:block;max-width:100%}.toc-wrapper>.search{position:relative}.toc-wrapper>.search input{background:#2E3336;border-width:0 0 1px 0;border-color:#666;padding:6px 0 6px 20px;box-sizing:border-box;margin:10px 15px;width:200px;outline:none;color:#fff;border-radius:0}.toc-wrapper>.search:before{position:absolute;top:17px;left:15px;color:#fff}.toc-wrapper .logo{margin-bottom:10px}.toc-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background:#1E2224}.toc-wrapper .search-results.visible{height:30%;margin-bottom:1em}.toc-wrapper .search-results li{margin:1em 15px;line-height:1}.toc-wrapper .search-results a{color:#fff;text-decoration:none}.toc-wrapper .search-results a:hover{text-decoration:underline}.toc-wrapper ul,.toc-wrapper li{list-style:none;margin:0;padding:0;line-height:28px}.toc-wrapper li{color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:200ms}.toc-wrapper .toc-link.active{background-color:#0F75D4;color:#fff}.toc-wrapper .toc-link.active-parent{background-color:#1E2224;color:#fff}.toc-wrapper .toc-list-h2{display:none;background-color:#1E2224;font-weight:500}.toc-wrapper .toc-h2{padding-left:25px;font-size:12px}.toc-wrapper .toc-footer{padding:1em 0;margin-top:1em;border-top:1px dashed #666}.toc-wrapper .toc-footer li,.toc-wrapper .toc-footer a{color:#fff;text-decoration:none}.toc-wrapper .toc-footer a:hover{text-decoration:underline}.toc-wrapper .toc-footer li{font-size:0.8em;line-height:1.7;text-decoration:none}.toc-link,.toc-footer li{padding:0 15px 0 15px;display:block;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:#fff;transition-property:background;transition-timing-function:linear;transition-duration:130ms}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#000;text-decoration:none;font-weight:bold;opacity:0.7;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;padding:6px 6px 6px;background-color:rgba(243,247,249,0.7);transform-origin:0 0;transform:rotate(-90deg) translate(-100%, 0);border-radius:0 0 0 5px}#nav-button img{height:16px;vertical-align:bottom}#nav-button:hover{opacity:1}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:#F3F7F9;min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2E3336;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;border-bottom:5px solid #2E3336}.lang-selector{background-color:#1E2224;width:100%;font-weight:bold}.lang-selector a{display:block;float:left;color:#fff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#111;color:#fff}.lang-selector a.active{background-color:#2E3336;color:#fff}.lang-selector:after{content:'';clear:both;display:block}.content{-webkit-transform:translateZ(0);position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:25px;padding-top:0.5em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#fdfdfd}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:19px;margin-top:4em;margin-bottom:0;border-top:1px solid #ccc;padding-top:1.2em;padding-bottom:1.2em;background-image:linear-gradient(to bottom, rgba(255,255,255,0.2), rgba(255,255,255,0))}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:15px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2E3336;border-bottom:2px solid #F3F7F9}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #ccc;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #ccc}.content table tr:nth-child(odd)>td{background-color:white}.content table tr:nth-child(even)>td{background-color:#fbfcfd}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.6;margin-top:0}.content img{max-width:100%}.content code{background-color:rgba(0,0,0,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;background:#8fbcd4;line-height:1.6}.content aside.warning{background-color:#c97a7e}.content aside.success{background-color:#6ac174}.content aside:before{vertical-align:middle;padding-right:0.5em;font-size:14px}.content .search-highlight{padding:2px;margin:-2px;border-radius:4px;border:1px solid #F7E633;background:linear-gradient(to top left, #F7E633 0%, #F1D32F 100%)}.content pre,.content blockquote{background-color:#1E2224;color:#fff;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#fff;text-decoration:none;border-bottom:dashed 1px #ccc}.content pre{padding-top:2em;padding-bottom:2em;padding:2em 28px}.content blockquote>p{background-color:#191D1F;padding:13px 2em;color:#eee}@media (max-width: 930px){.toc-wrapper{left:-230px}.toc-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}.toc-link{padding-top:0.3em;padding-bottom:0.3em}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.toc-wrapper .lang-selector{display:block}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#1E2224} \ No newline at end of file From e4d84404ff4f0d6dda640027e6ed3ab6f8f2167b Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 24 Jul 2017 16:39:32 -0400 Subject: [PATCH 08/37] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..5dad3c5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +dev.beta.splitwise.com \ No newline at end of file From 362aab004f65d61d1641433b4ce4f9298764144a Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 10:22:22 -0400 Subject: [PATCH 09/37] publish: Add CNAME record generated from commit 679f5b088e3891775ffb77481c71cc05903080ea --- CNAME => CNAME.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CNAME => CNAME.txt (100%) diff --git a/CNAME b/CNAME.txt similarity index 100% rename from CNAME rename to CNAME.txt From 592837835abda3c8756cec0c943c838ac3e3a0e1 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 10:31:27 -0400 Subject: [PATCH 10/37] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..5dad3c5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +dev.beta.splitwise.com \ No newline at end of file From 2da94839743c20da1f3f46a426e805cd2b86ff48 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 10:32:30 -0400 Subject: [PATCH 11/37] publish: Add CNAME record generated from commit 679f5b088e3891775ffb77481c71cc05903080ea --- CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 5dad3c5..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -dev.beta.splitwise.com \ No newline at end of file From 05c349bc3ec5897a068e2424d5e168a54849af12 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 10:37:58 -0400 Subject: [PATCH 12/37] publish: Add CNAME file generated from commit 0f52f0830e48676e681df2b8db53df3441d06a5d --- CNAME.txt => CNAME | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CNAME.txt => CNAME (100%) diff --git a/CNAME.txt b/CNAME similarity index 100% rename from CNAME.txt rename to CNAME From 09334ea2181e113f0073f9bdc90b6f4ab0401017 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 10:42:47 -0400 Subject: [PATCH 13/37] publish: Add 'incomplete' note generated from commit 524e0e23e7b3e9430918b6b4e7d85402bd69e805 --- index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 2a6b572..1b4064f 100644 --- a/index.html +++ b/index.html @@ -449,7 +449,9 @@

update_user/:id

POST https://www.splitwise.com/api/v3.0/update_user/:id

Update a specific user. A user can edit anything about their own account, and may edit the first_name, last_name, and email for any acquaintances who have not logged in yet.

-

Groups

get_groups

get_group/:id

create_group

delete_group/:id

undelete_group/:id

add_user_to_group

remove_user_from_group

Friends

get_friends

get_friend/:id

create_friend

create_friends

delete_friend/:id

Expenses

get_expenses

get_expense/:id

create_expense

update_expense/:id

delete_expense/:id

undelete_expense/:id

Comments

get_comments?expense_id=

Notifications

get_notifications

Other API calls

get_currencies

get_categories

parse_sentence

Errors

+

Groups

+

We're still in the process of creating this new API documentation site, so not all API calls are documented here yet. You can find our old API docs here, with basic information about all the API endpoints below.

+

get_groups

get_group/:id

create_group

delete_group/:id

undelete_group/:id

add_user_to_group

remove_user_from_group

Friends

get_friends

get_friend/:id

create_friend

create_friends

delete_friend/:id

Expenses

get_expenses

get_expense/:id

create_expense

update_expense/:id

delete_expense/:id

undelete_expense/:id

Comments

get_comments?expense_id=

Notifications

get_notifications

Other API calls

get_currencies

get_categories

parse_sentence

Errors

In general, the Splitwise API returns the following error codes:

From ca64031417ef0e3e1afe787ef43b85195a4565e3 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Tue, 25 Jul 2017 11:04:28 -0400 Subject: [PATCH 14/37] publish: Update README and index generated from commit cb381e5062523838f7d119bd4036e3b0304b5683 --- index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.html b/index.html index 1b4064f..75dc20f 100644 --- a/index.html +++ b/index.html @@ -370,6 +370,8 @@

Introduction

Hey there! We're glad you're interested in the Splitwise API. This documentation will help you to fetch information on users, expenses, groups, and much more.

+ +

If something in the API is confusing you, open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

Authentication

require 'oauth'
 
 client = OAuth2::Client.new(

From 2bd19b6141982ed1755a06d1b5a2f07c7c083568 Mon Sep 17 00:00:00 2001
From: Ryan Laughlin 
Date: Tue, 25 Jul 2017 11:18:22 -0400
Subject: [PATCH 15/37] publish: Fix URLs in OAuth example

generated from commit 45fae5f255a1047ef7a3ea8545e81ddc74d2e2ec
---
 index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index 75dc20f..cf11028 100644
--- a/index.html
+++ b/index.html
@@ -371,18 +371,18 @@
         

Introduction

Hey there! We're glad you're interested in the Splitwise API. This documentation will help you to fetch information on users, expenses, groups, and much more.

-

If something in the API is confusing you, open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

+

If something in the API is confusing you, you can open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

Authentication

require 'oauth'
 
 client = OAuth2::Client.new(
   'consumer_key',
   'consumer_secret',
-  site: 'http://localhost.com:3000/'
+  site: 'https://www.splitwise.com/'
 )
 client.auth_code.authorize_url(
   redirect_uri: 'http://localhost:8080/oauth2/callback'
 )
-# => "https://example.org/oauth/authorization?response_type=code&client_id=consumer_key&redirect_uri=http://localhost:8080/oauth2/callback"
+# => "https://www.splitwise.com/oauth/authorization?response_type=code&client_id=consumer_key&redirect_uri=http://localhost:8080/oauth2/callback"
 
 # after opening the above URL and clicking "Authorize", the user is redirected to:
 # http://localhost:8080/oauth2/callback?code=authorization_code

From b39054c6c3ad8030e21e8cfbab94282c4aeca867 Mon Sep 17 00:00:00 2001
From: Ryan Laughlin 
Date: Tue, 25 Jul 2017 11:51:54 -0400
Subject: [PATCH 16/37] publish: Fix oauth2 gem reference

generated from commit 4987c86b60baf56c37e5e06c899b5fcfa16cca91
---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index cf11028..d8611ab 100644
--- a/index.html
+++ b/index.html
@@ -372,7 +372,7 @@ 

Introduction

Hey there! We're glad you're interested in the Splitwise API. This documentation will help you to fetch information on users, expenses, groups, and much more.

If something in the API is confusing you, you can open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

-

Authentication

require 'oauth'
+

Authentication

require 'oauth2'
 
 client = OAuth2::Client.new(
   'consumer_key',

From 4d64cf633cc1561bdeec7cd58b966d0b960dc577 Mon Sep 17 00:00:00 2001
From: Jess Hottenstein 
Date: Thu, 5 Apr 2018 16:40:11 -0400
Subject: [PATCH 17/37] publish: Merge pull request #2 from
 splitwise/jess/update-api-docs

generated from commit 3181bd012e6d18c794db89314762bdc504d77247
---
 index.html | 948 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 911 insertions(+), 37 deletions(-)

diff --git a/index.html b/index.html
index d8611ab..7008045 100644
--- a/index.html
+++ b/index.html
@@ -203,7 +203,7 @@
       
   
 
-  
+  
     
       
         NAV
@@ -213,7 +213,9 @@
     
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
first_nameStringUser's first name
last_nameStringUser's last name
emailStringUser's email address
passwordStringUser's password
localeStringUser's locale (ISO 639-1)
date_formatStringPreferred Date Format (e.g. MM/DD/YYYY or
default_currencyStringUser's default currency (ISO 4217)
default_group_idStringDefault Group ID (set -1 for none)
notification_settingsObject
{ notification_type: bool, ... }
Set notification types on or off: added_as_friend, added_to_group, expense_added, expense_updated, bills, payments, monthly_summary, announcements,}

Groups

-

We're still in the process of creating this new API documentation site, so not all API calls are documented here yet. You can find our old API docs here, with basic information about all the API endpoints below.

-

get_groups

get_group/:id

create_group

delete_group/:id

undelete_group/:id

add_user_to_group

remove_user_from_group

Friends

get_friends

get_friend/:id

create_friend

create_friends

delete_friend/:id

Expenses

get_expenses

get_expense/:id

create_expense

update_expense/:id

delete_expense/:id

undelete_expense/:id

Comments

get_comments?expense_id=

Notifications

get_notifications

Other API calls

get_currencies

get_categories

parse_sentence

Errors

+

A Group represents a collection of users who share expenses together. For example, some users use a Group to aggregate expenses related to an apartment. Others use it to represent a trip. Expenses assigned to a group are split among the users of that group. Importantly, two users in a Group can also have expenses with one another outside of the Group.

+

get_groups

+
+

Example Response:

+
+
{
+  "groups":[
+    // Non-group expenses are listed in a group with id 0
+    {  
+      "id":0,
+      "name":"Non-group expenses",
+      "updated_at": "2017-08-30T20:31:51Z", //<current time in UTC>
+      "members":[ 
+        {
+            "id": 1,
+            "first_name": "Ada",
+            "last_name": "Lovelace",
+            "picture": {
+              "small": "image_url",
+              "medium": "image_url",
+              "large": "image_url"
+            },
+            "email": "ada@example.com",
+            "registration_status": "confirmed",          //'dummy', 'invited', or 'confirmed'
+            "balance":[  
+               {  
+                  "currency_code":"AED",
+                  "amount":"0.0"
+               },
+               {  
+                  "currency_code":"ALL",
+                  "amount":"0.0"
+               },
+               {  
+                  "currency_code":"EUR",
+                  "amount":"-5.0"
+               },
+               {  
+                  "currency_code":"USD",
+                  "amount":"3730.5"
+               } //, ...
+            ]
+         } // , ...  
+      ], 
+      "simplify_by_default":false,
+      "original_debts":[  
+         {  
+            "from": 12345,          // user_id
+            "to": 54321,            // user_id
+            "amount":"414.5",       // amount as a decimal string
+            "currency_code":"USD"   // three-letter currency code
+         } // , ...
+      ]
+    },
+    {  
+      "id":3018312,
+      "name":"a test group",
+      "updated_at":"2017-08-30T20:31:51Z",
+      "members":[ /* <User object> , <User object>, ... */ ], 
+      "simplify_by_default":false,
+      "original_debts":[  
+         {  
+            "from": 12345,          // user_id
+            "to": 54321,            // user_id
+            "amount":"414.5",       // amount as a decimal string
+            "currency_code":"USD"   // three-letter currency code
+         } // , ...
+      ],
+      "simplified_debts":[  
+         {  
+            "from": 12345,          // user_id
+            "to": 54321,            // user_id
+            "amount":"414.5",       // amount as a decimal string
+            "currency_code":"USD"   // three-letter currency code
+         } // , ...
+      ],
+      "whiteboard":"a message!",
+      "group_type":"apartment",
+      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
+    } // , ...
+}
+
+

GET https://www.splitwise.com/api/v3.0/get_groups

+ +

Returns list of all groups that the current_user belongs to

+

get_group/:id

+
+

Example Response:

+
+
{
+  "group":
+    {  
+      "id":3018312,
+      "name":"a test group",
+      "updated_at":"2017-08-30T20:31:51Z",
+      "members":[ /* <User object> , <User object>, ... */ ], 
+      "simplify_by_default":false,
+      "original_debts":[  
+         {  
+            "from": 12345,          // user_id
+            "to": 54321,            // user_id
+            "amount":"414.5",       // amount as a decimal string
+            "currency_code":"USD"   // three-letter currency code
+         } // , ...
+      ],
+      "simplified_debts":[  
+         {  
+            "from": 12345,          // user_id
+            "to": 54321,            // user_id
+            "amount":"414.5",       // amount as a decimal string
+            "currency_code":"USD"   // three-letter currency code
+         } // , ...
+      ],
+      "whiteboard":"a message!",
+      "group_type":"apartment",
+      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
+    }
+}
+
+

GET https://www.splitwise.com/api/v3.0/get_group/:id

+ +

Returns information about the specified group (as long as the current user has access)

+

create_group

+
+

Example Response:

+
+
{
+  "group":
+    {  
+      "id":3018312,
+      "name":"a test group",
+      "updated_at":"2017-08-30T20:31:51Z",
+      "members":[ /* <User object> , <User object>, ... */ ], 
+      "simplify_by_default":false,
+      "original_debts":[],
+      "simplified_debts":[],
+      "whiteboard":"a message!",
+      "group_type":"apartment",
+      "invite_link":"https://www.splitwise.com/join/abcdef1232456",
+      // or if create failed
+      "errors": ["something went wrong", "with your group"]
+    }
+}
+
+

POST https://secure.splitwise.com/api/v3.0/create_group

+ +

Create a new group. Adds the current user to the group by default.

+

Query Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
nameStringGroup name
whiteboardStringText to display on the group whiteboard
group_typeStringWhat the group is being used for (apartment, trip, couple, etc.)
simplify_by_defaultBooleanTurn on simplify debts?
users_0_first_nameStringAdd a user's first name
users_0_last_nameStringAdd a user's last name
users_0_emailStringAdd a user's email
users_1_user_idIntegerAdd an existing user by id
+

delete_group/:id

+
+

Example Response:

+
+
{
+  "success": true // or false
+}
+
+

POST https://secure.splitwise.com/api/v3.0/delete_group/:id

+ +

Delete an existing group. Destroys all associated records (expenses, etc.)

+

undelete_group/:id

+
+

Example Response:

+
+
+

``

+ +

Desc:

+

add_user_to_group

+
+

Example Response:

+
+
{
+  "success": true, //or false
+  "errors": ["any errors"]
+}
+
+

POST https://secure.splitwise.com/api/v3.0/add_user_to_group

+ +

Add a user to a group

+

Query Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
group_idIntegerExisting group to add the user to
first_nameStringAdd a user's first name
last_nameStringAdd a user's last name
emailStringAdd a user's email
user_idIntegerAdd an existing user by id
+

remove_user_from_group

+
+

Example Response:

+
+
{
+  "success": true, //or false
+  "errors": ["any errors"]
+}
+
+

POST https://secure.splitwise.com/api/v3.0/remove_user_from_group

+ +

Remove a user from a group if their balance is 0

+

Query Parameters

+ + + + + + + + + + + + + + + + + +
ParameterTypeDescription
group_idIntegerGroup to remove the user from
user_idIntegerId of user to remove
+

Friends

+

Friends of a user are other users with whom the user splits expenses. To split expenses with one another, users must be friends. Users in a group together are automatically made friends. Many of the calls containing the word “friend” return objects representing friends of the current user. In addition to containing the user data, these objects contain information about the current user's balance with each friend.

+

get_friends

+
+

Example Response:

+
+
{
+  "friends":[
+    {
+      "id": 1,
+      "first_name": "Ada",
+      "last_name": "Lovelace",
+      "picture": {
+        "small": "image_url",
+        "medium": "image_url",
+        "large": "image_url"
+      },
+      "balance":[
+        {
+          "currency_code":"USD",
+          "amount":"-1794.5"
+        },
+        {
+          "currency_code":"AED",
+          "amount":"7.5"
+        }
+      ],
+      "groups":[ // group objects only include group balances with that friend
+        {
+          "group_id":3018312,
+          "balance":[
+            {
+              "currency_code":"USD",
+              "amount":"414.5"
+            }
+          ]
+        },
+        {
+          "group_id":2830896,
+          "balance":[
+          ]
+        },
+        {
+          "group_id":0,
+          "balance":[
+            {
+              "currency_code":"USD",
+              "amount":"-2209.0"
+            },
+            {
+              "currency_code":"AED",
+              "amount":"7.5"
+            }
+          ]
+        }
+      ],
+      "updated_at":"2017-11-30T09:41:09Z"
+    } // , ...
+  ]
+}
+
+

GET https://www.splitwise.com/api/v3.0/get_friends

+ +

Returns a list of the current user's friends.

+

get_friend/:id

+
+

Example Response:

+
+
{
+  "friend":
+    {
+      "id": 1,
+      "first_name": "Ada",
+      "last_name": "Lovelace",
+      "picture": {
+        "small": "image_url",
+        "medium": "image_url",
+        "large": "image_url"
+      },
+      "registration_status": "confirmed", // or 'dummy' or 'invited'
+      "balance":[
+        {
+          "currency_code":"USD",
+          "amount":"-1794.5"
+        },
+        {
+          "currency_code":"AED",
+          "amount":"7.5"
+        }
+      ],
+      "groups":[
+        {
+          "group_id":3018312,
+          "balance":[
+            {
+              "currency_code":"USD",
+              "amount":"414.5"
+            }
+          ]
+        },
+        {
+          "group_id":2830896,
+          "balance":[
+          ]
+        },
+        {
+          "group_id":0,
+          "balance":[
+            {
+              "currency_code":"USD",
+              "amount":"-2209.0"
+            },
+            {
+              "currency_code":"AED",
+              "amount":"7.5"
+            }
+          ]
+        }
+      ],
+      "updated_at":"2017-11-30T09:41:09Z"
+    }
+  }
+}
+
+

GET https://secure.splitwise.com/api/v3.0/get_group/:id

+ +

Get detailed info on one group that current_user belongs to

+

create_friend

+
+

Example Response: same as get_friend response

+
+ +

POST https://secure.splitwise.com/api/v3.0/create_friend

+ +

Makes the current user a friend of a user specified with the url parameters user_email, user_first_name, and, optionally, user_last_name.

+

Query Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
user_first_nameStringAdd a user's first name
user_last_nameStringAdd a user's last name
user_emailStringAdd a user's email (or find an existing user by email)
+

create_friends

+
+

Example Response: same as get_friends response

+
+ +

POST https://secure.splitwise.com/api/v3.0/create_friends

+ +

Make the current user a friend of the specified users.

+

Query Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterTypeDescription
friends_0_user_first_nameStringAdd a user's first name
friends_0_user_last_nameStringAdd a user's last name
friends_0_user_emailStringAdd a user's email (or find an existing user by email)
friends_1_user_emailStringFind an existing user by email)
+

delete_friend/:id

+
+

Example Response:

+
+
{
+  "success": true, //or false
+  "errors": ["any errors"]
+}
+
+

POST https://secure.splitwise.com/api/v3.0/delete_friend/:id

+ +

Given a friend ID, break off the friendship between the current user and the specified user.

+

Expenses

get_expenses

get_expense/:id

create_expense

update_expense/:id

delete_expense/:id

undelete_expense/:id

Comments

get_comments?expense_id=

Notifications

get_notifications

Other API calls

get_currencies

{
+  "currencies":[
+    { "currency_code":"USD", "unit":"$" },
+    { "currency_code":"ARS", "unit":"$" },
+    { "currency_code":"AUD", "unit":"$" },
+    { "currency_code":"EUR", "unit":"€" },
+    { "currency_code":"BRL", "unit":"R$" },
+    { "currency_code":"CAD", "unit":"$" },
+    { "currency_code":"CNY", "unit":"¥" },
+    { "currency_code":"DKK", "unit":"kr" },
+    { "currency_code":"GBP", "unit":"£" },
+    { "currency_code":"INR", "unit":"₹" },
+    { "currency_code":"ILS", "unit":"₪" },
+    { "currency_code":"JPY", "unit":"¥" },
+    { "currency_code":"MXN", "unit":"$" },
+    { "currency_code":"NZD", "unit":"$" },
+    { "currency_code":"PHP", "unit":"₱" },
+    { "currency_code":"RUB", "unit":"₽" },
+    { "currency_code":"SGD", "unit":"$" },
+    { "currency_code":"SEK", "unit":"kr" },
+    { "currency_code":"CHF", "unit":"Fr." },
+    { "currency_code":"MYR", "unit":"RM" },
+    { "currency_code":"RON", "unit":"RON" },
+    { "currency_code":"ZAR", "unit":"R" },
+    { "currency_code":"LKR", "unit":"Rs. " },
+    { "currency_code":"NAD", "unit":"$" },
+    { "currency_code":"SAR", "unit":"SR" },
+    { "currency_code":"AED", "unit":"DH" },
+    { "currency_code":"PLN", "unit":"PLN" },
+    { "currency_code":"HRK", "unit":"HRK" },
+    { "currency_code":"PKR", "unit":"Rs" },
+    { "currency_code":"TWD", "unit":"NT$" },
+    { "currency_code":"VEF", "unit":"Bs" },
+    { "currency_code":"HUF", "unit":"Ft" },
+    { "currency_code":"CLP", "unit":"$" },
+    { "currency_code":"BDT", "unit":"Tk" },
+    { "currency_code":"CZK", "unit":"Kč" },
+    { "currency_code":"COP", "unit":"$" },
+    { "currency_code":"TRY", "unit":"TL" },
+    { "currency_code":"KRW", "unit":"₩" },
+    { "currency_code":"BOB", "unit":"Bs." },
+    { "currency_code":"VND", "unit":"₫" },
+    { "currency_code":"NOK", "unit":"kr" },
+    { "currency_code":"EGP", "unit":"E£" },
+    { "currency_code":"HKD", "unit":"$" },
+    { "currency_code":"THB", "unit":"฿" },
+    { "currency_code":"KES", "unit":"KSh" },
+    { "currency_code":"IDR", "unit":"Rp " },
+    { "currency_code":"ISK", "unit":"kr" },
+    { "currency_code":"BTC", "unit":"฿" },
+    { "currency_code":"UAH", "unit":"₴" },
+    { "currency_code":"MVR", "unit":"MVR" },
+    { "currency_code":"OMR", "unit":"OMR" },
+    { "currency_code":"YER", "unit":"YER" },
+    { "currency_code":"IRR", "unit":"IRR" },
+    { "currency_code":"QAR", "unit":"QR" },
+    { "currency_code":"BHD", "unit":"BD" },
+    { "currency_code":"TZS", "unit":"TZS" },
+    { "currency_code":"RSD", "unit":"RSD" },
+    { "currency_code":"ETB", "unit":"Br" },
+    { "currency_code":"BGN", "unit":"BGN" },
+    { "currency_code":"FJD", "unit":"$" },
+    { "currency_code":"JMD", "unit":"J$" },
+    { "currency_code":"UYU", "unit":"$" },
+    { "currency_code":"GTQ", "unit":"Q" },
+    { "currency_code":"NPR", "unit":"Rs. " },
+    { "currency_code":"PEN", "unit":"S/. " },
+    { "currency_code":"DJF", "unit":"Fdj " },
+    { "currency_code":"LTL", "unit":"Lt " },
+    { "currency_code":"MKW", "unit":"MK" },
+    { "currency_code":"KWD", "unit":"KWD" },
+    { "currency_code":"CRC", "unit":"₡" },
+    { "currency_code":"DOP", "unit":"$" },
+    { "currency_code":"NGN", "unit":"₦" },
+    { "currency_code":"JOD", "unit":"JOD" },
+    { "currency_code":"MAD", "unit":"MAD" },
+    { "currency_code":"RWF", "unit":"FRw" },
+    { "currency_code":"UGX", "unit":"USh" },
+    { "currency_code":"AOA", "unit":"Kz" },
+    { "currency_code":"XAF", "unit":"CFA" },
+    { "currency_code":"XOF", "unit":"CFA" },
+    { "currency_code":"CMG", "unit":"CMg" },
+    { "currency_code":"ANG", "unit":"NAf" },
+    { "currency_code":"ALL", "unit":"L" },
+    { "currency_code":"PYG", "unit":"₲" },
+    { "currency_code":"KYD", "unit":"CI$" },
+    { "currency_code":"KZT", "unit":"₸" },
+    { "currency_code":"BAM", "unit":"KM" },
+    { "currency_code":"AWG", "unit":"Afl." },
+    { "currency_code":"BIF", "unit":"FBu" },
+    { "currency_code":"MKD", "unit":"ден" },
+    { "currency_code":"XPF", "unit":"F" },
+    { "currency_code":"GEL", "unit":"GEL" },
+    { "currency_code":"TND", "unit":"DT" },
+    { "currency_code":"MZN", "unit":"MT" },
+    { "currency_code":"BYR", "unit":"BYR" },
+    { "currency_code":"TTD", "unit":"TT$" },
+    { "currency_code":"XCD", "unit":"EC$" },
+    { "currency_code":"LBP", "unit":"ل.ل" },
+    { "currency_code":"LAK", "unit":"₭" },
+    { "currency_code":"MOP", "unit":"MOP$" },
+    { "currency_code":"GHS", "unit":"GH₵" },
+    { "currency_code":"UZS", "unit":"UZS" },
+    { "currency_code":"NIO", "unit":"C$" },
+    { "currency_code":"AZN", "unit":"m." },
+    { "currency_code":"ZMW", "unit":"ZMW" },
+    { "currency_code":"SZL", "unit":"E" },
+    { "currency_code":"BWP", "unit":"P" },
+    { "currency_code":"MMK", "unit":"K" },
+    { "currency_code":"CVE", "unit":"$" },
+    { "currency_code":"MUR", "unit":"₨" },
+    { "currency_code":"SCR", "unit":"SR" },
+    { "currency_code":"KHR", "unit":"៛" },
+    { "currency_code":"CUP", "unit":"$" },
+    { "currency_code":"CUC", "unit":"CUC$" },
+    { "currency_code":"STD", "unit":"Db" },
+    { "currency_code":"HNL", "unit":"L" },
+    { "currency_code":"AMD", "unit":"AMD" },
+    { "currency_code":"MDL", "unit":"MDL" },
+    { "currency_code":"MNT", "unit":"₮" },
+    { "currency_code":"BYN", "unit":"Br" },
+    { "currency_code":"MGA", "unit":"Ar" },
+    { "currency_code":"BBD", "unit":"$" },
+    { "currency_code":"KMF", "unit":"CF" },
+    { "currency_code":"IQD", "unit":"IQD" },
+    { "currency_code":"BZD", "unit":"BZ$" },
+    { "currency_code":"GYD", "unit":"G$" },
+    { "currency_code":"SRD", "unit":"$" },
+    { "currency_code":"KGS", "unit":"KGS" },
+    { "currency_code":"TJS", "unit":"TJS" },
+    { "currency_code":"VUV", "unit":"Vt" },
+    { "currency_code":"BTN", "unit":"Nu." },
+    { "currency_code":"WST", "unit":"WS$" }
+  ] } 
+
+

GET https://secure.splitwise.com/api/v3.0/get_currencies

+ +

Returns a list of all currencies allowed by the system. These are mostly ISO 4217 codes, but we do sometimes use pending codes or unofficial, colloquial codes (like BTC instead of XBT for Bitcoin)

+

get_categories

parse_sentence

Errors

In general, the Splitwise API returns the following error codes:

@@ -503,7 +1375,9 @@

Data use

From d9af938d041a7eb14273eb89a166b6a1ade842f4 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Thu, 23 Aug 2018 11:11:12 -0400 Subject: [PATCH 18/37] publish: Merge pull request #9 from splitwise/rofreg/oauth2-bearer-example-fix generated from commit c0e7486eec2764e7eff31a11aa5def726e140276 --- index.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 7008045..841d5ce 100644 --- a/index.html +++ b/index.html @@ -383,7 +383,7 @@

Authentication

CONSUMER_SECRET = <fill in your secret>
 TOKEN_URL = 'https://secure.splitwise.com/oauth/token'
 AUTHORIZE_URL = 'https://secure.splitwise.com/oauth/authorize'
-MY_CALLBACK_URL = 'http://localhost:8080/callback'
+MY_CALLBACK_URL = 'http://localhost:8080/callback' # Make sure to set the redirect URL that you registered with Splitwise when creating your app so that it matches this URL
 BASE_SITE = 'https://secure.splitwise.com/'
 
 client = OAuth2::Client.new(CONSUMER_KEY, CONSUMER_SECRET, site: BASE_SITE)
@@ -407,6 +407,15 @@ 

Authentication

authorization_code,
     redirect_uri: MY_CALLBACK_URL
   )
+
+  # This is your actual bearer token! Your bearer token will be printed out to the console.
+  # You can then use that bearer token to make additional API requests to Splitwise. For example:
+  # curl -XGET "http://secure.splitwise.com/api/v3.0/get_current_user" -H "Authorization: Bearer YOUR_TOKEN"
+  puts "***"
+  puts "Here is your OAuth Bearer token!"
+  pp access_token.to_hash
+  puts "***"
+
   response = access_token.get('/api/v3.0/get_current_user')
   res.body = response.body
 end

From 9eac58e4c0846d2f2930227dc39d9f1c2b1872c1 Mon Sep 17 00:00:00 2001
From: Ryan Laughlin 
Date: Tue, 30 Oct 2018 14:24:58 -0400
Subject: [PATCH 19/37] publish: Add links to 3rd-party SDKs

generated from commit 6d28ec021f7bf5e84c482267184cdd5829fc50b6
---
 index.html                  | 127 ++++++++++++++++++++++++------------
 javascripts/all.js          |  28 ++++----
 javascripts/all_nosearch.js |  12 ++--
 stylesheets/print.css       |   2 +-
 stylesheets/screen.css      |   2 +-
 5 files changed, 106 insertions(+), 65 deletions(-)

diff --git a/index.html b/index.html
index 841d5ce..f618370 100644
--- a/index.html
+++ b/index.html
@@ -225,6 +225,9 @@
           
  • Introduction
  • +
  • + Third-party SDKs +
  • Authentication
  • @@ -376,8 +379,37 @@

    Introduction

    If something in the API is confusing you, you can open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

    -

    Authentication

    #!/usr/bin/env ruby
    +

    Third-party SDKs

    +

    The development community has built a number of unofficial, third-party SDKs for Splitwise in a variety of different languages.

    + +
      +
    • Javascript + +
        +
      • https://github.com/keriwarr/splitwise
      • +
    • +
    • Ruby + +
        +
      • https://github.com/divyum/splitwise-ruby
      • +
    • +
    • Python + +
        +
      • https://github.com/namaggarwal/splitwise
      • +
    • +
    + +

    If you've built a third-party SDK for Splitwise and you'd like to see it included in this list, then please open a pull request to update this section and add a new link. Thank you for your work!

    + +

    Note: These links are provided for convenience. These libraries have not been reviewed or endorsed by Splitwise, and Splitwise can not vouch for their quality. If you have questions or bug reports, please direct your feedback to the authors of these libraries.

    +

    Authentication

    ###################
    +# OAuth 2 example #
    +###################
    +
    +#!/usr/bin/env ruby
     require 'oauth2' # gem 'oauth2'
    +require 'pp'
     
     CONSUMER_KEY = <fill in your key>
     CONSUMER_SECRET = <fill in your secret>
    @@ -423,7 +455,13 @@ 

    Authentication

    # Triggered by ^C on os x; run `$ stty -a |grep intr` to find appropriate key combination
     trap('INT') { server.stop }
     server.start
    -
    #!/usr/bin/env ruby
    +
    +
    +###################
    +# OAuth 1 example #
    +###################
    +
    +#!/usr/bin/env ruby
     require 'oauth' # gem oauth
     
     CONSUMER_KEY = <fill in your key>
    @@ -460,23 +498,27 @@ 

    Authentication

    # Triggered by ^C on os x; run `$ stty -a |grep intr` to find appropriate key combination
     trap('INT') { server.stop }
     server.start
    -
    #!/usr/bin/env node
    +
    ###################
    +# OAuth 2 example #
    +###################
    +
    +#!/usr/bin/env node
     'use strict';
     
    -const OAuth = require('oauth');
    -const {exec} = require('child_process');
    -const qs = require('querystring');
    -const http = require('http');
    +const OAuth = require('oauth');
    +const {exec} = require('child_process');
    +const qs = require('querystring');
    +const http = require('http');
     
    -const CONSUMER_KEY = <fill in your key>;
    -const CONSUMER_SECRET = <fill in your secret>;
    -const TOKEN_URL = '/oauth/token';
    -const AUTHORIZE_URL = '/oauth/authorize';
    -const MY_CALLBACK_URL = 'http://localhost:8080/callback';
    -const BASE_SITE = 'https://www.splitwise.com';
    +const CONSUMER_KEY = <fill in your key>;
    +const CONSUMER_SECRET = <fill in your secret>;
    +const TOKEN_URL = '/oauth/token';
    +const AUTHORIZE_URL = '/oauth/authorize';
    +const MY_CALLBACK_URL = 'http://localhost:8080/callback';
    +const BASE_SITE = 'https://www.splitwise.com';
     
     var authURL;
    -const client = new OAuth.OAuth2(
    +const client = new OAuth.OAuth2(
       CONSUMER_KEY,
       CONSUMER_SECRET,
       BASE_SITE,
    @@ -484,7 +526,7 @@ 

    Authentication

    TOKEN_URL,
       null);
     
    -const server = http.createServer(function(req, res) {
    +const server = http.createServer(function(req, res) {
       console.log(req.url);
       var p = req.url.split('/');
       console.log(p);
    @@ -527,7 +569,7 @@ 

    Authentication

    }
             else {
               console.log('Obtained access_token: ', access_token);
    -          client.get('https://secure.splitwise.com/api/v3.0/get_current_user', access_token, function(e, data, response) {
    +          client.get('https://secure.splitwise.com/api/v3.0/get_current_user', access_token, function(e, data, response) {
                 if (e) console.error(e);
                 res.end(data);
               });
    @@ -555,8 +597,7 @@ 

    Authentication

    }
     
     module.exports = client;
    -
    -
    +

    Splitwise uses OAuth for authentication. To connect via OAuth, you'll need to register your app on Splitwise. When you register, you'll be given a consumer key and a consumer secret, which can be used by your application to make requests to the Splitwise server.

    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};He.optgroup=He.option,He.tbody=He.tfoot=He.colgroup=He.caption=He.thead,He.th=He.td;var Pe=/<|&#?\w+;/;!function(){var e=Q.createDocumentFragment(),t=e.appendChild(Q.createElement("div")),n=Q.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),re.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",re.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Re=/^key/,Ie=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Me=/^([^.]*)(?:\.(.+)|)/;oe.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,v=Ee.get(e);if(v)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=oe.guid++),(u=v.events)||(u=v.events={}),(s=v.handle)||(s=v.handle=function(t){return"undefined"!=typeof oe&&oe.event.triggered!==t.type?oe.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(we)||[""],c=t.length;c--;)a=Me.exec(t[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d&&(f=oe.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=oe.event.special[d]||{},l=oe.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&oe.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||(p=u[d]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,h,s)!==!1||e.addEventListener&&e.addEventListener(d,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),oe.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,c,l,f,p,d,h,g,v=Ee.hasData(e)&&Ee.get(e);if(v&&(u=v.events)){for(t=(t||"").match(we)||[""],c=t.length;c--;)if(a=Me.exec(t[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d){for(f=oe.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;o--;)l=p[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,h,v.handle)!==!1||oe.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)oe.event.remove(e,d+t[c],n,r,!0);oe.isEmptyObject(u)&&Ee.remove(e,"handle events")}},dispatch:function(e){e=oe.event.fix(e);var t,n,r,i,o,s=[],a=J.call(arguments),u=(Ee.get(this,"events")||{})[e.type]||[],c=oe.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=oe.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((oe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a), -void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:oe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a]*)\/>/gi,We=/\s*$/g;oe.extend({htmlPrefilter:function(e){return e.replace(_e,"<$1>")},clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=oe.contains(e.ownerDocument,e);if(!(re.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||oe.isXMLDoc(e)))for(s=l(a),o=l(e),r=0,i=o.length;r0&&f(s,!u&&l(e,"script")),a},cleanData:function(e){for(var t,n,r,i=oe.event.special,o=0;void 0!==(n=e[o]);o++)if(Ce(n)){if(t=n[Ee.expando]){if(t.events)for(r in t.events)i[r]?oe.event.remove(n,r):oe.removeEvent(n,r,t.handle);n[Ee.expando]=void 0}n[ke.expando]&&(n[ke.expando]=void 0)}}}),oe.fn.extend({domManip:T,detach:function(e){return S(this,e,!0)},remove:function(e){return S(this,e)},text:function(e){return Se(this,function(e){return void 0===e?oe.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return T(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=m(this,e);t.appendChild(e)}})},prepend:function(){return T(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=m(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return T(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return T(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(oe.cleanData(l(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return oe.clone(this,e,t)})},html:function(e){return Se(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!We.test(e)&&!He[($e.exec(e)||["",""])[1].toLowerCase()]){e=oe.htmlPrefilter(e);try{for(;n1)},show:function(){return O(this,!0)},hide:function(){return O(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Oe(this)?oe(this).show():oe(this).hide()})}}),oe.Tween=q,q.prototype={constructor:q,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||oe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(oe.cssNumber[n]?"":"px")},cur:function(){var e=q.propHooks[this.prop];return e&&e.get?e.get(this):q.propHooks._default.get(this)},run:function(e){var t,n=q.propHooks[this.prop];return this.options.duration?this.pos=t=oe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=oe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){oe.fx.step[e.prop]?oe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[oe.cssProps[e.prop]]&&!oe.cssHooks[e.prop]?e.elem[e.prop]=e.now:oe.style(e.elem,e.prop,e.now+e.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},oe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},oe.fx=q.prototype.init,oe.fx.step={};var it,ot,st=/^(?:toggle|show|hide)$/,at=/queueHooks$/;oe.Animation=oe.extend(I,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return c(n.elem,e,Ae.exec(t),n),n}]},tweener:function(e,t){oe.isFunction(e)?(t=e,e=["*"]):e=e.match(we);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){oe.removeAttr(this,e)})}}),oe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?oe.prop(e,t,n):(1===o&&oe.isXMLDoc(e)||(t=t.toLowerCase(),i=oe.attrHooks[t]||(oe.expr.match.bool.test(t)?ut:void 0)),void 0!==n?null===n?void oe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=oe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!re.radioValue&&"radio"===t&&oe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(we);if(o&&1===e.nodeType)for(;n=o[i++];)r=oe.propFix[n]||n,oe.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),ut={set:function(e,t,n){return t===!1?oe.removeAttr(e,n):e.setAttribute(n,n),n}},oe.each(oe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ct[t]||oe.find.attr;ct[t]=function(e,t,r){var i,o;return r||(o=ct[t],ct[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,ct[t]=o),i}});var lt=/^(?:input|select|textarea|button)$/i,ft=/^(?:a|area)$/i;oe.fn.extend({prop:function(e,t){return Se(this,oe.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[oe.propFix[e]||e]})}}),oe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&oe.isXMLDoc(e)||(t=oe.propFix[t]||t,i=oe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=oe.find.attr(e,"tabindex");return t?parseInt(t,10):lt.test(e.nodeName)||ft.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),re.optSelected||(oe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),oe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){oe.propFix[this.toLowerCase()]=this});var pt=/[\t\r\n\f]/g;oe.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,u=0;if(oe.isFunction(e))return this.each(function(t){oe(this).addClass(e.call(this,t,M(this)))});if("string"==typeof e&&e)for(t=e.match(we)||[];n=this[u++];)if(i=M(n),r=1===n.nodeType&&(" "+i+" ").replace(pt," ")){for(s=0;o=t[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");a=oe.trim(r),i!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,u=0;if(oe.isFunction(e))return this.each(function(t){oe(this).removeClass(e.call(this,t,M(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(we)||[];n=this[u++];)if(i=M(n),r=1===n.nodeType&&(" "+i+" ").replace(pt," ")){for(s=0;o=t[s++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");a=oe.trim(r),i!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):oe.isFunction(e)?this.each(function(n){oe(this).toggleClass(e.call(this,n,M(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=oe(this),o=e.match(we)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=M(this),t&&Ee.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Ee.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+M(n)+" ").replace(pt," ").indexOf(t)>-1)return!0;return!1}});var dt=/\r/g;oe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=oe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,oe(this).val()):e,null==i?i="":"number"==typeof i?i+="":oe.isArray(i)&&(i=oe.map(i,function(e){return null==e?"":e+""})),t=oe.valHooks[this.type]||oe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=oe.valHooks[i.type]||oe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(dt,""):null==n?"":n)}}}),oe.extend({valHooks:{option:{get:function(e){return oe.trim(e.value)}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,s=o?null:[],a=o?i+1:r.length,u=i<0?a:o?i:0;u-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),oe.each(["radio","checkbox"],function(){oe.valHooks[this]={set:function(e,t){if(oe.isArray(t))return e.checked=oe.inArray(oe(e).val(),t)>-1}},re.checkOn||(oe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var ht=/^(?:focusinfocus|focusoutblur)$/;oe.extend(oe.event,{trigger:function(t,n,r,i){var o,s,a,u,c,l,f,p=[r||Q],d=ne.call(t,"type")?t.type:t,h=ne.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||Q,3!==r.nodeType&&8!==r.nodeType&&!ht.test(d+oe.event.triggered)&&(d.indexOf(".")>-1&&(h=d.split("."),d=h.shift(),h.sort()),c=d.indexOf(":")<0&&"on"+d,t=t[oe.expando]?t:new oe.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:oe.makeArray(n,[t]),f=oe.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!oe.isWindow(r)){for(u=f.delegateType||d,ht.test(u+d)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||Q)&&p.push(a.defaultView||a.parentWindow||e)}for(o=0;(s=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,l=(Ee.get(s,"events")||{})[t.type]&&Ee.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&Ce(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!Ce(r)||c&&oe.isFunction(r[d])&&!oe.isWindow(r)&&(a=r[c],a&&(r[c]=null),oe.event.triggered=d,r[d](),oe.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=oe.extend(new oe.Event,n,{type:e,isSimulated:!0});oe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}}),oe.fn.extend({trigger:function(e,t){return this.each(function(){oe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return oe.event.trigger(e,t,n,!0)}}),oe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){oe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),oe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),re.focusin="onfocusin"in e,re.focusin||oe.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){oe.event.simulate(t,e.target,oe.event.fix(e))};oe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Ee.access(r,t);i||r.addEventListener(e,n,!0),Ee.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Ee.access(r,t)-1;i?Ee.access(r,t,i):(r.removeEventListener(e,n,!0),Ee.remove(r,t))}}});var gt=e.location,vt=oe.now(),mt=/\?/;oe.parseJSON=function(e){return JSON.parse(e+"")},oe.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||oe.error("Invalid XML: "+t),n};var yt=/#.*$/,xt=/([?&])_=[^&]*/,bt=/^(.*?):[ \t]*([^\r\n]*)$/gm,wt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Tt=/^(?:GET|HEAD)$/,St=/^\/\//,Ct={},Et={},kt="*/".concat("*"),Nt=Q.createElement("a");Nt.href=gt.href,oe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:gt.href,type:"GET",isLocal:wt.test(gt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":kt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":oe.parseJSON,"text xml":oe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?B(B(e,oe.ajaxSettings),t):B(oe.ajaxSettings,e)},ajaxPrefilter:_(Ct),ajaxTransport:_(Et),ajax:function(t,n){function r(t,n,r,a){var c,f,y,x,w,S=n;2!==b&&(b=2,u&&e.clearTimeout(u),i=void 0,s=a||"",T.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(x=z(p,T,r)),x=X(p,x,T,c),c?(p.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(oe.lastModified[o]=w),w=T.getResponseHeader("etag"),w&&(oe.etag[o]=w)),204===t||"HEAD"===p.type?S="nocontent":304===t?S="notmodified":(S=x.state,f=x.data,y=x.error,c=!y)):(y=S,!t&&S||(S="error",t<0&&(t=0))),T.status=t,T.statusText=(n||S)+"",c?g.resolveWith(d,[f,S,T]):g.rejectWith(d,[T,S,y]),T.statusCode(m),m=void 0,l&&h.trigger(c?"ajaxSuccess":"ajaxError",[T,p,c?f:y]),v.fireWith(d,[T,S]),l&&(h.trigger("ajaxComplete",[T,p]),--oe.active||oe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,s,a,u,c,l,f,p=oe.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?oe(d):oe.event,g=oe.Deferred(),v=oe.Callbacks("once memory"),m=p.statusCode||{},y={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!a)for(a={};t=bt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)m[t]=[m[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return i&&i.abort(t),r(0,t),this}};if(g.promise(T).complete=v.add,T.success=T.done,T.error=T.fail,p.url=((t||p.url||gt.href)+"").replace(yt,"").replace(St,gt.protocol+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=oe.trim(p.dataType||"*").toLowerCase().match(we)||[""],null==p.crossDomain){c=Q.createElement("a");try{c.href=p.url,c.href=c.href,p.crossDomain=Nt.protocol+"//"+Nt.host!=c.protocol+"//"+c.host}catch(e){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=oe.param(p.data,p.traditional)),W(Ct,p,n,T),2===b)return T;l=oe.event&&p.global,l&&0===oe.active++&&oe.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Tt.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(mt.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=xt.test(o)?o.replace(xt,"$1_="+vt++):o+(mt.test(o)?"&":"?")+"_="+vt++)),p.ifModified&&(oe.lastModified[o]&&T.setRequestHeader("If-Modified-Since",oe.lastModified[o]),oe.etag[o]&&T.setRequestHeader("If-None-Match",oe.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",p.contentType),T.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+kt+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)T.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,T,p)===!1||2===b))return T.abort();w="abort";for(f in{success:1,error:1,complete:1})T[f](p[f]);if(i=W(Et,p,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,p]),2===b)return T;p.async&&p.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},p.timeout));try{b=1,i.send(y,r)}catch(e){if(!(b<2))throw e;r(-1,e)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return oe.get(e,t,n,"json")},getScript:function(e,t){return oe.get(e,void 0,t,"script")}}),oe.each(["get","post"],function(e,t){oe[t]=function(e,n,r,i){return oe.isFunction(n)&&(i=i||r,r=n,n=void 0),oe.ajax(oe.extend({url:e,type:t,dataType:i,data:n,success:r},oe.isPlainObject(e)&&e))}}),oe._evalUrl=function(e){return oe.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},oe.fn.extend({wrapAll:function(e){var t;return oe.isFunction(e)?this.each(function(t){oe(this).wrapAll(e.call(this,t))}):(this[0]&&(t=oe(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return oe.isFunction(e)?this.each(function(t){oe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=oe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=oe.isFunction(e);return this.each(function(n){oe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){oe.nodeName(this,"body")||oe(this).replaceWith(this.childNodes)}).end()}}),oe.expr.filters.hidden=function(e){return!oe.expr.filters.visible(e)},oe.expr.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0};var jt=/%20/g,Lt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;oe.param=function(e,t){var n,r=[],i=function(e,t){t=oe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=oe.ajaxSettings&&oe.ajaxSettings.traditional),oe.isArray(e)||e.jquery&&!oe.isPlainObject(e))oe.each(e,function(){i(this.name,this.value)});else for(n in e)V(n,e[n],t,i);return r.join("&").replace(jt,"+")},oe.fn.extend({serialize:function(){return oe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=oe.prop(this,"elements");return e?oe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!oe(this).is(":disabled")&&Ot.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!qe.test(e))}).map(function(e,t){var n=oe(this).val();return null==n?null:oe.isArray(n)?oe.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}}),oe.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var qt={0:200,1223:204},$t=oe.ajaxSettings.xhr();re.cors=!!$t&&"withCredentials"in $t,re.ajax=$t=!!$t,oe.ajaxTransport(function(t){var n,r;if(re.cors||$t&&!t.crossDomain)return{send:function(i,o){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(s in i)a.setRequestHeader(s,i[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(qt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),oe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return oe.globalEval(e),e}}}),oe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),oe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=oe(" - + NAV @@ -213,9 +213,8 @@
    From 10efffe8ec3162c80eb41afcd6f2260f25edf179 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Thu, 14 May 2020 12:32:49 -0400 Subject: [PATCH 30/37] publish: Merge pull request #32 from splitwise/mw/migrate generated from commit ef460b06e546d26e9e918d9284b0fc2bb9fd1c8e --- index.html | 646 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 599 insertions(+), 47 deletions(-) diff --git a/index.html b/index.html index 5dc19b8..75890f3 100644 --- a/index.html +++ b/index.html @@ -297,10 +297,10 @@ Expenses
    • - get_expenses + get_expense/:id
    • - get_expense/:id + get_expenses
    • create_expense @@ -320,7 +320,13 @@ Comments
    • @@ -373,8 +379,6 @@

      Introduction

      Hey there! We're glad you're interested in the Splitwise API. This documentation will help you to fetch information on users, expenses, groups, and much more.

      If something in the API is confusing you, you can open an issue about it on GitHub. We're a small team, so we may not have an instant fix, but we'll get back to you as soon as we're able. (If you spot an issue in our API documentation itself, feel free to open a pull request to update this website!)

      - -

      Third-party SDKs

      The development community has built a number of unofficial, third-party SDKs for Splitwise in a variety of different languages.

      @@ -743,11 +747,11 @@

      get_groups

      {
         "groups":[
           // Non-group expenses are listed in a group with id 0
      -    {  
      +    {
             "id":0,
             "name":"Non-group expenses",
             "updated_at": "2017-08-30T20:31:51Z", //<current time in UTC>
      -      "members":[ 
      +      "members":[
               {
                   "id": 1,
                   "first_name": "Ada",
      @@ -759,29 +763,29 @@ 

      get_groups

      }, "email": "ada@example.com", "registration_status": "confirmed", //'dummy', 'invited', or 'confirmed' - "balance":[ - { + "balance":[ + { "currency_code":"AED", "amount":"0.0" }, - { + { "currency_code":"ALL", "amount":"0.0" }, - { + { "currency_code":"EUR", "amount":"-5.0" }, - { + { "currency_code":"USD", "amount":"3730.5" } //, ... ] - } // , ... - ], + } // , ... + ], "simplify_by_default":false, - "original_debts":[ - { + "original_debts":[ + { "from": 12345, // user_id "to": 54321, // user_id "amount":"414.5", // amount as a decimal string @@ -789,22 +793,22 @@

      get_groups

      } // , ... ] }, - { + { "id":3018312, "name":"a test group", "updated_at":"2017-08-30T20:31:51Z", - "members":[ /* <User object> , <User object>, ... */ ], + "members":[ /* <User object> , <User object>, ... */ ], "simplify_by_default":false, - "original_debts":[ - { + "original_debts":[ + { "from": 12345, // user_id "to": 54321, // user_id "amount":"414.5", // amount as a decimal string "currency_code":"USD" // three-letter currency code } // , ... ], - "simplified_debts":[ - { + "simplified_debts":[ + { "from": 12345, // user_id "to": 54321, // user_id "amount":"414.5", // amount as a decimal string @@ -826,22 +830,22 @@

      get_group/:id

    {
       "group":
    -    {  
    +    {
           "id":3018312,
           "name":"a test group",
           "updated_at":"2017-08-30T20:31:51Z",
    -      "members":[ /* <User object> , <User object>, ... */ ], 
    +      "members":[ /* <User object> , <User object>, ... */ ],
           "simplify_by_default":false,
    -      "original_debts":[  
    -         {  
    +      "original_debts":[
    +         {
                 "from": 12345,          // user_id
                 "to": 54321,            // user_id
                 "amount":"414.5",       // amount as a decimal string
                 "currency_code":"USD"   // three-letter currency code
              } // , ...
           ],
    -      "simplified_debts":[  
    -         {  
    +      "simplified_debts":[
    +         {
                 "from": 12345,          // user_id
                 "to": 54321,            // user_id
                 "amount":"414.5",       // amount as a decimal string
    @@ -863,11 +867,11 @@ 

    create_group

    {
       "group":
    -    {  
    +    {
           "id":3018312,
           "name":"a test group",
           "updated_at":"2017-08-30T20:31:51Z",
    -      "members":[ /* <User object> , <User object>, ... */ ], 
    +      "members":[ /* <User object> , <User object>, ... */ ],
           "simplify_by_default":false,
           "original_debts":[],
           "simplified_debts":[],
    @@ -885,7 +889,7 @@ 

    create_group

    Query Parameters

    - + @@ -915,22 +919,22 @@

    Query Parameters

    - + - + - + - + @@ -940,7 +944,8 @@

    delete_group/:id

    Example Response:

    {
    -  "success": true // or false
    +  "success": true, // or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/delete_group/:id

    @@ -950,10 +955,12 @@

    undelete_group/:id

    Example Response:

    -
    -

    ``

    - -

    Desc:

    +
    {
    +  "success": true, //or false
    +  "errors": ["any errors"]
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/undelete_group/:id

    add_user_to_group

    Example Response:

    @@ -1213,22 +1220,22 @@

    Query Parameters

    - + - + - + - + @@ -1245,7 +1252,457 @@

    delete_friend/:id

    POST https://secure.splitwise.com/api/v3.0/delete_friend/:id

    Given a friend ID, break off the friendship between the current user and the specified user.

    -

    Expenses

    get_expenses

    get_expense/:id

    create_expense

    update_expense/:id

    delete_expense/:id

    undelete_expense/:id

    Comments

    get_comments?expense_id=

    Notifications

    get_notifications

    Other API calls

    get_currencies

    {
    +

    Expenses

    get_expense/:id

    +

    Return full details on an expense involving the current user. There are some additional values included in the expense object than shown here but they should be ignored.

    +
    {
    +  "expense": {
    +    "id": 368887,
    +    "group_id": 18417, //or null
    +    "description": "Grocery run",
    +    "repeats": false,
    +    "repeat_interval": "never", //or "weekly", "fortnightly", "monthly", "yearly"
    +    "email_reminder": false,
    +    "email_reminder_in_advance": -1, // or 0, 1, 3, 5, 7, 14
    +    "next_repeat": null,
    +    "details": "Additional notes about the expense",
    +    "comments_count": 0,
    +    "payment": false,
    +    "transaction_confirmed": false,
    +    "cost": "25.0",
    +    "currency_code": "USD",
    +    "repayments": [
    +      {
    +        "from": 6788709,
    +        "to": 270896089,
    +        "amount": "25.0"
    +      }
    +    ],
    +    "date": "2012-07-27T06:17:09Z",
    +    "created_at": "2012-07-27T06:17:09Z",
    +    "created_by": { /* <user object> */ },
    +    "updated_at": "2012-12-23T05:47:02Z",
    +    "updated_by": { /* <user object> */ },
    +    "deleted_at": "2012-12-23T05:47:02Z",
    +    "deleted_by": { /* <user object> */ },
    +    "category": {
    +      "id": 18,
    +      "name": "General"
    +    },
    +    "receipt": {
    +      "large": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/large_95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png",
    +      "original": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png"
    +    },
    +    "users": [
    +      {
    +        "user": { /* <user object> */ },
    +        "user_id": 270896089,
    +        "paid_share": "25.0",
    +        "owed_share": "0.0",
    +        "net_balance": "25.0"
    +      },
    +      {
    +        "user": { /* <user object> */ },
    +        "user_id": 6788709,
    +        "paid_share": "0.0",
    +        "owed_share": "25.0",
    +        "net_balance": "-25.0"
    +      }
    +    ],
    +    "comments": [ /* <comment object>, <comment object>,... */ ]
    +  }
    +}
    +
    +

    GET https://secure.splitwise.com/api/v3.0/get_expense/:id

    +

    get_expenses

    +

    Return expenses involving the current user, in reverse chronological order

    +
    {
    +  "expenses": [ /* <expense object>, <expense object>, ... */ ],
    +}
    +
    +

    GET https://secure.splitwise.com/api/v3.0/get_expenses

    +

    Query parameters

    + + +
    Turn on simplify debts?
    users_0_first_nameusers__0__first_name String Add a user's first name
    users_0_last_nameusers__0__last_name String Add a user's last name
    users_0_emailusers__0__email String Add a user's email
    users_1_user_idusers__1__user_id Integer Add an existing user by id
    friends_0_user_first_namefriends__0__user_first_name String Add a user's first name
    friends_0_user_last_namefriends__0__user_last_name String Add a user's last name
    friends_0_user_emailfriends__0__user_email String Add a user's email (or find an existing user by email)
    friends_1_user_emailfriends__1__user_email String Find an existing user by email)
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    group_idIntegerReturn expenses for specific group
    friend_idIntegerReturn expenses for a specific friend that are not in any group
    dated_afterTimeISO 8601 Date time. Return expenses later that this date
    dated_beforeTimeISO 8601 Date time. Return expenses earlier than this date
    updated_afterTimeISO 8601 Date time. Return expenses updated after this date
    updated_beforeTimeISO 8601 Date time. Return expenses updated before this date
    limitIntegerHow many expenses to fetch. Defaults to 20; set to 0 to fetch all
    offsetIntegerReturn expenses starting at limit * offset
    +

    create_expense

    {
    +  "expense": { /* <expense object> */ },
    +  "errors": { }
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/create_expense

    +

    Query parameters

    Required

    + + + + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    costStringA string representation of a decimal value, limited to 2 decimal places
    descriptionStringA short description of the expense
    paymentBooleantrue if this is a payment, false otherwise
    +

    Split configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    group_idIntegerThe group to put this expense in.
    split_equallyBooleanSet this to true if using it
    user__0__idIntegerThe user id of a friend for this share
    user__0__paid_shareStringDecimal amount as a string with 2 decimal places. The amount this user paid for the expense
    user__0__owed_shareStringDecimal amount as a string with 2 decimal places. The amount this user owes on the expense
    user__1__first_nameString
    user__1__last_nameString
    user__1__emailStringValid email address for this user
    user__1__paid_shareStringDecimal amount as a string with 2 decimal places. The amount this user paid for the expense
    user__1__owed_shareStringDecimal amount as a string with 2 decimal places. The amount this user owes on the expense
    user__*__key_valueStringAdd additional user shares with indexes 2,3,4,5,...
    +

    Optional parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    group_idIntegerThe group to put the expense in
    detailsStringMore detailed notes
    dateTimeISO 8601 date time
    repeat_intervalStringOne of: never, weekly, fortnightly, monthly, yearly
    currency_codeStringISO 4217 currency code. Must be in the list from get_currencies
    category_idIntegerA category id from get_categories
    +

    update_expense/:id

    {
    +  "expense": { /* <expense object> */ },
    +  "errors": { }
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/update_expense/:id

    +

    Query parameters

    +

    These are the same as for create_expense except you only need to include parameters that are changing from the previous values.

    +

    delete_expense/:id

    {
    +  "success": true, //or false
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/delete_expense/:id

    +

    undelete_expense/:id

    {
    +  "success": true, //or false
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/undelete_expense/:id

    +

    Comments

    get_comments?expense_id=:id

    {
    +  "comments": [
    +    {
    +      "id": 79800950,
    +      "content": "Something about this expense",
    +      "comment_type": "User",
    +      "relation_type": "ExpenseComment",
    +      "relation_id": 855870953,
    +      "created_at": "2020-05-14T04:12:25Z",
    +      "deleted_at": null,
    +      "user": { /* <user object> */ }
    +    }
    +  ]
    +}
    +
    +

    GET https://secure.splitwise.com/api/v3.0/get_comments?expense_id=:id

    +

    create_comment

    {
    +  "comment": { /* <comment object> */ },
    +  "errors": {}
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/create_comment

    +

    Query parameters

    + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    expense_idIntegerThe expense the comment is for
    contentStringThe comment contents
    +

    delete_comment

    {
    +  "comment": { /* <comment object> */ },
    +  "errors": {}
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/delete_comment/:id

    +

    Query parameters

    + + + + + + + + + + + + +
    ParameterTypeDescription
    idIntegerThe comment id
    +

    Notifications

    get_notifications

    {
    +  "notifications": [
    +    {
    +      "id": 32514315,
    +      "type": 0,
    +      "created_at": "2020-05-13T20:58:17Z",
    +      "created_by": 2,
    +      "source": {
    +        "type": "Expense",
    +        "id": 865077,
    +        "url": null
    +      },
    +      "image_url": "https://s3.amazonaws.com/splitwise/uploads/notifications/v2/0-venmo.png",
    +      "image_shape": "square",
    +      "content": "<strong>You</strong> paid <strong>Jon H.</strong>.<br><font color=\"#5bc5a7\">You paid $23.45</font>"
    +    } //, ...
    +  ]
    +}
    +
    +

    GET https://secure.splitwise.com/api/v3.0/get_notifications

    + +

    Return a list of recent activity on the users account with the most recent items first. content will be suitable for display in HTML and uses only the <strong>, <strike>, <small>, <br> and <font color="#FFEE44"> tags.

    + +

    The type value indicates what the notification is about. Notification types may be added in the future without warning. Below is an incomplete list of notification types.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeMeaning
    0Expense added
    1Expense updated
    2Expense deleted
    3Comment added
    4Added to group
    5Removed from group
    6Group deleted
    7Group settings changed
    8Added as friend
    9Removed as friend
    10News (a URL should be included)
    11Debt simplification
    12Group undeleted
    13Expense undeleted
    14Group currency conversion
    15Friend currency conversion
    +

    Query parameters

    + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    updated_afterTimeISO 8601 Date and time string with timezone offset. Return notifications after this time.
    limitIntegerHow many notifications to fetch. Defaults to 20. 0 for all.
    +

    Other API calls

    get_currencies

    {
       "currencies":[
         { "currency_code":"USD", "unit":"$" },
         { "currency_code":"ARS", "unit":"$" },
    @@ -1378,12 +1835,107 @@ 

    Expenses

    get_expenses

    get_categories

    parse_sentence

    Errors

    +

    get_categories

    {
    +  "categories": [
    +    {
    +      "id": 19,
    +      "name": "Entertainment",
    +      "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/other.png",
    +      "icon_types": {
    +        "slim": {
    +          "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other.png",
    +          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other@2x.png"
    +        },
    +        "square": {
    +          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@2x.png",
    +          "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@3x.png"
    +        }
    +      },
    +      "subcategories": [
    +        {
    +          "id": 20,
    +          "name": "Games",
    +          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/games.png",
    +          "icon_types": {
    +            "slim": {
    +              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games.png",
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games@2x.png"
    +            },
    +            "square": {
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@2x.png",
    +              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@3x.png"
    +            }
    +          }
    +        },
    +        {
    +          "id": 21,
    +          "name": "Movies",
    +          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/movies.png",
    +          "icon_types": {
    +            "slim": {
    +              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies.png",
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies@2x.png"
    +            },
    +            "square": {
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@2x.png",
    +              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@3x.png"
    +            }
    +          }
    +        } //, ...
    +      ]
    +    } //, ...
    +  ]
    +}
    +
    +

    GET https://secure.splitwise.com/api/v3.0/get_categories

    + +

    Returns a list of all categories Splitwise allows for expenses. There are parent categories that represent groups of categories with subcategories for more specific categorization. You may not use the parent categories when creating expenses. If you intend for an expense to be represented by the parent category and nothing more specific, please use the "Other" subcategory.

    +

    parse_sentence

    {
    +  "expense": { /* <Expense object> */ },
    +  "valid": true, //or false
    +  "error": "an error message"
    +}
    +
    +

    POST https://secure.splitwise.com/api/v3.0/parse_sentence

    + +

    Attempts to create an expense from the input as an English natural language phrase like "groceries $20" or "Jon paid me $50". If valid is true, the expense value will be a complete and valid expense. If it is false, the expense value may be missing some values.

    +

    Query Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParameterTypeDescription
    inputStringA natural language sentence describing an expense
    group_idIntegerA group id
    friend_idIntegerA friend id
    autosaveBooleanIf true, will save the resulting expense if valid. Defaults to false.
    +

    Errors

    In general, the Splitwise API returns the following error codes:

    From 065a2af26ba34ac892a8b350315add4d3a7e7f9b Mon Sep 17 00:00:00 2001 From: Joe Stein Date: Mon, 1 Jun 2020 12:22:38 -0400 Subject: [PATCH 31/37] publish: Merge pull request #33 from splitwise/jas14/create-expense-fix-typo generated from commit 3fa9f59b5ac8dc6d0771efdc6bc57c56d89aa3c6 --- index.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index 75890f3..17bd269 100644 --- a/index.html +++ b/index.html @@ -1422,47 +1422,47 @@

    Split configuration

    - + - + - + - + - + - + - + - + - + From 83574bac58162a0bbf2c205824b4d242f7c25316 Mon Sep 17 00:00:00 2001 From: Joe Stein Date: Thu, 4 Jun 2020 15:15:33 -0400 Subject: [PATCH 32/37] publish: Merge pull request #34 from splitwise/jas14/fix-expense-details-users-params generated from commit fa9b02d3abb99ad0816cad882ef1cb4c89e84340 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 17bd269..7366846 100644 --- a/index.html +++ b/index.html @@ -1422,7 +1422,7 @@

    Split configuration

    - + From df934558adafe68160b5975a7c1274774b34b8fc Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 29 Jun 2020 21:48:18 -0400 Subject: [PATCH 33/37] publish: Revert "Merge pull request #35 from splitwise/dependabot/bundler/rack-2.2.3" generated from commit b610db0c69e1f51cecd92d0d635223c7257be18f --- index.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.html b/index.html index 7366846..7f7ce41 100644 --- a/index.html +++ b/index.html @@ -408,6 +408,11 @@

    Third-party SDKs

    +
  • Dart + +
  • If you've built a third-party SDK for Splitwise and you'd like to see it included in this list, then please open a pull request to update this section and add a new link. Thank you for your work!

    From 8164b4c8ea94e5a765b64057c1ea12af30dcb56d Mon Sep 17 00:00:00 2001 From: Joe Stein Date: Thu, 16 Jul 2020 09:51:25 -0400 Subject: [PATCH 34/37] publish: Merge pull request #38 from srthkpthk/patch-1 generated from commit ab0595c7284fe713336d779bae41d7d241c51ae8 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 7f7ce41..f528fdb 100644 --- a/index.html +++ b/index.html @@ -1348,7 +1348,7 @@

    Query parameters

    - + From 9366e4655ebcfaed4077605aa39c2e8bc5fc5260 Mon Sep 17 00:00:00 2001 From: Joe Stein Date: Thu, 17 Sep 2020 16:59:23 -0400 Subject: [PATCH 35/37] publish: Merge pull request #40 from splitwise/jas14/api-keys generated from commit 368c3e7d98a350f52a0d39a2986331995a373661 --- index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/index.html b/index.html index f528fdb..1ebcf26 100644 --- a/index.html +++ b/index.html @@ -229,6 +229,11 @@
  • Authentication +
  • An important note about nested parameters @@ -628,6 +633,13 @@

    Authentication

    OAuth test server (great for debugging authorization issues)
  • This old Splitwise blog post about OAuth
  • +

    API keys

    GET /api/v3.0/get_current_user HTTP/1.1
    +Host: www.splitwise.com
    +Authorization: Bearer <your_token_here>
    +
    +

    For speed and ease of prototyping, you can generate a personal API key on your app's details page. You should present this key to the server via the Authorization header as a Bearer token. The API key is an access token for your personal account, so keep it as safe as you would a password.

    + +

    If your key becomes compromised or you want to invalidate your existing key for any other reason, you can do so on the app details page by generating a new key.

    An important note about nested parameters

    Due to a quirk in Splitwise's servers, nested parameters (e.g. users[1][first_name]) cannot currently be used when submitting a request. Instead, to indicate nested parameters, use double underscores (e.g. users__1__first_name). We hope to support proper nested parameters in future API versions.

    Users

    From e9852420ba7335bc450eb76ef271b53e89f4e953 Mon Sep 17 00:00:00 2001 From: Ryan Laughlin Date: Mon, 4 Jan 2021 11:57:36 -0500 Subject: [PATCH 36/37] publish: Merge pull request #44 from nosvalds/pizzly generated from commit c0932c76517b8352435f9637c9febb0e6549f82e --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 1ebcf26..a595b93 100644 --- a/index.html +++ b/index.html @@ -392,6 +392,7 @@

    Third-party SDKs

  • Ruby From 80fa835ca4ab36f2c8af808302e841a51d2de6cd Mon Sep 17 00:00:00 2001 From: Joe Stein Date: Tue, 12 Jan 2021 18:11:06 -0500 Subject: [PATCH 37/37] publish: Merge pull request #45 from splitwise/jas14/group-types generated from commit dc6db3c86f962796f96368e77c5d31d5b5cc5357 --- index.html | 893 +++++++++++++++++++++++++++-------------------------- 1 file changed, 452 insertions(+), 441 deletions(-) diff --git a/index.html b/index.html index a595b93..d4969bc 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@ .highlight .cs { color: #75715e; } -.highlight .c, .highlight .cd { +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { color: #75715e; } .highlight .err { @@ -126,7 +126,7 @@ .highlight .s1 { color: #e6db74; } -.highlight .s { +.highlight .s, .highlight .sa, .highlight .dl { color: #e6db74; } .highlight .na { @@ -141,41 +141,52 @@ .highlight .ne { color: #a6e22e; } -.highlight .nf { +.highlight .nf, .highlight .fm { color: #a6e22e; } .highlight .vc { color: #ffffff; + background-color: #272822; } .highlight .nn { color: #ffffff; + background-color: #272822; } .highlight .nl { color: #ffffff; + background-color: #272822; } .highlight .ni { color: #ffffff; + background-color: #272822; } .highlight .bp { color: #ffffff; + background-color: #272822; } .highlight .vg { color: #ffffff; + background-color: #272822; } .highlight .vi { color: #ffffff; + background-color: #272822; } -.highlight .nv { +.highlight .nv, .highlight .vm { color: #ffffff; + background-color: #272822; } .highlight .w { color: #ffffff; + background-color: #272822; } .highlight { color: #ffffff; + background-color: #272822; } .highlight .n, .highlight .py, .highlight .nx { color: #ffffff; + background-color: #272822; } .highlight .ow { color: #f92672; @@ -207,11 +218,11 @@ NAV - Navbar +
    - +
    ruby javascript @@ -526,19 +537,19 @@

    Authentication

    ###################
     
     #!/usr/bin/env node
    -'use strict';
    +'use strict';
     
    -const OAuth = require('oauth');
    -const {exec} = require('child_process');
    -const qs = require('querystring');
    -const http = require('http');
    +const OAuth = require('oauth');
    +const {exec} = require('child_process');
    +const qs = require('querystring');
    +const http = require('http');
     
     const CONSUMER_KEY = <fill in your key>;
     const CONSUMER_SECRET = <fill in your secret>;
    -const TOKEN_URL = '/oauth/token';
    -const AUTHORIZE_URL = '/oauth/authorize';
    -const MY_CALLBACK_URL = 'http://localhost:8080/callback';
    -const BASE_SITE = 'https://www.splitwise.com';
    +const TOKEN_URL = '/oauth/token';
    +const AUTHORIZE_URL = '/oauth/authorize';
    +const MY_CALLBACK_URL = 'http://localhost:8080/callback';
    +const BASE_SITE = 'https://www.splitwise.com';
     
     var authURL;
     const client = new OAuth.OAuth2(
    @@ -551,36 +562,36 @@ 

    Authentication

    const server = http.createServer(function(req, res) {
       console.log(req.url);
    -  var p = req.url.split('/');
    +  var p = req.url.split('/');
       console.log(p);
     
       var pLen = p.length;
     
       authURL = client.getAuthorizeUrl({
         redirect_uri: MY_CALLBACK_URL,
    -    response_type: 'code'
    +    response_type: 'code'
       });
     
       /**
        * Creating an anchor with authURL as href and sending as response
        */
    -  var body = '<a href="' + authURL + '"> Get Code </a>';
    -  if (pLen === 2 && p[1] === '') {
    +  var body = '<a href="' + authURL + '"> Get Code </a>';
    +  if (pLen === 2 && p[1] === '') {
         res.writeHead(200, {
    -      'Content-Length': body.length,
    -      'Content-Type': 'text/html'
    +      'Content-Length': body.length,
    +      'Content-Type': 'text/html'
         });
         res.end(body);
    -  } else if (pLen === 2 && p[1].indexOf('callback') === 0) {
    +  } else if (pLen === 2 && p[1].indexOf('callback') === 0) {
         /** To obtain and parse code='...' from code?code='...' */
    -    var qsObj = qs.parse(p[1].split('?')[1]);
    +    var qsObj = qs.parse(p[1].split('?')[1]);
         console.log(qsObj.code);
         /** Obtaining access_token */
         client.getOAuthAccessToken(
           qsObj.code,
           {
    -        'redirect_uri': MY_CALLBACK_URL,
    -        'grant_type': 'authorization_code'
    +        'redirect_uri': MY_CALLBACK_URL,
    +        'grant_type': 'authorization_code'
           },
           function(e, access_token, refresh_token, results) {
             if (e) {
    @@ -591,8 +602,8 @@ 

    Authentication

    res.end(JSON.stringify(results));
             }
             else {
    -          console.log('Obtained access_token: ', access_token);
    -          client.get('https://secure.splitwise.com/api/v3.0/get_current_user', access_token, function(e, data, response) {
    +          console.log('Obtained access_token: ', access_token);
    +          client.get('https://secure.splitwise.com/api/v3.0/get_current_user', access_token, function(e, data, response) {
                 if (e) console.error(e);
                 res.end(data);
               });
    @@ -650,23 +661,23 @@ 

    get_current_user

    Example Response:

    {
    -  "user": {
    -    "id": 1,
    -    "first_name": "Ada",
    -    "last_name": "Lovelace",
    -    "picture": {
    -      "small": "image_url",
    -      "medium": "image_url",
    -      "large": "image_url"
    +  "user": {
    +    "id": 1,
    +    "first_name": "Ada",
    +    "last_name": "Lovelace",
    +    "picture": {
    +      "small": "image_url",
    +      "medium": "image_url",
    +      "large": "image_url"
         },
    -    "email": "ada@example.com",
    -    "registration_status": "confirmed",           //'dummy', 'invited', or 'confirmed'
    -    "default_currency": "USD",
    -    "locale": "en",
    -    "notifications_read": "2017-06-02T20:21:57Z", // the last time notifications were marked as read
    -    "notifications_count": 12,                    // the number of unread notifications
    -    "notifications": {                            // notification preferences
    -      "added_as_friend": true,
    +    "email": "ada@example.com",
    +    "registration_status": "confirmed",           //'dummy', 'invited', or 'confirmed'
    +    "default_currency": "USD",
    +    "locale": "en",
    +    "notifications_read": "2017-06-02T20:21:57Z", // the last time notifications were marked as read
    +    "notifications_count": 12,                    // the number of unread notifications
    +    "notifications": {                            // notification preferences
    +      "added_as_friend": true,
           // ...
         }
       }
    @@ -680,17 +691,17 @@ 

    get_user/:id

    Example Response:

    {
    -  "user": {
    -    "id": 1,
    -    "first_name": "Ada",
    -    "last_name": "Lovelace",
    -    "picture": {
    -      "small": "image_url",
    -      "medium": "image_url",
    -      "large": "image_url"
    +  "user": {
    +    "id": 1,
    +    "first_name": "Ada",
    +    "last_name": "Lovelace",
    +    "picture": {
    +      "small": "image_url",
    +      "medium": "image_url",
    +      "large": "image_url"
         },
    -    "email": "ada@example.com",
    -    "registration_status": "confirmed"           //'dummy', 'invited', or 'confirmed'
    +    "email": "ada@example.com",
    +    "registration_status": "confirmed"           //'dummy', 'invited', or 'confirmed'
         }
       }
     }
    @@ -763,81 +774,81 @@ 

    get_groups

    Example Response:

    {
    -  "groups":[
    +  "groups":[
         // Non-group expenses are listed in a group with id 0
         {
    -      "id":0,
    -      "name":"Non-group expenses",
    -      "updated_at": "2017-08-30T20:31:51Z", //<current time in UTC>
    -      "members":[
    +      "id":0,
    +      "name":"Non-group expenses",
    +      "updated_at": "2017-08-30T20:31:51Z", //<current time in UTC>
    +      "members":[
             {
    -            "id": 1,
    -            "first_name": "Ada",
    -            "last_name": "Lovelace",
    -            "picture": {
    -              "small": "image_url",
    -              "medium": "image_url",
    -              "large": "image_url"
    +            "id": 1,
    +            "first_name": "Ada",
    +            "last_name": "Lovelace",
    +            "picture": {
    +              "small": "image_url",
    +              "medium": "image_url",
    +              "large": "image_url"
                 },
    -            "email": "ada@example.com",
    -            "registration_status": "confirmed",          //'dummy', 'invited', or 'confirmed'
    -            "balance":[
    +            "email": "ada@example.com",
    +            "registration_status": "confirmed",          //'dummy', 'invited', or 'confirmed'
    +            "balance":[
                    {
    -                  "currency_code":"AED",
    -                  "amount":"0.0"
    +                  "currency_code":"AED",
    +                  "amount":"0.0"
                    },
                    {
    -                  "currency_code":"ALL",
    -                  "amount":"0.0"
    +                  "currency_code":"ALL",
    +                  "amount":"0.0"
                    },
                    {
    -                  "currency_code":"EUR",
    -                  "amount":"-5.0"
    +                  "currency_code":"EUR",
    +                  "amount":"-5.0"
                    },
                    {
    -                  "currency_code":"USD",
    -                  "amount":"3730.5"
    +                  "currency_code":"USD",
    +                  "amount":"3730.5"
                    } //, ...
                 ]
              } // , ...
           ],
    -      "simplify_by_default":false,
    -      "original_debts":[
    +      "simplify_by_default":false,
    +      "original_debts":[
              {
    -            "from": 12345,          // user_id
    -            "to": 54321,            // user_id
    -            "amount":"414.5",       // amount as a decimal string
    -            "currency_code":"USD"   // three-letter currency code
    +            "from": 12345,          // user_id
    +            "to": 54321,            // user_id
    +            "amount":"414.5",       // amount as a decimal string
    +            "currency_code":"USD"   // three-letter currency code
              } // , ...
           ]
         },
         {
    -      "id":3018312,
    -      "name":"a test group",
    -      "updated_at":"2017-08-30T20:31:51Z",
    -      "members":[ /* <User object> , <User object>, ... */ ],
    -      "simplify_by_default":false,
    -      "original_debts":[
    +      "id":3018312,
    +      "name":"a test group",
    +      "updated_at":"2017-08-30T20:31:51Z",
    +      "members":[ /* <User object> , <User object>, ... */ ],
    +      "simplify_by_default":false,
    +      "original_debts":[
              {
    -            "from": 12345,          // user_id
    -            "to": 54321,            // user_id
    -            "amount":"414.5",       // amount as a decimal string
    -            "currency_code":"USD"   // three-letter currency code
    +            "from": 12345,          // user_id
    +            "to": 54321,            // user_id
    +            "amount":"414.5",       // amount as a decimal string
    +            "currency_code":"USD"   // three-letter currency code
              } // , ...
           ],
    -      "simplified_debts":[
    +      "simplified_debts":[
              {
    -            "from": 12345,          // user_id
    -            "to": 54321,            // user_id
    -            "amount":"414.5",       // amount as a decimal string
    -            "currency_code":"USD"   // three-letter currency code
    +            "from": 12345,          // user_id
    +            "to": 54321,            // user_id
    +            "amount":"414.5",       // amount as a decimal string
    +            "currency_code":"USD"   // three-letter currency code
              } // , ...
           ],
    -      "whiteboard":"a message!",
    -      "group_type":"apartment",
    -      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
    +      "whiteboard":"a message!",
    +      "group_type":"apartment",
    +      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
         } // , ...
    -}
    +}
     

    GET https://www.splitwise.com/api/v3.0/get_groups

    @@ -847,32 +858,32 @@

    get_group/:id

    Example Response:

    {
    -  "group":
    +  "group":
         {
    -      "id":3018312,
    -      "name":"a test group",
    -      "updated_at":"2017-08-30T20:31:51Z",
    -      "members":[ /* <User object> , <User object>, ... */ ],
    -      "simplify_by_default":false,
    -      "original_debts":[
    +      "id":3018312,
    +      "name":"a test group",
    +      "updated_at":"2017-08-30T20:31:51Z",
    +      "members":[ /* <User object> , <User object>, ... */ ],
    +      "simplify_by_default":false,
    +      "original_debts":[
              {
    -            "from": 12345,          // user_id
    -            "to": 54321,            // user_id
    -            "amount":"414.5",       // amount as a decimal string
    -            "currency_code":"USD"   // three-letter currency code
    +            "from": 12345,          // user_id
    +            "to": 54321,            // user_id
    +            "amount":"414.5",       // amount as a decimal string
    +            "currency_code":"USD"   // three-letter currency code
              } // , ...
           ],
    -      "simplified_debts":[
    +      "simplified_debts":[
              {
    -            "from": 12345,          // user_id
    -            "to": 54321,            // user_id
    -            "amount":"414.5",       // amount as a decimal string
    -            "currency_code":"USD"   // three-letter currency code
    +            "from": 12345,          // user_id
    +            "to": 54321,            // user_id
    +            "amount":"414.5",       // amount as a decimal string
    +            "currency_code":"USD"   // three-letter currency code
              } // , ...
           ],
    -      "whiteboard":"a message!",
    -      "group_type":"apartment",
    -      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
    +      "whiteboard":"a message!",
    +      "group_type":"apartment",
    +      "invite_link":"https://www.splitwise.com/join/abcdef1232456"
         }
     }
     
    @@ -884,20 +895,20 @@

    create_group

    Example Response:

    {
    -  "group":
    +  "group":
         {
    -      "id":3018312,
    -      "name":"a test group",
    -      "updated_at":"2017-08-30T20:31:51Z",
    -      "members":[ /* <User object> , <User object>, ... */ ],
    -      "simplify_by_default":false,
    -      "original_debts":[],
    -      "simplified_debts":[],
    -      "whiteboard":"a message!",
    -      "group_type":"apartment",
    -      "invite_link":"https://www.splitwise.com/join/abcdef1232456",
    +      "id":3018312,
    +      "name":"a test group",
    +      "updated_at":"2017-08-30T20:31:51Z",
    +      "members":[ /* <User object> , <User object>, ... */ ],
    +      "simplify_by_default":false,
    +      "original_debts":[],
    +      "simplified_debts":[],
    +      "whiteboard":"a message!",
    +      "group_type":"apartment",
    +      "invite_link":"https://www.splitwise.com/join/abcdef1232456",
           // or if create failed
    -      "errors": ["something went wrong", "with your group"]
    +      "errors": ["something went wrong", "with your group"]
         }
     }
     
    @@ -929,7 +940,7 @@

    Query Parameters

  • - + @@ -962,8 +973,8 @@

    delete_group/:id

    Example Response:

    {
    -  "success": true, // or false
    -  "errors": ["any errors"]
    +  "success": true, // or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/delete_group/:id

    @@ -974,8 +985,8 @@

    undelete_group/:id

    Example Response:

    {
    -  "success": true, //or false
    -  "errors": ["any errors"]
    +  "success": true, //or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/undelete_group/:id

    @@ -984,8 +995,8 @@

    add_user_to_group

    Example Response:

    {
    -  "success": true, //or false
    -  "errors": ["any errors"]
    +  "success": true, //or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/add_user_to_group

    @@ -1032,8 +1043,8 @@

    remove_user_from_group

    Example Response:

    {
    -  "success": true, //or false
    -  "errors": ["any errors"]
    +  "success": true, //or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/remove_user_from_group

    @@ -1065,56 +1076,56 @@

    get_friends

    Example Response:

    {
    -  "friends":[
    +  "friends":[
         {
    -      "id": 1,
    -      "first_name": "Ada",
    -      "last_name": "Lovelace",
    -      "picture": {
    -        "small": "image_url",
    -        "medium": "image_url",
    -        "large": "image_url"
    +      "id": 1,
    +      "first_name": "Ada",
    +      "last_name": "Lovelace",
    +      "picture": {
    +        "small": "image_url",
    +        "medium": "image_url",
    +        "large": "image_url"
           },
    -      "balance":[
    +      "balance":[
             {
    -          "currency_code":"USD",
    -          "amount":"-1794.5"
    +          "currency_code":"USD",
    +          "amount":"-1794.5"
             },
             {
    -          "currency_code":"AED",
    -          "amount":"7.5"
    +          "currency_code":"AED",
    +          "amount":"7.5"
             }
           ],
    -      "groups":[ // group objects only include group balances with that friend
    +      "groups":[ // group objects only include group balances with that friend
             {
    -          "group_id":3018312,
    -          "balance":[
    +          "group_id":3018312,
    +          "balance":[
                 {
    -              "currency_code":"USD",
    -              "amount":"414.5"
    +              "currency_code":"USD",
    +              "amount":"414.5"
                 }
               ]
             },
             {
    -          "group_id":2830896,
    -          "balance":[
    +          "group_id":2830896,
    +          "balance":[
               ]
             },
             {
    -          "group_id":0,
    -          "balance":[
    +          "group_id":0,
    +          "balance":[
                 {
    -              "currency_code":"USD",
    -              "amount":"-2209.0"
    +              "currency_code":"USD",
    +              "amount":"-2209.0"
                 },
                 {
    -              "currency_code":"AED",
    -              "amount":"7.5"
    +              "currency_code":"AED",
    +              "amount":"7.5"
                 }
               ]
             }
           ],
    -      "updated_at":"2017-11-30T09:41:09Z"
    +      "updated_at":"2017-11-30T09:41:09Z"
         } // , ...
       ]
     }
    @@ -1127,57 +1138,57 @@ 

    get_friend/:id

    Example Response:

    {
    -  "friend":
    +  "friend":
         {
    -      "id": 1,
    -      "first_name": "Ada",
    -      "last_name": "Lovelace",
    -      "picture": {
    -        "small": "image_url",
    -        "medium": "image_url",
    -        "large": "image_url"
    +      "id": 1,
    +      "first_name": "Ada",
    +      "last_name": "Lovelace",
    +      "picture": {
    +        "small": "image_url",
    +        "medium": "image_url",
    +        "large": "image_url"
           },
    -      "registration_status": "confirmed", // or 'dummy' or 'invited'
    -      "balance":[
    +      "registration_status": "confirmed", // or 'dummy' or 'invited'
    +      "balance":[
             {
    -          "currency_code":"USD",
    -          "amount":"-1794.5"
    +          "currency_code":"USD",
    +          "amount":"-1794.5"
             },
             {
    -          "currency_code":"AED",
    -          "amount":"7.5"
    +          "currency_code":"AED",
    +          "amount":"7.5"
             }
           ],
    -      "groups":[
    +      "groups":[
             {
    -          "group_id":3018312,
    -          "balance":[
    +          "group_id":3018312,
    +          "balance":[
                 {
    -              "currency_code":"USD",
    -              "amount":"414.5"
    +              "currency_code":"USD",
    +              "amount":"414.5"
                 }
               ]
             },
             {
    -          "group_id":2830896,
    -          "balance":[
    +          "group_id":2830896,
    +          "balance":[
               ]
             },
             {
    -          "group_id":0,
    -          "balance":[
    +          "group_id":0,
    +          "balance":[
                 {
    -              "currency_code":"USD",
    -              "amount":"-2209.0"
    +              "currency_code":"USD",
    +              "amount":"-2209.0"
                 },
                 {
    -              "currency_code":"AED",
    -              "amount":"7.5"
    +              "currency_code":"AED",
    +              "amount":"7.5"
                 }
               ]
             }
           ],
    -      "updated_at":"2017-11-30T09:41:09Z"
    +      "updated_at":"2017-11-30T09:41:09Z"
         }
       }
     }
    @@ -1263,8 +1274,8 @@ 

    delete_friend/:id

    Example Response:

    {
    -  "success": true, //or false
    -  "errors": ["any errors"]
    +  "success": true, //or false
    +  "errors": ["any errors"]
     }
     

    POST https://secure.splitwise.com/api/v3.0/delete_friend/:id

    @@ -1273,60 +1284,60 @@

    delete_friend/:id

    Expenses

    get_expense/:id

    Return full details on an expense involving the current user. There are some additional values included in the expense object than shown here but they should be ignored.

    {
    -  "expense": {
    -    "id": 368887,
    -    "group_id": 18417, //or null
    -    "description": "Grocery run",
    -    "repeats": false,
    -    "repeat_interval": "never", //or "weekly", "fortnightly", "monthly", "yearly"
    -    "email_reminder": false,
    -    "email_reminder_in_advance": -1, // or 0, 1, 3, 5, 7, 14
    -    "next_repeat": null,
    -    "details": "Additional notes about the expense",
    -    "comments_count": 0,
    -    "payment": false,
    -    "transaction_confirmed": false,
    -    "cost": "25.0",
    -    "currency_code": "USD",
    -    "repayments": [
    +  "expense": {
    +    "id": 368887,
    +    "group_id": 18417, //or null
    +    "description": "Grocery run",
    +    "repeats": false,
    +    "repeat_interval": "never", //or "weekly", "fortnightly", "monthly", "yearly"
    +    "email_reminder": false,
    +    "email_reminder_in_advance": -1, // or 0, 1, 3, 5, 7, 14
    +    "next_repeat": null,
    +    "details": "Additional notes about the expense",
    +    "comments_count": 0,
    +    "payment": false,
    +    "transaction_confirmed": false,
    +    "cost": "25.0",
    +    "currency_code": "USD",
    +    "repayments": [
           {
    -        "from": 6788709,
    -        "to": 270896089,
    -        "amount": "25.0"
    +        "from": 6788709,
    +        "to": 270896089,
    +        "amount": "25.0"
           }
         ],
    -    "date": "2012-07-27T06:17:09Z",
    -    "created_at": "2012-07-27T06:17:09Z",
    -    "created_by": { /* <user object> */ },
    -    "updated_at": "2012-12-23T05:47:02Z",
    -    "updated_by": { /* <user object> */ },
    -    "deleted_at": "2012-12-23T05:47:02Z",
    -    "deleted_by": { /* <user object> */ },
    -    "category": {
    -      "id": 18,
    -      "name": "General"
    +    "date": "2012-07-27T06:17:09Z",
    +    "created_at": "2012-07-27T06:17:09Z",
    +    "created_by": { /* <user object> */ },
    +    "updated_at": "2012-12-23T05:47:02Z",
    +    "updated_by": { /* <user object> */ },
    +    "deleted_at": "2012-12-23T05:47:02Z",
    +    "deleted_by": { /* <user object> */ },
    +    "category": {
    +      "id": 18,
    +      "name": "General"
         },
    -    "receipt": {
    -      "large": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/large_95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png",
    -      "original": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png"
    +    "receipt": {
    +      "large": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/large_95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png",
    +      "original": "https://splitwise.s3.amazonaws.com/uploads/expense/receipt/3678899/95f8ecd1-536b-44ce-ad9b-0a9498bb7cf0.png"
         },
    -    "users": [
    +    "users": [
           {
    -        "user": { /* <user object> */ },
    -        "user_id": 270896089,
    -        "paid_share": "25.0",
    -        "owed_share": "0.0",
    -        "net_balance": "25.0"
    +        "user": { /* <user object> */ },
    +        "user_id": 270896089,
    +        "paid_share": "25.0",
    +        "owed_share": "0.0",
    +        "net_balance": "25.0"
           },
           {
    -        "user": { /* <user object> */ },
    -        "user_id": 6788709,
    -        "paid_share": "0.0",
    -        "owed_share": "25.0",
    -        "net_balance": "-25.0"
    +        "user": { /* <user object> */ },
    +        "user_id": 6788709,
    +        "paid_share": "0.0",
    +        "owed_share": "25.0",
    +        "net_balance": "-25.0"
           }
         ],
    -    "comments": [ /* <comment object>, <comment object>,... */ ]
    +    "comments": [ /* <comment object>, <comment object>,... */ ]
       }
     }
     
    @@ -1334,7 +1345,7 @@

    Expenses

    get_expense/:id

    get_expenses

    Return expenses involving the current user, in reverse chronological order

    {
    -  "expenses": [ /* <expense object>, <expense object>, ... */ ],
    +  "expenses": [ /* <expense object>, <expense object>, ... */ ],
     }
     

    GET https://secure.splitwise.com/api/v3.0/get_expenses

    @@ -1390,8 +1401,8 @@

    Query parameters

    Set this to true if using it
    user__0__idusers__0__id Integer The user id of a friend for this share
    user__0__paid_shareusers__0__paid_share String Decimal amount as a string with 2 decimal places. The amount this user paid for the expense
    user__0__owed_shareusers__0__owed_share String Decimal amount as a string with 2 decimal places. The amount this user owes on the expense
    user__1__first_nameusers__1__first_name String
    user__1__last_nameusers__1__last_name String
    user__1__emailusers__1__email String Valid email address for this user
    user__1__paid_shareusers__1__paid_share String Decimal amount as a string with 2 decimal places. The amount this user paid for the expense
    user__1__owed_shareusers__1__owed_share String Decimal amount as a string with 2 decimal places. The amount this user owes on the expense
    user__*__key_valueusers__*__key_value String Add additional user shares with indexes 2,3,4,5,...
    Set this to true if using it
    users__0__idusers__0__user_id Integer The user id of a friend for this share
    dated_after TimeISO 8601 Date time. Return expenses later that this dateISO 8601 Date time. Return expenses later than this date
    dated_before
    group_type StringWhat the group is being used for (apartment, trip, couple, etc.)What the group is being used for. Must be one of: apartment, house, trip, other.
    simplify_by_default

    create_expense

    {
    -  "expense": { /* <expense object> */ },
    -  "errors": { }
    +  "expense": { /* <expense object> */ },
    +  "errors": { }
     }
     

    POST https://secure.splitwise.com/api/v3.0/create_expense

    @@ -1525,42 +1536,42 @@

    Optional parameters

    update_expense/:id

    {
    -  "expense": { /* <expense object> */ },
    -  "errors": { }
    +  "expense": { /* <expense object> */ },
    +  "errors": { }
     }
     

    POST https://secure.splitwise.com/api/v3.0/update_expense/:id

    Query parameters

    These are the same as for create_expense except you only need to include parameters that are changing from the previous values.

    delete_expense/:id

    {
    -  "success": true, //or false
    +  "success": true, //or false
     }
     

    POST https://secure.splitwise.com/api/v3.0/delete_expense/:id

    undelete_expense/:id

    {
    -  "success": true, //or false
    +  "success": true, //or false
     }
     

    POST https://secure.splitwise.com/api/v3.0/undelete_expense/:id

    Comments

    get_comments?expense_id=:id

    {
    -  "comments": [
    +  "comments": [
         {
    -      "id": 79800950,
    -      "content": "Something about this expense",
    -      "comment_type": "User",
    -      "relation_type": "ExpenseComment",
    -      "relation_id": 855870953,
    -      "created_at": "2020-05-14T04:12:25Z",
    -      "deleted_at": null,
    -      "user": { /* <user object> */ }
    +      "id": 79800950,
    +      "content": "Something about this expense",
    +      "comment_type": "User",
    +      "relation_type": "ExpenseComment",
    +      "relation_id": 855870953,
    +      "created_at": "2020-05-14T04:12:25Z",
    +      "deleted_at": null,
    +      "user": { /* <user object> */ }
         }
       ]
     }
     

    GET https://secure.splitwise.com/api/v3.0/get_comments?expense_id=:id

    create_comment

    {
    -  "comment": { /* <comment object> */ },
    -  "errors": {}
    +  "comment": { /* <comment object> */ },
    +  "errors": {}
     }
     

    POST https://secure.splitwise.com/api/v3.0/create_comment

    @@ -1584,8 +1595,8 @@

    Query parameters

    delete_comment

    {
    -  "comment": { /* <comment object> */ },
    -  "errors": {}
    +  "comment": { /* <comment object> */ },
    +  "errors": {}
     }
     

    POST https://secure.splitwise.com/api/v3.0/delete_comment/:id

    @@ -1604,20 +1615,20 @@

    Query parameters

    Notifications

    get_notifications

    {
    -  "notifications": [
    +  "notifications": [
         {
    -      "id": 32514315,
    -      "type": 0,
    -      "created_at": "2020-05-13T20:58:17Z",
    -      "created_by": 2,
    -      "source": {
    -        "type": "Expense",
    -        "id": 865077,
    -        "url": null
    +      "id": 32514315,
    +      "type": 0,
    +      "created_at": "2020-05-13T20:58:17Z",
    +      "created_by": 2,
    +      "source": {
    +        "type": "Expense",
    +        "id": 865077,
    +        "url": null
           },
    -      "image_url": "https://s3.amazonaws.com/splitwise/uploads/notifications/v2/0-venmo.png",
    -      "image_shape": "square",
    -      "content": "<strong>You</strong> paid <strong>Jon H.</strong>.<br><font color=\"#5bc5a7\">You paid $23.45</font>"
    +      "image_url": "https://s3.amazonaws.com/splitwise/uploads/notifications/v2/0-venmo.png",
    +      "image_shape": "square",
    +      "content": "<strong>You</strong> paid <strong>Jon H.</strong>.<br><font color=\"#5bc5a7\">You paid $23.45</font>"
         } //, ...
       ]
     }
    @@ -1721,187 +1732,187 @@ 

    Query parameters

    Other API calls

    get_currencies

    {
    -  "currencies":[
    -    { "currency_code":"USD", "unit":"$" },
    -    { "currency_code":"ARS", "unit":"$" },
    -    { "currency_code":"AUD", "unit":"$" },
    -    { "currency_code":"EUR", "unit":"€" },
    -    { "currency_code":"BRL", "unit":"R$" },
    -    { "currency_code":"CAD", "unit":"$" },
    -    { "currency_code":"CNY", "unit":"¥" },
    -    { "currency_code":"DKK", "unit":"kr" },
    -    { "currency_code":"GBP", "unit":"£" },
    -    { "currency_code":"INR", "unit":"₹" },
    -    { "currency_code":"ILS", "unit":"₪" },
    -    { "currency_code":"JPY", "unit":"¥" },
    -    { "currency_code":"MXN", "unit":"$" },
    -    { "currency_code":"NZD", "unit":"$" },
    -    { "currency_code":"PHP", "unit":"₱" },
    -    { "currency_code":"RUB", "unit":"₽" },
    -    { "currency_code":"SGD", "unit":"$" },
    -    { "currency_code":"SEK", "unit":"kr" },
    -    { "currency_code":"CHF", "unit":"Fr." },
    -    { "currency_code":"MYR", "unit":"RM" },
    -    { "currency_code":"RON", "unit":"RON" },
    -    { "currency_code":"ZAR", "unit":"R" },
    -    { "currency_code":"LKR", "unit":"Rs. " },
    -    { "currency_code":"NAD", "unit":"$" },
    -    { "currency_code":"SAR", "unit":"SR" },
    -    { "currency_code":"AED", "unit":"DH" },
    -    { "currency_code":"PLN", "unit":"PLN" },
    -    { "currency_code":"HRK", "unit":"HRK" },
    -    { "currency_code":"PKR", "unit":"Rs" },
    -    { "currency_code":"TWD", "unit":"NT$" },
    -    { "currency_code":"VEF", "unit":"Bs" },
    -    { "currency_code":"HUF", "unit":"Ft" },
    -    { "currency_code":"CLP", "unit":"$" },
    -    { "currency_code":"BDT", "unit":"Tk" },
    -    { "currency_code":"CZK", "unit":"Kč" },
    -    { "currency_code":"COP", "unit":"$" },
    -    { "currency_code":"TRY", "unit":"TL" },
    -    { "currency_code":"KRW", "unit":"₩" },
    -    { "currency_code":"BOB", "unit":"Bs." },
    -    { "currency_code":"VND", "unit":"₫" },
    -    { "currency_code":"NOK", "unit":"kr" },
    -    { "currency_code":"EGP", "unit":"E£" },
    -    { "currency_code":"HKD", "unit":"$" },
    -    { "currency_code":"THB", "unit":"฿" },
    -    { "currency_code":"KES", "unit":"KSh" },
    -    { "currency_code":"IDR", "unit":"Rp " },
    -    { "currency_code":"ISK", "unit":"kr" },
    -    { "currency_code":"BTC", "unit":"฿" },
    -    { "currency_code":"UAH", "unit":"₴" },
    -    { "currency_code":"MVR", "unit":"MVR" },
    -    { "currency_code":"OMR", "unit":"OMR" },
    -    { "currency_code":"YER", "unit":"YER" },
    -    { "currency_code":"IRR", "unit":"IRR" },
    -    { "currency_code":"QAR", "unit":"QR" },
    -    { "currency_code":"BHD", "unit":"BD" },
    -    { "currency_code":"TZS", "unit":"TZS" },
    -    { "currency_code":"RSD", "unit":"RSD" },
    -    { "currency_code":"ETB", "unit":"Br" },
    -    { "currency_code":"BGN", "unit":"BGN" },
    -    { "currency_code":"FJD", "unit":"$" },
    -    { "currency_code":"JMD", "unit":"J$" },
    -    { "currency_code":"UYU", "unit":"$" },
    -    { "currency_code":"GTQ", "unit":"Q" },
    -    { "currency_code":"NPR", "unit":"Rs. " },
    -    { "currency_code":"PEN", "unit":"S/. " },
    -    { "currency_code":"DJF", "unit":"Fdj " },
    -    { "currency_code":"LTL", "unit":"Lt " },
    -    { "currency_code":"MKW", "unit":"MK" },
    -    { "currency_code":"KWD", "unit":"KWD" },
    -    { "currency_code":"CRC", "unit":"₡" },
    -    { "currency_code":"DOP", "unit":"$" },
    -    { "currency_code":"NGN", "unit":"₦" },
    -    { "currency_code":"JOD", "unit":"JOD" },
    -    { "currency_code":"MAD", "unit":"MAD" },
    -    { "currency_code":"RWF", "unit":"FRw" },
    -    { "currency_code":"UGX", "unit":"USh" },
    -    { "currency_code":"AOA", "unit":"Kz" },
    -    { "currency_code":"XAF", "unit":"CFA" },
    -    { "currency_code":"XOF", "unit":"CFA" },
    -    { "currency_code":"CMG", "unit":"CMg" },
    -    { "currency_code":"ANG", "unit":"NAf" },
    -    { "currency_code":"ALL", "unit":"L" },
    -    { "currency_code":"PYG", "unit":"₲" },
    -    { "currency_code":"KYD", "unit":"CI$" },
    -    { "currency_code":"KZT", "unit":"₸" },
    -    { "currency_code":"BAM", "unit":"KM" },
    -    { "currency_code":"AWG", "unit":"Afl." },
    -    { "currency_code":"BIF", "unit":"FBu" },
    -    { "currency_code":"MKD", "unit":"ден" },
    -    { "currency_code":"XPF", "unit":"F" },
    -    { "currency_code":"GEL", "unit":"GEL" },
    -    { "currency_code":"TND", "unit":"DT" },
    -    { "currency_code":"MZN", "unit":"MT" },
    -    { "currency_code":"BYR", "unit":"BYR" },
    -    { "currency_code":"TTD", "unit":"TT$" },
    -    { "currency_code":"XCD", "unit":"EC$" },
    -    { "currency_code":"LBP", "unit":"ل.ل" },
    -    { "currency_code":"LAK", "unit":"₭" },
    -    { "currency_code":"MOP", "unit":"MOP$" },
    -    { "currency_code":"GHS", "unit":"GH₵" },
    -    { "currency_code":"UZS", "unit":"UZS" },
    -    { "currency_code":"NIO", "unit":"C$" },
    -    { "currency_code":"AZN", "unit":"m." },
    -    { "currency_code":"ZMW", "unit":"ZMW" },
    -    { "currency_code":"SZL", "unit":"E" },
    -    { "currency_code":"BWP", "unit":"P" },
    -    { "currency_code":"MMK", "unit":"K" },
    -    { "currency_code":"CVE", "unit":"$" },
    -    { "currency_code":"MUR", "unit":"₨" },
    -    { "currency_code":"SCR", "unit":"SR" },
    -    { "currency_code":"KHR", "unit":"៛" },
    -    { "currency_code":"CUP", "unit":"$" },
    -    { "currency_code":"CUC", "unit":"CUC$" },
    -    { "currency_code":"STD", "unit":"Db" },
    -    { "currency_code":"HNL", "unit":"L" },
    -    { "currency_code":"AMD", "unit":"AMD" },
    -    { "currency_code":"MDL", "unit":"MDL" },
    -    { "currency_code":"MNT", "unit":"₮" },
    -    { "currency_code":"BYN", "unit":"Br" },
    -    { "currency_code":"MGA", "unit":"Ar" },
    -    { "currency_code":"BBD", "unit":"$" },
    -    { "currency_code":"KMF", "unit":"CF" },
    -    { "currency_code":"IQD", "unit":"IQD" },
    -    { "currency_code":"BZD", "unit":"BZ$" },
    -    { "currency_code":"GYD", "unit":"G$" },
    -    { "currency_code":"SRD", "unit":"$" },
    -    { "currency_code":"KGS", "unit":"KGS" },
    -    { "currency_code":"TJS", "unit":"TJS" },
    -    { "currency_code":"VUV", "unit":"Vt" },
    -    { "currency_code":"BTN", "unit":"Nu." },
    -    { "currency_code":"WST", "unit":"WS$" }
    +  "currencies":[
    +    { "currency_code":"USD", "unit":"$" },
    +    { "currency_code":"ARS", "unit":"$" },
    +    { "currency_code":"AUD", "unit":"$" },
    +    { "currency_code":"EUR", "unit":"€" },
    +    { "currency_code":"BRL", "unit":"R$" },
    +    { "currency_code":"CAD", "unit":"$" },
    +    { "currency_code":"CNY", "unit":"¥" },
    +    { "currency_code":"DKK", "unit":"kr" },
    +    { "currency_code":"GBP", "unit":"£" },
    +    { "currency_code":"INR", "unit":"₹" },
    +    { "currency_code":"ILS", "unit":"₪" },
    +    { "currency_code":"JPY", "unit":"¥" },
    +    { "currency_code":"MXN", "unit":"$" },
    +    { "currency_code":"NZD", "unit":"$" },
    +    { "currency_code":"PHP", "unit":"₱" },
    +    { "currency_code":"RUB", "unit":"₽" },
    +    { "currency_code":"SGD", "unit":"$" },
    +    { "currency_code":"SEK", "unit":"kr" },
    +    { "currency_code":"CHF", "unit":"Fr." },
    +    { "currency_code":"MYR", "unit":"RM" },
    +    { "currency_code":"RON", "unit":"RON" },
    +    { "currency_code":"ZAR", "unit":"R" },
    +    { "currency_code":"LKR", "unit":"Rs. " },
    +    { "currency_code":"NAD", "unit":"$" },
    +    { "currency_code":"SAR", "unit":"SR" },
    +    { "currency_code":"AED", "unit":"DH" },
    +    { "currency_code":"PLN", "unit":"PLN" },
    +    { "currency_code":"HRK", "unit":"HRK" },
    +    { "currency_code":"PKR", "unit":"Rs" },
    +    { "currency_code":"TWD", "unit":"NT$" },
    +    { "currency_code":"VEF", "unit":"Bs" },
    +    { "currency_code":"HUF", "unit":"Ft" },
    +    { "currency_code":"CLP", "unit":"$" },
    +    { "currency_code":"BDT", "unit":"Tk" },
    +    { "currency_code":"CZK", "unit":"Kč" },
    +    { "currency_code":"COP", "unit":"$" },
    +    { "currency_code":"TRY", "unit":"TL" },
    +    { "currency_code":"KRW", "unit":"₩" },
    +    { "currency_code":"BOB", "unit":"Bs." },
    +    { "currency_code":"VND", "unit":"₫" },
    +    { "currency_code":"NOK", "unit":"kr" },
    +    { "currency_code":"EGP", "unit":"E£" },
    +    { "currency_code":"HKD", "unit":"$" },
    +    { "currency_code":"THB", "unit":"฿" },
    +    { "currency_code":"KES", "unit":"KSh" },
    +    { "currency_code":"IDR", "unit":"Rp " },
    +    { "currency_code":"ISK", "unit":"kr" },
    +    { "currency_code":"BTC", "unit":"฿" },
    +    { "currency_code":"UAH", "unit":"₴" },
    +    { "currency_code":"MVR", "unit":"MVR" },
    +    { "currency_code":"OMR", "unit":"OMR" },
    +    { "currency_code":"YER", "unit":"YER" },
    +    { "currency_code":"IRR", "unit":"IRR" },
    +    { "currency_code":"QAR", "unit":"QR" },
    +    { "currency_code":"BHD", "unit":"BD" },
    +    { "currency_code":"TZS", "unit":"TZS" },
    +    { "currency_code":"RSD", "unit":"RSD" },
    +    { "currency_code":"ETB", "unit":"Br" },
    +    { "currency_code":"BGN", "unit":"BGN" },
    +    { "currency_code":"FJD", "unit":"$" },
    +    { "currency_code":"JMD", "unit":"J$" },
    +    { "currency_code":"UYU", "unit":"$" },
    +    { "currency_code":"GTQ", "unit":"Q" },
    +    { "currency_code":"NPR", "unit":"Rs. " },
    +    { "currency_code":"PEN", "unit":"S/. " },
    +    { "currency_code":"DJF", "unit":"Fdj " },
    +    { "currency_code":"LTL", "unit":"Lt " },
    +    { "currency_code":"MKW", "unit":"MK" },
    +    { "currency_code":"KWD", "unit":"KWD" },
    +    { "currency_code":"CRC", "unit":"₡" },
    +    { "currency_code":"DOP", "unit":"$" },
    +    { "currency_code":"NGN", "unit":"₦" },
    +    { "currency_code":"JOD", "unit":"JOD" },
    +    { "currency_code":"MAD", "unit":"MAD" },
    +    { "currency_code":"RWF", "unit":"FRw" },
    +    { "currency_code":"UGX", "unit":"USh" },
    +    { "currency_code":"AOA", "unit":"Kz" },
    +    { "currency_code":"XAF", "unit":"CFA" },
    +    { "currency_code":"XOF", "unit":"CFA" },
    +    { "currency_code":"CMG", "unit":"CMg" },
    +    { "currency_code":"ANG", "unit":"NAf" },
    +    { "currency_code":"ALL", "unit":"L" },
    +    { "currency_code":"PYG", "unit":"₲" },
    +    { "currency_code":"KYD", "unit":"CI$" },
    +    { "currency_code":"KZT", "unit":"₸" },
    +    { "currency_code":"BAM", "unit":"KM" },
    +    { "currency_code":"AWG", "unit":"Afl." },
    +    { "currency_code":"BIF", "unit":"FBu" },
    +    { "currency_code":"MKD", "unit":"ден" },
    +    { "currency_code":"XPF", "unit":"F" },
    +    { "currency_code":"GEL", "unit":"GEL" },
    +    { "currency_code":"TND", "unit":"DT" },
    +    { "currency_code":"MZN", "unit":"MT" },
    +    { "currency_code":"BYR", "unit":"BYR" },
    +    { "currency_code":"TTD", "unit":"TT$" },
    +    { "currency_code":"XCD", "unit":"EC$" },
    +    { "currency_code":"LBP", "unit":"ل.ل" },
    +    { "currency_code":"LAK", "unit":"₭" },
    +    { "currency_code":"MOP", "unit":"MOP$" },
    +    { "currency_code":"GHS", "unit":"GH₵" },
    +    { "currency_code":"UZS", "unit":"UZS" },
    +    { "currency_code":"NIO", "unit":"C$" },
    +    { "currency_code":"AZN", "unit":"m." },
    +    { "currency_code":"ZMW", "unit":"ZMW" },
    +    { "currency_code":"SZL", "unit":"E" },
    +    { "currency_code":"BWP", "unit":"P" },
    +    { "currency_code":"MMK", "unit":"K" },
    +    { "currency_code":"CVE", "unit":"$" },
    +    { "currency_code":"MUR", "unit":"₨" },
    +    { "currency_code":"SCR", "unit":"SR" },
    +    { "currency_code":"KHR", "unit":"៛" },
    +    { "currency_code":"CUP", "unit":"$" },
    +    { "currency_code":"CUC", "unit":"CUC$" },
    +    { "currency_code":"STD", "unit":"Db" },
    +    { "currency_code":"HNL", "unit":"L" },
    +    { "currency_code":"AMD", "unit":"AMD" },
    +    { "currency_code":"MDL", "unit":"MDL" },
    +    { "currency_code":"MNT", "unit":"₮" },
    +    { "currency_code":"BYN", "unit":"Br" },
    +    { "currency_code":"MGA", "unit":"Ar" },
    +    { "currency_code":"BBD", "unit":"$" },
    +    { "currency_code":"KMF", "unit":"CF" },
    +    { "currency_code":"IQD", "unit":"IQD" },
    +    { "currency_code":"BZD", "unit":"BZ$" },
    +    { "currency_code":"GYD", "unit":"G$" },
    +    { "currency_code":"SRD", "unit":"$" },
    +    { "currency_code":"KGS", "unit":"KGS" },
    +    { "currency_code":"TJS", "unit":"TJS" },
    +    { "currency_code":"VUV", "unit":"Vt" },
    +    { "currency_code":"BTN", "unit":"Nu." },
    +    { "currency_code":"WST", "unit":"WS$" }
       ] }
     

    GET https://secure.splitwise.com/api/v3.0/get_currencies

    Returns a list of all currencies allowed by the system. These are mostly ISO 4217 codes, but we do sometimes use pending codes or unofficial, colloquial codes (like BTC instead of XBT for Bitcoin)

    get_categories

    {
    -  "categories": [
    +  "categories": [
         {
    -      "id": 19,
    -      "name": "Entertainment",
    -      "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/other.png",
    -      "icon_types": {
    -        "slim": {
    -          "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other.png",
    -          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other@2x.png"
    +      "id": 19,
    +      "name": "Entertainment",
    +      "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/other.png",
    +      "icon_types": {
    +        "slim": {
    +          "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other.png",
    +          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/other@2x.png"
             },
    -        "square": {
    -          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@2x.png",
    -          "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@3x.png"
    +        "square": {
    +          "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@2x.png",
    +          "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/other@3x.png"
             }
           },
    -      "subcategories": [
    +      "subcategories": [
             {
    -          "id": 20,
    -          "name": "Games",
    -          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/games.png",
    -          "icon_types": {
    -            "slim": {
    -              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games.png",
    -              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games@2x.png"
    +          "id": 20,
    +          "name": "Games",
    +          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/games.png",
    +          "icon_types": {
    +            "slim": {
    +              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games.png",
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/games@2x.png"
                 },
    -            "square": {
    -              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@2x.png",
    -              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@3x.png"
    +            "square": {
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@2x.png",
    +              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/games@3x.png"
                 }
               }
             },
             {
    -          "id": 21,
    -          "name": "Movies",
    -          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/movies.png",
    -          "icon_types": {
    -            "slim": {
    -              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies.png",
    -              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies@2x.png"
    +          "id": 21,
    +          "name": "Movies",
    +          "icon": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square/entertainment/movies.png",
    +          "icon_types": {
    +            "slim": {
    +              "small": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies.png",
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/slim/entertainment/movies@2x.png"
                 },
    -            "square": {
    -              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@2x.png",
    -              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@3x.png"
    +            "square": {
    +              "large": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@2x.png",
    +              "xlarge": "https://s3.amazonaws.com/splitwise/uploads/category/icon/square_v2/entertainment/movies@3x.png"
                 }
               }
             } //, ...
    @@ -1914,9 +1925,9 @@ 

    get_categories

    {
    -  "expense": { /* <Expense object> */ },
    -  "valid": true, //or false
    -  "error": "an error message"
    +  "expense": { /* <Expense object> */ },
    +  "valid": true, //or false
    +  "error": "an error message"
     }
     

    POST https://secure.splitwise.com/api/v3.0/parse_sentence