foursquare API ドキュメント

http://groups.google.com/group/foursquare-api/web/api-documentation の和訳です。

著作権はforsquareにあります。forsquareには(まだ)許可を取っていません。問題があれば削除します。(If any problem, I will remove this translation.)

和訳は2010年5月18日に行われました。それ以降の変更は反映されていません。

日本語訳は正確でないことがある点に留意してください。日本語訳の不備に伴う不利益があったとしても訳者はその責を負いません。

連絡先 (Contact)
shirou.faw (atat) gmail.com (please replace atat to atmark)

以下の単語はfoursquareでの固有名詞のため、あえて訳していません。

  • check-in
  • mayor
  • history
  • venue
  • badge
  • tips
  • shout

イントロダクション

Foursquare API は Foursquare プラットフォーム上にアプリケーションを作るための API です。開発者は Foursquare への 新しい check-in の方法を作ったり、Foursquare コミュニティで作られたデータを可視化するためにAPIを使うことができます。我々の API はまだ開発途中であり、我々はあなたたちのフィードバックと提案を期待しています。

下記の公開したメソッドに加えて、我々のフィードを使ってあなたの check-in 履歴を得ることができます。フィードは RSS, KML, iCal の三種類のフォーマットで得られます。より詳しくは feeds.foursquare.com を見てください。

この API の使用には 規約 を遵守する必要があります。

認証

ほとんどのメソッドには、Basic 認証か OAuth 認証が要求されます。 我々は、OAuth を推奨します。OAuthを使えば、クライアント(訳注: API を使って作るツールだと思われる)はユーザ名とパスワードを保持することなく、特別なトークンを使ってユーザの代わりに情報の要求を始められます。

Basic 認証を使うには、 credentials(電話番号とパスワード) を HTTP ヘッダに埋め込んで送る必要があります。ここにコマンドラインから curl を使う例を示します。

curl -u PHONE_OR_EMAIL:PASSWORD http://api.foursquare.com/v1/user

OAuth を使うには、 OAuth Howto を読んでください。

フォーマット

現在、リクエストへの応答は XML と JSON で得られます。XML が標準の形式です。URLは下記の形式にする必要があります。

You can currently request output in XML (the default) as well as JSON.

http://api.foursquare.com/v1/user.json

以下のようにURLにフォーマットの拡張子を含めない場合、標準の形式であるXML で出力されます。

http://api.foursquare.com/v1/user

注意

距離は常に メートル法 で返されます。

ベストプラクティスとして、リクエストには値がないパラメータをできるだけ取り除いてくださるようお願いします。例: “/v1/user?uid=” の代わりに”/v1/user?uid=33” を送ってください。

メソッドがGETを要求している時は、GETを使ってください。もしもPOSTを要求している時はPOSTを使ってください。そうでなければ、リクエストは拒否されます。

返答の中にある、 <lastname> などのいくつかの要素は、空であることがあります。我々は空になる例について、メソッドの説明に注釈を入れようとしています。

ユーザ名は今のところ、Twitterのユーザ名が使われます。ユーザ名をバックエンドDBのキーとして使うことは気をつけてください。ユーザがTwitterのユーザ名をなんらかの理由で変えた場合は、DBが壊れてしまう可能性があります。ユーザ名の代わりにuidを使ってください。

全ての緯度経度メソッドでは(/checkin, /checkins, /tips など)、以下の情報をパラメータとして渡してくださるようお願いします。

  • geolat (緯度)
  • geolong (経度)
  • geohacc (horizontal 正確度)
  • geovacc (vertical 正確度)
  • geoalt (高度)

これにより、我々はもっと正確な場所を得ることができます。これら全ての値はメートル法にしてください。

現在、”cityid”という考え方はAPIからは排除されています。都市に関する全てのメソッド(/switchcity, /checkcity)はすでのもう使えません。アプリケーションは、代わりにgeolatとgeolongを渡して緯度経度メソッドを使うように作り直す必要があります。

User Agents

ヘッダの User-Agent を他と識別可能なように一意に設定してください。”Mozilla” や “libwww-perl/5.808” といった標準の識別子は、使用回数制限によって、使用停止にされる可能性があります。

我々は、送られてきた全ての一意な User-Agent (に加えて、アプリケーション名、メジャー/マイナー番号、含まれている情報など)を記録しています。我々がアプリケーションを一意に識別しやすくするために、User-Agentを構造化されたフォーマットで記述してくれるように強くお願いします。アプリケーション名、メジャーバージョン、マイナーバージョンに加えて他の識別可能な情報を、コロン”:”でつないでください。また、アプリケーションのバージョン番号を”:”の直後に置いてください。それ以降はログを取ったりデバグをするための情報など、好きな情報を含めて大丈夫です。

例: swipe-checkin:1.5 2009110501

例: Cool Square:4.0.0.247 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105 Debug/Blackberry|9630|EMULATOR

このフォーマットに従うことで、我々はあなたのアプリケーションをもっと効率的に追跡することができます。我々はこれによって、自動的にアップグレードの紹介を行ったり、利用情報の統計を作成することができます。

使用回数制限

APIの使用には、回数制限があります。この制限はあなたのアプリケーションが一時間に送るリクエストから計算されるMoving Windowに基づいています。

使用回数制限の初期値は一つのメソッドにつき一時間に200リクエストです。使用回数制限は以下の三つのうちの一つに適用されます。

  • ベーシック認証でのログイン
  • OAuth の Consumer Key
  • IP アドレス

あなたのアプリケーションでは、メソッドをうまく使う必要があります。例えば、可能な限りキャッシュするなどをしてください。/venue メソッドは他のメソッドに比べて長い間有効です。ヘッダのUser-Agentは一意に識別できる値を送ってください。我々はこれを利用回数を数えるのに使うかもしれません。

我々は使用回数制限の調整を行っています。もしもあなたのアプリケーションが制限にぶつかり、あなたがもっと大量にAPIを使いたいのならば、api@foursquare.comまでメールしてください。

メソッド

Check in メソッド

Checkins

friendが最近check-inしたリストを返します。

もし、 geolatとgeolongのペアを渡した場合(これはオプションですが、推奨です)、返答のそれぞれの<checkin>の中に<distance>が含まれます。

各<checkin>ブロックを解析するときにいくつか注意する必要があります。

  • もし<venue>があるのならば、適切な場所のcheck-inです
  • もし<venue>と<shout>があるのならば、shoutも同時に行われた、適切な場所のcheck-inです
  • もし<shout>だけあるのならば、shoutでありcheck-inではありません。shoutはユーザが持つ友人に大声で叫ぶこと、あるいはtweetに似たものです。特定の場所に結びついている必要はありません。shoutは以下のようなメッセージを送るのに役立ちます「なあ、誰か今夜一緒に行こうぜ」。
  • もし<venue>も<shout>もない場合、それは silent check-inです。(我々は”off-the-grid”とも呼んでいます)これはtimelineに現れるため、その人がその場所にいた事は分かります。これにより、後で彼らと会うことが簡単になります。これはデートやビジネスミーティングなどに有効です。
URL
http://api.foursquare.com/v1/checkins
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
引数
  • geolat (オプションだが、推奨)
  • geolong (オプションだが、推奨)

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<checkins>
      <checkin>
              <id>286939</id>
                <user>
                <id>467</id>
                <firstname>Sarah</firstname>
                <lastname>Simmons</lastname>
                <photo>http://foursquare.com/userpix/467_1237171998.jpg</photo>
                  <gender>female</gender>
                </user>
                <venue>
                <id>44379</id>
                <name>Topshop</name>
                <address>478 Broadway</address>
                <crossstreet>at Broome</crossstreet>
                <geolat>40.7215</geolat>
                <geolong>-74.0001</geolong>
                </venue>
                <distance>2382</distance>
                <display>Sarah S. @ Topshop</display>
                <shout>Just tried on a dress ...</shout>
                <created>Thu, 21 May 09 18:09:22 +0000</created>
        </checkin>

Check-in

ある場所にcheck-inします。

もし、その場所にmayorの情報がある場合は<mayor>ブロックが返されます。その場合、以下の情報が含まれている<type>ノードが返されます。

new
このユーザがmayorになっています
nocharge
以前のmayorはまだ有効です
stolen
このユーザは以前のmayorからmayorを手に入れました

もしもこのcheck-inに関係するなにか特別な事があれば、<specials>ブロックが返されます。<specials>ノードは<special>という以下のタイプを持つサブノードを含みます。

  • mayor
  • count
  • frequency
  • その他

もしもspecialが(venueの中ではなく)venueの近くの場合、<special>の代わりに近くのvenueを含む<venue>ノードが含まれます。

もしも、解除されたbadgeやtipsをインタラクティブに見せるインタフェースを作ろうとするならば、以下の例文を使うと、ユーザはなにが起こったのか簡単に理解することができます。

  • Badge: “You’ve unlocked [badge/name]: [badge/description].”
  • Tip (nearby): “Since you’re so close to [venue], [firstname last-initial] says: [tip/text].”
  • Tip (here): “Since you’re at [venue], [firstname last-initial] says: [tip/text].”
URL
http://api.foursquare.com/v1/checkin
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • vid (オプション。shoutしている、あるいはvenue名がある場合は必要無し): check-inしたいvenueのID
  • venue (オプション。shoutしている、あるいはvidを持っている場合は必要無し): venue IDがない、あるいはvenueがない場所にcheck-inする場合はvenue名を文字列としてこのパラメータに渡してください。これにより’orphan’という、住所やvenue idがないが緯度経度があるvenueになります
  • shout (オプション): このcheck-inに関するメッセージ。最大140文字まで
  • private (オプション): 1は「友人に公開しない」、0は「誰にでも公開する」
  • twitter (オプション。初期値はユーザ設定が使われる): 1は「Twitterに送る」、0は「Twitterに送らない」
  • facebook (オプション。初期値はユーザ設定が使われる): 1は「facebookに送る」、0は「facebookに送らない」
  • geolat (オプション。しかし、推奨): 緯度
  • geolong (オプション。しかし、推奨): 経度

返答:

<?xml version="1.0" encoding="UTF-8"?>
<checkin>
  <message>OK! We've got you @ 4SQ HQ - Soho. This is your 8th checkin here!</message>
  <id>413421</id>
  <created>Mon, 29 Jun 09 14:21:06 +0000</created>
  <venue>
    <id>45506</id>
    <name>4SQ HQ - Soho</name>
    <address>...</address>
    <crossstreet>btw Grand &amp; Broome</crossstreet>
    <city>New York</city>
    <state>NY</state>
    <zip>10013</zip>
    ...
  </venue>
  <mayor>
    <type>nochange</type>
    <checkins>10</checkins>
    <user>
      <id>138</id>
      <firstname>Dan</firstname>
      <lastname>M.</lastname>
      <photo>http://playfoursquare.s3.amazonaws.com/userpix_thumbs/138_1237786934.jpg</photo>
      <gender>male</gender>
    </user>
    <message>Dan M. is The Mayor of Bowery Wine Company.</message>
  </mayor>
  <badges>
    <badge>
      <id>123</id>
      <name>Newbie</name>
      <icon>http://foursquare.com/img/badge/newbie.png</icon>
      <description>Congrats on your first checkin!</description>
    </badge>
  </badges>
  <scoring>
    <score>
      <points>1</points>
      <icon>http://foursquare.com/img/scoring/2.png</icon>
      <message>First stop tonight</message>
    </score>
    <score>
      <points>5</points>
      <icon>http://foursquare.com/img/scoring/1.png</icon>
      <message>First time @ 4SQ HQ!</message>
    </score>
  </scoring>
  <specials>
    <special>
      <id>2</id>
      <type>mayor</type>
      <kind>nearby</kind>
      <message>If you're the mayor, show the bartender and your first drink is free! (just beer and well drinks guys, let's be fair)</message>
      <venue>
        <id>333</id>
        ...
      </venue>
    </special>
  </specials>
<checkin>

History

認証済みユーザに関するcheck-inのhistoryを返します。

以下に<checkin>ブロックを解釈するための注意を記します。

  • もし<venue>があるのならば、適切な場所のcheck-inです
  • もし<venue>と<shout>があるのならば、shoutも行われた適切な場所のcheck-inです
  • もし<shout>だけあるのならば、shoutでありcheck-inではありません
URL
http://api.foursquare.com/v1/history
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • l (limit of result)(オプション。初期値は20): 返す最大check-in数
  • sinceid (オプション。もし省略された場合、もっとも最近の結果を返す): 指定されたID以降の結果を返す

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<checkins>
  <checkin>
    <id>947380</id>
    <venue>
      <id>34655</id>
      <name>Monday Room</name>
      <primarycategory>
        <id>79156</id>
        <fullpathname>Nightlife:Cocktails / Mixology</fullpathname>
        <nodename>Cocktails / Mixology</nodename>
        <iconurl>http://foursquare.com/img/categories/nightlife/cocktails.png</iconurl>
      </primarycategory>
      <address>201 Elizabeth St</address>
      <crossstreet>btw Prince &amp; Spring</crossstreet>
      <city>New York</city>
      <state>NY</state>
      <zip>10012</zip>
      <geolat>40.722</geolat>
      <geolong>-73.9944</geolong>
      <phone>2123437011</phone>
    </venue>
    <shout>drinks with brier</shout>
    <created>Thu, 03 Sep 09 01:23:40 +0000</created>
  </checkin>
  <checkin>
    <id>944792</id>
...

ユーザに関するメソッド

ユーザの詳細情報

与えられたユーザのbadgeなどに関する情報を返します。もし、ユーザが最近check-inしたというデータ(つまり、そのユーザ自身あるいは認証済みユーザのfriendの場合)を持っている場合、その情報は<checkin>ブロックと同じように返されます。

もし要求されたユーザがそのユーザ自身(つまり、認証済みユーザ)である場合、初期設定が含まれる<settings>ブロックが返されます。この<settings>ブロックは、<sendtotwitter>や<sendtofacebook>などの属性に加えて、そのユーザのRSS/KMLのプライベートのfeed keyを含みます。sendtotwitterはcheck-in情報をtwitterに送るかどうかの初期設定であり、trueあるいはfalseが取りうる値です。sendtofacebookはcheck-in情報をfacebookのニュースfeedに送るかどうかの初期設定です。pingはユーザがクライアントアプリケーション(iphone, Android, Blackberry...)からのcheck-in通知を受け取るかを示します。取りうる値は、on(pingを送る)、off(pingを送らない)、goodnight(そのユーザの現在のタイムゾーンでAM 7時までpingを送らない)です。

もし指定されたユーザが認証済みユーザのfriendの場合、要求されたユーザの電話番号、email、twitter、Facebook IDの情報を得ることができます。加えて、get_pingsという情報も得られます。get_pingsはその認証済みユーザがfriend からのcheck-in通知を(push通知などで)受け取るかという情報です。get_pingsが取りうる値はtrueかfalseです。

<friendstatus>ノードは以下の4つの値のいずれかを取ります。

  • friend: 要求されたユーザはあなたのfriendです
  • pendingyou: 要求されたユーザはあなたにfriendリクエストを送っており、あなたはまだ承認していません
  • pendingthem: あなたは要求されたユーザにfrinedリクエストを送っていますが、まだ承認されていません
  • node absent: 要求されたユーザはあなたのfriendではありません(さらに、neither party has made an attempt at connecting)

pendingyouとpendingthemは、アプリケーション上で状態を見せるのに役に立ちます。もし、「pendingyou」ならば、おそらく認証/拒絶の操作をユーザにさせるでしょう。もし「pending them」ならば、「認証待ち」と表示するでしょう。

ヒント: これはさらに、credentialを確認するのにも使えます。(ユーザがOAuth認証を無効にしていないか、あるいはベーシック認証でのログインが変更されていないか、確認してください)

URL
http://api.foursquare.com/v1/user
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • uid: 情報を得たいユーザのid。もしuidを指定しない場合、認証済みユーザの情報が返ります
  • badges (オプション。初期値はfalse): true(1)ならばbadgeも表示します。初期値では、認証済みユーザの現在の街にあるbadgeだけを返します。
  • mayor(オプション。初期値はfalse): true(1)ならば、そのユーザがmayorであるvenueも返します。初期値では、全世界に関するmayorについて返します。

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<user>
      <id>33</id>
      <firstname>Naveen</firstname>
      <lastname>Selvadurai</lastname>
      <photo>http://foursquare.com/userpix/33_1235974851.jpg</photo>
        <gender>male</gender>
        <phone>2129103995</phone>
        <email>n@naveen.com</email>
        <twitter>naveen</twitter>
        <facebook>29103995</facebook>
        <friendstatus>friend</friendstatus>
        <checkin>
          <id>413421</id>
          <created>Mon, 29 Jun 09 14:21:06 +0000</created>
          <venue>
            <id>45506</id>
            <name>4SQ HQ - Soho</name>
            <address>...</address>
            <crossstreet>btw Grand &amp; Broome</crossstreet>
            <city>New York</city>
            <state>NY</state>
            <zip>10013</zip>
            ...
          </venue>
        </checkin>
        <badges>
              <badge>
                      <name>Newbie</name>
                      <icon>http://foursquare.com/img/badge/newbie_on.png</icon>
                      <description>Congrats on your first check-in!</description></badge>

認証済みユーザ、つまり自分自身の場合(一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>33</id>
  ...
  <settings>
    <sendtotwitter>false</sendtotwitter>
    <sendtofacebook>false</sendtofacebook>
    <pings>on</pings>
  </settings>

Friends

friendのリストを返します。もし、uidを指定しなかった場合、認証済みユーザのfriendリストが帰ります。もし、friendが許可しているのであれば、そのfriendのTwitterとFacebookアカウントも得られます。

URL
http://api.foursquare.com/v1/friends
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • uid (オプション): friendのリストを得たいユーザのuid

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<friends>
  <user>
    <id>32</id>
    <firstname>Dennis</firstname>
    <lastname>Crowley</lastname>
    <photo>http://playfoursquare.s3.amazonaws.com/userpix_thumbs/32_1239135232.jpg</photo>
    <gender>male</male>
    <phone>2120000000</phone>
    <email>dennis@crowley.co.uk</email>
    <twitter>dens</twitter>
    <facebook>803834</facebook>
  </user>
  ..
</friends>

Venueに関するメソッド

近隣検索

指定したあるいはキーワードに適合した場所に近いvenueのリストを返します。距離はメートル表記です。もし、認証しているのであれば、このメソッドはユーザとそのユーザのfriendに関係するメタデータも返します。認証されていない場合はこの情報は得られません。

<venue>ブロックの中のほとんどの情報は、オプションであることに注意してください。ユーザは住所、街、州といった情報がないvenueを作ることができます(そのvenueは緯度経度で指定されます)。アプリケーションは、このような状態にきちんと対処する必要があります。

<stats>ブロックには、そのvenueに関する回数の情報が入っています。<herenow>は、現在そこに何人いるかを示しています(この値は0に成り得ます)。

URL
http://api.foursquare.com/v1/venues
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
推奨
パラメータ
  • geolat (必須): 緯度
  • geolong (必須): 経度
  • l (オプション。初期値は10): 結果の最大数
  • q (オプション) 検索キーワード

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<venues>
      <group type="Nearby favorites">
      <venue>
        <id>257</id>
        <name>Bowery Ballroom</name>
          <primarycategory>
            <id>79167<id>
            <fullpathname>Nightlife:Music Venue:Rock Club</fullpathname>
            <nodename>Rock Club</nodename>
            <iconurl>http://foursquare.com/img/categories/nightlife/default.png</iconurl>
          </primarycategory>
        <distance>10</distance>
        <address>6 Delancey St</address>
        <crossstreet>at Bowery</crossstreet>
        <city>New York</city>
        <state>NY</state>
        <zip>10002</zip>
        <geolat>40.7204</geolat>
        <geolong>-73.9933</geolong>
          <phone>2120000000</phone>
          <twitter>BoweryBallroom</twitter>
          <stats>
            <herenow>36</herenow>
          </stats>
        </venue>
        <venue>
          <id>5055</id>
          <name>Hiro Ballroom</name>

Venueの詳細

もし、venueの識別子(vid)が与えられたならば、mayorに関する情報、tips、to-do、tagsを含むvenueの情報を返します。もし与えられたvidがすでに他の”master” venueと合併されていた場合、返答にはエラーの代わりにその”master”venueの情報が含まれます。(訳注:”master”venueについてよく分かっていません)

もしもこのcheck-inに関係するなにか特別な事があれば、<specials>ブロックが返されます。<specials>ノードは<special>と以下のサブノードを含みます。

  • mayor
  • count
  • frequency
  • その他

もし、specialが(現在見えているvenueの代わりに)近隣のvenueの場合、<kind>nearby</kind>と、<special>の中に<venue>ノードがあるはずです。これは近隣であることを強調しています。もし、現在ユーザが見ているvenueにspecialがあった場合、<venue>ブロックはなく、<kind>は”here”となります。

もしもユーザが認証されているならば、以下のメタデータも得られます。

  • stats: ユーザとそのユーザのfriendがその場所にcheck-inしたことがあるか(<beenhere>)
  • checkins: その場所に現在(過去3時間)check-inしている人を返します。認証済みのユーザで、かつ、friendであれば、<shout>と完全な<lastname>も得られます。
URL
http://api.foursquare.com/v1/venue
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
推奨
パラメータ
  • vid: 情報を得たいvenueのID

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<venue>
  <id>49049</id>
  <name>Pig &amp; Whistle</name>
  <primarycategory>
    <id>79153</id>
    <fullpathname>Nightlife:Bar</fullpathname>
    <nodename>Bar</nodename>
    <iconurl>http://foursquare.com/img/categories/nightlife/default.png</iconurl>
  </primarycategory>
  <address>365 Greenwich St</address>
  <crossstreet></crossstreet>
  <city>New York</city>
  <state>NY</state>
  <zip>10013</zip>
  <phone>2120000000</phone>
  <twitter>pignwhistle</twitter>
  <geolat>40.7192</geolat>
  <geolong>-74.0103</geolong>
  <stats>
    <checkins>828</checkins>
    <herenow>15</herenow>
    <beenhere>
      <me>true</me>
      <friends>true</friends>
    </beenhere>
    <mayor>
      <user>
        <id>134</id>
        <firstname>Noah</firstname>
        <lastname>Brier</lastname>
        <photo>http://foursquare.com/userpix/134_1229036664.jpg</photo>
        <gender>male</gender>
      </user>
      <count>2</count>
    </mayor>
  </stats>
  <checkins>
    <checkin>
      <id>12345</id>
      <created>Mon, 13 Apr 09 23:44:01 +0000</created>
      <shout>deliciousness</shout>
      <user>
        <id>209</id>
        <firstname>Harry</firstname>
        <lastname>Heymann</lastname>
        <photo>http://playfoursquare...</photo>
      </user>
    </checkin>
    ...
  <tips>
    <tip>
      <id>6579</id>
      <text>Don&apos;t miss the house-made salted hazelnut chocolate spread (perfected Nutella) for all the equally terrific truffles.</text>
      <url>http://google.com/</url>
      <created>Mon, 13 Apr 09 23:59:07 +0000</created>
      <user>
        <id>123</id>
        <firstname>Sean</firstname>
        <lastname>Good</lastname>
        <photo>http://foursquare.com/userpix/9425_1238710251.jpg</photo>
        <gender>male</gender>
      </user>
    </tip>
  ...
  <tags>
    <tag>lunch</tag>
    <tag>pub</tag>
  ...
  <specials>
    <special>
      <id>2</id>
      <type>mayor</type>
      <kind>nearby</kind>
      <message>If you're the mayor, show the bartender and your first drink is free! (just beer and well drinks guys, let's be fair)</message>
      <venue>
        <id>333</id>
        ...
      </venue>
    </special>
  </specials>
</venue>

カテゴリーリスト

現在サポートされている、カゴリーの階層リストを返します。

  • categories - サブカテゴリーの配列
  • id - その階層でのカテゴリーID (/addvenueに渡された場合、primarycategoriyidとして使われます)
  • fullpathname - コロン(“:”)で区切られた、カテゴリーへのパス
  • nodename - 現在のカテゴリーの名前 (インターフェースへ表示される)

トップレベルのカテゴリーにはvenueを割り当てることができないため、IDを持たないことに注意してください。

クライアントアプリケーションを設計するときには、セッションごとに一回だけカテゴリーリストを取得するよう(そして短い間キャッシュするように)にしてください。

URL
http://api.foursquare.com/v1/categories
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
No
パラメータ
なし

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<categories>
  <category>
     <fullpathname>Arts &amp; Entertainment</fullpathname>
     <nodename>Arts &amp; Entertainment</nodename>
     <iconurl>http://foursquare.com/img/categories/arts_entertainment.png</iconurl>
     <categories>
        <category>
           <id>78959</id>
           <fullpathname>Arts &amp; Entertainment:Arcade</fullpathname>
           <nodename>Arcade</nodename>
           <iconurl>http://foursquare.com/img/categories/arts_entertainment/arcade.png</iconurl>
        </category>
        <category>
           <id>78960</id>
           <fullpathname>Arts &amp; Entertainment:Art Gallery</fullpathname>
           <nodename>Art Gallery</nodename>
           <iconurl>http://foursquare.com/img/categories/arts_entertainment/artgallery.png</iconurl>
     </category>
...

Venueの追加

venueを追加します。

もし、<error>が返ってきた場合、ユーザに入力の手直しをする方法を提供してください。加えてユーザに、「気にするな。いいからここにcheck-inする(never mind, check-in here anyway)」という、venueの名前だけで/v1/checkinを使って手動(「venueless」)でcheck-inする選択肢を与えてください。このようなケースはあまりないかもしれませんが、ユーザが重複したvenueを望んだ場合にはこのようなことが起きる場合があります。

全てのフィールドはオプションです。しかし、有効な住所あるいは緯度経度のどちらかを指定しなければなりません。どのような場合でも、緯度経度は与えてくれることをお願いします。

また、このvenueをカテゴリーに割り当てるために、category(primarycategoryid)を入れても構いません。/categoriesメソッドを使うことで、全カテゴリーのリストを得られます。venueの追加の時には、ユーザにカテゴリーの階層を見せ、適切なカテゴリーを選ぶようにしてくださるようお願いします。

URL
http://api.foursquare.com/v1/addvenue
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • name : venueの名前
  • address: venueの住所 (例: “202 1st Avenue”)
  • crossstreet: 交差する道路名(例: “btw Grand & Broome”)
  • city: そのvenueがある街の名前
  • state: その街がある州の名前
  • zip(オプション): そのvenueのZIPコード(郵便番号)
  • phone(オプション): そのvenueの電話番号
  • geolat (オプションだが、推奨): 緯度
  • geolong (オプションだが、推奨): 経度
  • primarycategoryid - (オプション) venueを割り当てたいカテゴリーのID

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<venue>
  <id>49049</id>
  <name>Pig &amp; Whistle</name>
  <primarycategory>
    <id>79153</id>
    <fullpathname>Nightlife:Bar</fullpathname>
    <nodename>Bar</nodename>
    <iconurl>http://foursquare.com/img/categories/nightlife/default.png</iconurl>
  </primarycategory>
  <address>365 Greenwich St</address>
  <crossstreet></crossstreet>
  <city>New York</city>
  <state>NY</state>
  <zip>10013</zip>
  <phone></phone>
  <geolat>40.7192</geolat>
  <geolong>-74.0103</geolong>
  <stats>
    <checkins>0</checkins>
    ...
  </stats>
  <tips>
    <tip>
      ...
</venue>

VenueのProposeを変更する

venueのflag/proposeを変更します。

URL
http://api.foursquare.com/v1/venue/proposeedit
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • vid (必須): proposeを編集したいvenueのID
  • name (必須): venueの名前
  • adderss (必須); venueの住所(e.g., “202 1st Avenue”)
  • crossstreet(必須): 交差する道路名(例: “btw Grand & Broome”)
  • city(必須): そのvenueがある街の名前
  • state(必須): その街がある州の名前
  • zip(オプション): そのvenueのZIPコード(郵便番号)
  • phone(オプション): そのvenueの電話番号
  • geolat(必須): 緯度
  • geolong(必須): 経度

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<response>ok</response>

VenueをClosedにする

to-doアイテムとして、tipを付ける。(訳注: 説明が間違い?)

(Allows you to mark a tip as a to-do item)

URL
http://api.foursquare.com/v1/venue/flagclosed
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • vid(必須): closedと印を付けたいvenueのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<response>ok</response>

Tipメソッド

近隣のTipを検索

指定したエリアの近くにあるtipsのリストを返します。(距離はメートル表記です)

URL
http://api.foursquare.com/v1/tips
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
No。しかし、Recommended
パラメータ
  • geolat(必須): 緯度
  • geolong(必須): 経度
  • l (オプション。初期値は30): 返答結果の最大数

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<tips>
  <group type="Nearby">
    <tip>
      <id>8774</id>
      <text>The burgers here are surprisingly delicious! Order one and wait out the ten minutes by having a pleasant conversation with Margaret.</text>
      <distance>0</distance>
      <created>Thu, 30 Apr 09 23:41:27 +0000</created>
      <user>
        <id>1818</id>
        <firstname>Joe</firstname>
        <lastname>LaPenna</lastname>
        <photo>http://foursquare.com/userpix/1818_1239601037.jpg</photo>
        <gender>male</gender>
      </user>
      <venue>
        <id>36235</id>
        <name>KK Cafe</name>
        <address>252 Divisadero st</address>
        <crossstreet>Haight</crossstreet>
      </venue>
    </tip>

tip/to-doを加える

venueに新しいtipやto-doを加えます。

URL
http://api.foursquare.com/v1/addtip
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • vid(必須): tipやto-doを加えたvenueのID
  • text(必須): tipやto-doの文字列
  • type(オプション。初期値はtip): tipかtodoのどちらかを指定
  • geolat(オプション。しかし、推奨): 緯度
  • geolong(オプション。しかし、推奨): 経度

返答:

<?xml version="1.0" encoding="UTF-8"?>
<tip>
  <id>16634</id>
  <text>Get the hamburg doria (it's not on the menu)</text>
  <created>Fri, 10 Jul 09 17:17:38 +0000</created>
</tip>

tipにto-doという印を付ける

tipにto-doだという印を付けます。

URL
http://api.foursquare.com/v1/tip/marktodo
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • tid(必須): to-doと印をつけたいtipのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<tip><id>94337</id><text>good selection of port.</text><created>Tue, 24 Nov 09 21:07:41 +0000</created></tip>

tipにdoneという印をつける

tipにdoneという印をつけます。

URL
http://api.foursquare.com/v1/tip/markdone
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • tid(必須): Doneという印をつけたいtipのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<tip><id>94337</id><text>good selection of port.</text><created>Tue, 24 Nov 09 21:07:41 +0000</created></tip>

つけた印を外す

tipの印を外します(以前の状態があれば、その状態に戻ります)。例えば、tipがto-doリストにあった場合、そのtipはto-doリストから外されます。

URL
http://api.foursquare.com/v1/tip/unmark
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
tid(必須) - 印を外したいtip

返答:

<?xml version="1.0" encoding="UTF-8"?>
<tip><id>94337</id><text>good selection of port.</text><created>Tue, 24
Nov 09 21:07:41 +0000</created></tip>

Friendメソッド

認証待ちfriendのリスト取得

認証待ちfriendのリストを取得します。つまり、他のユーザがあるユーザにfriend要求を行っており、そのユーザがまだ承認していないユーザのリストです。

URL
http://api.foursquare.com/v1/friend/requests
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes

返答:

<?xml version="1.0" encoding="UTF-8"?>
<requests>
  <user>
    <id>16294</id>
    <firstname>Benjamin</firstname>
    <lastname>Bloom</lastname>
    <photo>http://playfoursquare.s3.amazonaws.com/userpix_thumbs/16294_1254927789056.jpg</photo>
    <gender>male</gender>
    <twitter>bsbnyc</twitter>
    <facebook>401256</facebook>
  </user>
  ...

friend リクエストの承認

他のユーザから送られてきているfriend要求を承認します。成功した場合、<user>オブジェクトを返します。

URL
http://api.foursquare.com/v1/friend/approve
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • uid (必須): 承認したいユーザのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>16294</id>
  <firstname>...</firstname>
  ...

friendリクエストの拒否

送られてきている、他のユーザからのfriendリクエストを拒否します。成功した場合、<user>オブジェクトを返します。

URL
http://api.foursquare.com/v1/friend/deny
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • uid (必須): 拒否したいユーザのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>16294</id>
  <firstname>...</firstname>
  ...

friendリクエストを送る

他のユーザにfriendリクエストを送る。成功した場合、<user>オブジェクトを返します。

URL
http://api.foursquare.com/v1/friend/sendrequest
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • uid (必須): friendリクエストを送りたいユーザのID

返答:

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>16294</id>
  <firstname>...</firstname>
  ...

名前でfriendを検索する

自由記述の文字列が含まれている場合、適合する<user>のリストを返します。このメソッドは適合するユーザのうち、まだfriendでないユーザだけを返します。

URL
http://api.foursquare.com/v1/findfriends/byname
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • q (必須): 名字と名前を検索するために使う検索文字列

返答:

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <id>16294</id>
    <firstname>...</firstname>
    ...

電話番号でfriendを探す

電話番号が綿された場合、適合する<user>オブジェクトのリストを返します。このメソッドはまだfriendになっていないユーザから適合するユーザを返します。渡す電話番号は一つだけでも構わないですし、カンマ”,”で区切った複数の電話番号を渡しても構いません。

URL
http://api.foursquare.com/v1/findfriends/byphone
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • q : 検索のキーとなる電話番号

返答:

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <id>16294</id>
    <firstname>...</firstname>
    ...

Twitterのユーザ名でfriendを探す

Twitterのユーザ名(Aとします)が渡されたとき、Twitter上でAのfriendであるユーザを<user>オブジェクトのリストとして返します。このメソッドはまだfriendになっていないユーザから適合するユーザを返します。

もし、Twitterのユーザ名が渡されてない場合、認証済みのユーザのTwitter名を使用します。

URL
http://api.foursquare.com/v1/findfriends/bytwitter
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
Yes
パラメータ
  • q(オプション): 検索したTwitterのユーザ名

返答:

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <id>16294</id>
    <firstname>...</firstname>
    ...

設定メソッド

Pingの設定

個々のfriendやあなた自身に関する通知のオプションを変更します。friendはuidで識別されます。

  • 例1: UID 33のユーザのpingを設定するには、"33=on"
  • 例2: ユーザ自身を"goodnight"に設定するには、"self=goodnight".
URL
http://api.foursquare.com/v1/settings/setpings
フォーマット
XML, JSON
HTTP Method(s)
POST
認証が必要か
Yes
パラメータ
  • self: あなた自身のpingの状態を設定します。取りうる値はon、off、goodnightのいずれかです
  • uid(オプション): friendのpingの状態を設定します。取りうる値はonかoffです

返答:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <pings>on</pings>
</settings>

その他のメソッド

テスト(Test)

「ok」という文字列を返します。

URL
http://api.foursquare.com/v1/test
フォーマット
XML, JSON
HTTP Method(s)
GET
認証が必要か
None

返答 (一部省略):

<?xml version="1.0" encoding="UTF-8"?>
<response>ok</response>

エラーの状態

状況によって、APIはエラーを返します。エラーは以下のカテゴリに分かれます。

<error>
間違った使い方でメソッドを呼びました。適切なパラメータを渡しているか、適切なHTTPメソッド(GETとPOST)を使っているかを確かめてください。このエラーはHTTPステータスコード 501(Not Implemented)を返します。 例: <error>Invalid Attribute Value: uid lksdjfl</error>
<ratelimited>
このメソッドを使う回数制限に達しました。同じメソッドを不必要に連続して何回も送ってないか確認してください。このエラーはHTTPステータスコード 400を返します。 例: <ratelimited>quota exceeded</ratelimited>
<unauthorized>
認証が適切ではありません。正しいユーザ名(email、電話番号)とパスワードの組み合わせを送っているか確認してください。このエラーはHTTPステータスコード 401(Unauthorized)を返します。 例: <unauthorized>authentication failed</unauthorized>