{ "SMDVersion": "2.0", // FIXME: is this the kind of value we're supposed to use here? "id": "http://developer.yahoo.com/search/", "description": "Yahoo's search API", transport: "JSONP", envelope: "URL", additionalParameters: true, parameters: [ { name: "appid", optional: false, "default": "dojotoolkit" }, { name: "output", optional: false, "default": "json" } ], // FIXME: Quite a few of these APIs can take multiple entries for the same parameter, to behave // as multi-select options. How should we handle these? // ANSWER: JSON Schema defines this aspect of SMD, enumeration of possible values is handled // with an "options" attribute. For example: // { name: "search_in", type: "string", optional: true, "default": "all", options:["all", "question", "best_answer"]}, // can be "all", "question", "best_answer" services: { // // ANSWERS // // FIXME: Some of these API endpoints' names only make sense when you know they're in the // Yahoo Answers part of the API; just reading a flat listing of methods in this SMD // likely won't have enough information about what they do. Should we split this up? // http://developer.yahoo.com/answers/V1/questionSearch.html questionSearch: { target: "http://answers.yahooapis.com/AnswersService/V1/questionSearch", parameters: [ { name: "query", type: "string", optional: false, "default": "" }, { name: "search_in", type: "string", optional: true, "default": "all" }, // can be "all", "question", "best_answer" { name: "category_id", type: "integer", optional: true, "default": null }, // one of (category_id, category_name) is required { name: "category_name", type: "string", optional: true, "default": null }, { name: "region", type: "string", optional: true, "default": "us" }, // can be "us", "uk", "ca", "au", "in", "es", "br", "ar", "mx", "e1", "it", "de", "fr", "sg" { name: "date_range", type: "string", optional: true, "default": "all" }, // can be "all", "7", "7-30", "30-60", "60-90", "more90" { name: "sort", type: "string", optional: true, "default": "relevance" }, // can be "relevance", "date_desc", "date_asc" { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "resolved", "open", "undecided" { name: "start", type: "integer", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 } // max 50 ] }, // http://developer.yahoo.com/answers/V1/getByCategory.html getByCategory: { target: "http://answers.yahooapis.com/AnswersService/V1/getByCategory", parameters: [ { name: "category_id", type: "integer", optional: true, "default": null }, // one of (category_id, category_name) is required { name: "category_name", type: "string", optional: true, "default": null }, { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "resolved", "open", "undecided" { name: "region", type: "string", optional: true, "default": "us" }, // can be "us", "uk", "ca", "au", "in", "es", "br", "ar", "mx", "e1", "it", "de", "fr", "sg" { name: "sort", type: "string", optional: true, "default": "date_desc" }, // can be "date_desc", "date_asc", "ans_count_desc", "ans_count_asc" { name: "start", type: "integer", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 } // max 50 ] }, // http://developer.yahoo.com/answers/V1/getQuestion.html getQuestion: { target: "http://answers.yahooapis.com/AnswersService/V1/getQuestion", parameters: [ { name: "question_id", type: "string", optional: true, "default": null } ] }, // http://developer.yahoo.com/answers/V1/getByUser.html getByUser: { target: "http://answers.yahooapis.com/AnswersService/V1/getByUser", parameters: [ { name: "user_id", type: "string", optional: false, "default": "" }, { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "resolved", "open", "undecided" { name: "filter", type: "string", optional: true, "default": "question" }, // can be "question", "answer", "best_answer" { name: "sort", type: "string", optional: true, "default": "date_desc" }, // can be "date_desc", "date_asc", "ans_count_desc", "ans_count_asc" { name: "start", type: "integer", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 } // max 50 ] }, // // AUDIO SEARCH // // http://developer.yahoo.com/search/audio/V1/artistSearch.html artistSearch: { target: "http://search.yahooapis.com/AudioSearchService/V1/artistSearch", parameters: [ { name: "artist", type: "string", optional: true, "default": "" }, // one of (artist, artistid) is required { name: "artistid", type: "string", optional: true, "default": "" }, { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "any", "phrase" { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/search/audio/V1/albumSearch.html albumSearch: { target: "http://search.yahooapis.com/AudioSearchService/V1/albumSearch", parameters: [ { name: "artist", type: "string", optional: true, "default": "" }, { name: "artistid", type: "string", optional: true, "default": "" }, { name: "album", type: "string", optional: true, "default": "" }, { name: "albumid", type: "string", optional: true, "default": "" }, { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "any", "phrase" { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/search/audio/V1/songSearch.html songSearch: { // beware, this method has returned many a JSON string containing syntax error(s) target: "http://search.yahooapis.com/AudioSearchService/V1/songSearch", parameters: [ { name: "artist", type: "string", optional: true, "default": "" }, { name: "artistid", type: "string", optional: true, "default": "" }, { name: "album", type: "string", optional: true, "default": "" }, { name: "albumid", type: "string", optional: true, "default": "" }, { name: "song", type: "string", optional: true, "default": "" }, { name: "songid", type: "string", optional: true, "default": "" }, { name: "type", type: "string", optional: true, "default": "all" }, // can be "all", "any", "phrase" { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/search/audio/V1/songDownloadLocation.html songDownloadLocation: { target: "http://search.yahooapis.com/AudioSearchService/V1/songDownloadLocation", parameters: [ { name: "songid", type: "string", optional: false, "default": "" }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "source", type: "string", optional: true, "default": "" } // can be "audiolunchbox", "artistdirect", "buymusic", "dmusic", "emusic", "epitonic", "garageband", "itunes", "yahoo", "livedownloads", "mp34u", "msn", "musicmatch", "mapster", "passalong", "rhapsody", "soundclick", "theweb" ] }, // // CONTENT ANALYSIS // // http://developer.yahoo.com/search/content/V1/termExtraction.html termExtraction: { // FIXME: the API docs say to submit this as a POST, but we need JSONP for cross-domain, right? // transport: "POST", target: "http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction", parameters: [ { name: "context", type: "string", optional: false, "default": "" }, { name: "query", type: "string", optional: true, "default": "" } ] }, // // CONTEXT SEARCH // // http://developer.yahoo.com/search/content/V1/contextSearch.html contextSearch: { target: "http://search.yahooapis.com/WebSearchService/V1/contextSearch", parameters: [ { name: "query", type: "string", optional: true, "default": "" }, { name: "context", type: "string", optional: false, "default": "" }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 100 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "format", type: "string", optional: true, "default": "any" }, // can be "any", "html", "msword", "pdf", "ppt", "rss", "txt", "xls" { name: "adult_ok", type: "boolean", optional: true, "default": null }, { name: "similar_ok", type: "boolean", optional: true, "default": null }, { name: "language", type: "string", optional: true, "default": null }, { name: "country", type: "string", optional: true, "default": null }, { name: "site", type: "string", optional: true, "default": null }, { name: "license", type: "string", optional: true, "default": "any" } // can be "any", "cc_any", "cc_commercial", "cc_modifiable" ] }, // // IMAGE SEARCH // // http://developer.yahoo.com/search/image/V1/imageSearch.html imageSearch: { target: "http://search.yahooapis.com/ImageSearchService/V1/imageSearch", parameters: [ { name: "query", type: "string", optional: false, "default": "" }, { name: "type", type: "string", optional: true, "default": "any" }, // can be "all", "any", "phrase" { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "format", type: "string", optional: true, "default": "any" }, // can be "any", "bmp", "gif", "jpeg", "png" { name: "adult_ok", type: "boolean", optional: true, "default": null }, { name: "coloration", type: "string", optional: true, "default": "any" }, // can be "any", "color", "bw" { name: "site", type: "string", optional: true, "default": null } ] }, // // LOCAL SEARCH // // http://developer.yahoo.com/search/local/V3/localSearch.html localSearch: { target: "http://local.yahooapis.com/LocalSearchService/V3/localSearch", parameters: [ { name: "query", type: "string", optional: true, "default": "" }, // optional, but one of (query, listing_id) is required { name: "listing_id", type: "string", optional: true, "default": "" }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 20 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "sort", type: "string", optional: true, "default": "relevance" }, // can be "relevance", "title", "distance", "rating" { name: "radius", type: "float", optional: true }, // the default varies according to location { name: "street", type: "string", optional: true, "default": null }, { name: "city", type: "string", optional: true, "default": null }, { name: "state", type: "string", optional: true, "default": null }, // full name or two-letter abbreviation { name: "zip", type: "any", optional: true, "default": null }, // ddddd or ddddd-dddd format { name: "location", type: "string", optional: true, "default": null }, // free text, supersedes the street, city, state, zip fields { name: "latitude", type: "float", optional: true }, // -90 to 90 { name: "longitude", type: "float", optional: true }, // -180 to 180 { name: "category", type: "integer", optional: true }, { name: "omit_category", type: "integer", optional: true }, { name: "minimum_rating", type: "integer", optional: true } ] }, // http://developer.yahoo.com/local/V1/collectionSearch.html collectionSearch: { target: "http://collections.local.yahooapis.com/LocalSearchService/V1/collectionSearch", parameters: [ { name: "query", type: "string", optional: true, "default": "" }, // optional, but at least one of (query, username) is required { name: "username", type: "string", optional: true, "default": "" }, { name: "city", type: "string", optional: true, "default": null }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/local/V1/getCollection.html getCollection: { target: "http://collections.local.yahooapis.com/LocalSearchService/V1/getCollection", parameters: [ { name: "collection_id", type: "integer", optional: false, "default": "" } ] }, // // MY WEB 2.0 // // http://developer.yahoo.com/search/myweb/V1/urlSearch.html urlSearch: { target: "http://search.yahooapis.com/MyWebService/V1/urlSearch", parameters: [ { name: "tag", type: "string", optional: true, "default": "" }, { name: "yahooid", type: "string", optional: true, "default": "" }, { name: "sort", type: "string", optional: true, "default": "date" }, // can be "date", "title", "url" { name: "reverse_sort", type: "boolean", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/search/myweb/V1/tagSearch.html tagSearch: { target: "http://search.yahooapis.com/MyWebService/V1/tagSearch", parameters: [ { name: "url", type: "string", optional: true, "default": "" }, { name: "yahooid", type: "string", optional: true, "default": "" }, { name: "sort", type: "string", optional: true, "default": "popularity" }, // can be "popularity", "tag", "date" { name: "reverse_sort", type: "boolean", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/search/myweb/V1/relatedTags.html relatedTags: { target: "http://search.yahooapis.com/MyWebService/V1/relatedTags", parameters: [ { name: "tag", type: "string", optional: false, "default": "" }, { name: "yahooid", type: "string", optional: true, "default": "" }, { name: "sort", type: "string", optional: true, "default": "popularity" }, // can be "popularity", "tag", "date" { name: "reverse_sort", type: "boolean", optional: true, "default": 0 }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // // NEWS SEARCH // // http://developer.yahoo.com/search/news/V1/newsSearch.html newsSearch: { target: "http://search.yahooapis.com/NewsSearchService/V1/newsSearch", parameters: [ { name: "query", type: "string", optional: false, "default": "" }, { name: "type", type: "string", optional: true, "default": "any" }, // can be "all", "any", "phrase" { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "sort", type: "string", optional: true, "default": "rank" }, // can be "rank", "date" { name: "language", type: "string", optional: true, "default": null }, { name: "site", type: "string", optional: true, "default": null } ] }, // // SHOPPING // // http://developer.yahoo.com/shopping/V2/catalogListing.html catalogListing: { target: "http://shopping.yahooapis.com/ShoppingService/V2/catalogListing", parameters: [ { name: "catalogid", type: "integer", optional: true, "default": null }, // required if idtype,idvalue are not specified { name: "getlisting", type: "boolean", optional: true, "default": 1 }, { name: "getreview", type: "boolean", optional: true, "default": 0 }, { name: "getspec", type: "boolean", optional: true, "default": 0 }, { name: "idtype", type: "string", optional: true, "default": null }, // can be "upc", "brand,model", "brand,partnum"; required if catalogid is not specified { name: "idvalue", type: "string", optional: true, "default": null }, // required if catalogid is not specified { name: "onlynew", type: "boolean", optional: true, "default": 1 }, { name: "reviewstart", type: "integer", optional: true, "default": 1 }, { name: "reviewsort", type: "string", optional: true, "default": "mostRecommended_descending" }, // can be "mostRecommended_descending", "mostRecommended_ascending", "latest_descending", "latest_ascending", "highestRated_descending", "highestRated_ascending" { name: "zip", type: "string", optional: true, "default": null } ] }, // http://developer.yahoo.com/shopping/V1/merchantSearch.html merchantSearch: { target: "http://api.shopping.yahoo.com/ShoppingService/V1/merchantSearch", parameters: [ { name: "merchantid", type: "integer", optional: false, "default": null } ] }, // http://developer.yahoo.com/shopping/V3/productSearch.html productSearch: { target: "http://shopping.yahooapis.com/ShoppingService/V3/productSearch", parameters: [ { name: "query", type: "string", optional: true, "default": "" }, // required if category is not specified { name: "category", type: "any", optional: true, "default": "" }, // required if query is not specified { name: "class", type: "string", optional: true, "default": null }, // can be "catalogs", "freeoffers", "paidoffers"; defaults to all three of these { name: "department", type: "integer", optional: true, "default": null }, { name: "highestprice", type: "float", optional: true, "default": null }, { name: "lowestprice", type: "float", optional: true, "default": null }, { name: "merchantId", type: "integer", optional: true, "default": null }, { name: "refinement", type: "string", optional: true, "default": null }, // used only if category is specified { name: "results", type: "integer", optional: true, "default": 10 }, // 1-50 { name: "show_numratings", type: "boolean", optional: true, "default": 0 }, { name: "show_narrowing", type: "boolean", optional: true, "default": 1 }, { name: "sort", type: "string", optional: true }, // can be "price_ascending", "price_descending", "userrating_ascending", "userrating_descending"; omitted, the default is to sort by relevance { name: "start", type: "integer", optional: true, "default": 1 } // 1-300 ] }, // // SITE EXPLORER // // http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html inlinkData: { target: "http://search.yahooapis.com/SiteExplorerService/V1/inlinkData", parameters: [ { name: "query", type: "string", optional: false, "default": "" }, { name: "results", type: "integer", optional: true, "default": 50 }, // max 100 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "entire_site", type: "boolean", optional: true, "default": null }, { name: "omit_inlinks", type: "string", optional: true, "default": "none" } // can be "none", "domain", "subdomain" ] }, // http://developer.yahoo.com/search/siteexplorer/V1/pageData.html pageData: { target: "http://search.yahooapis.com/SiteExplorerService/V1/pageData", parameters: [ { name: "query", type: "string", optional: false, "default": "" }, { name: "results", type: "integer", optional: true, "default": 50 }, // max 100 { name: "start", type: "integer", optional: true, "default": 1 }, { name: "domain_only", type: "boolean", optional: true, "default": null } ] }, // http://developer.yahoo.com/search/siteexplorer/V1/ping.html ping: { target: "http://search.yahooapis.com/SiteExplorerService/V1/ping", parameters: [ { name: "sitemap", type: "string", optional: false, "default": "" } ] }, // http://developer.yahoo.com/search/siteexplorer/V1/updateNotification.html updateNotification: { target: "http://search.yahooapis.com/SiteExplorerService/V1/updateNotification", parameters: [ { name: "url", type: "string", optional: false, "default": "" } ] }, // // TRAFFIC // // http://developer.yahoo.com/traffic/rest/V1/index.html trafficData: { target: "http://local.yahooapis.com/MapsService/V1/trafficData", parameters: [ { name: "street", type: "string", optional: true, "default": "" }, { name: "city", type: "string", optional: true, "default": "" }, { name: "state", type: "string", optional: true, "default": null }, // full name or two-letter abbreviation { name: "zip", type: "any", optional: true, "default": null }, // ddddd or ddddd-dddd format { name: "location", type: "string", optional: true, "default": null }, // free text, supersedes the street, city, state, zip fields { name: "latitude", type: "float", optional: true }, // -90 to 90 { name: "longitude", type: "float", optional: true }, // -180 to 180 { name: "severity", type: "integer", optional: true, "default": 1 }, // can be 1-5 { name: "zoom", type: "integer", optional: true, "default": 6 }, // can be 1-12 { name: "radius", type: "float", optional: true }, // in miles, default varies with location; ignored if zoom is specified { name: "include_map", type: "boolean", optional: true, "default": 0 }, { name: "image_type", type: "string", optional: true, "default": "png" }, // can be "png" or "gif" { name: "image_height", type: "integer", optional: true, "default": 500 }, // in pixels, can be 10-2000 { name: "image_width", type: "integer", optional: true, "default": 620 } // in pixels, can be 10-2000 ] }, // // TRAVEL // // http://developer.yahoo.com/travel/tripservice/V1.1/tripSearch.html tripSearch: { target: "http://travel.yahooapis.com/TripService/V1.1/tripSearch", parameters: [ { name: "query", type: "string", optional: true, "default": "" }, { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 { name: "start", type: "integer", optional: true, "default": 1 } ] }, // http://developer.yahoo.com/travel/tripservice/V1.1/getTrip.html getTrip: { target: "http://travel.yahooapis.com/TripService/V1.1/getTrip", parameters: [ { name: "id", type: "integer", optional: false, "default": null } ] }, // // UTILITY SERVICES // // http://developer.yahoo.com/util/timeservice/V1/getTime.html /* RGG: commented out because it refuses to return JSON format even when you tell it to do so (it returns a