diff --git a/demo/instagram.yaml b/demo/instagram.yaml deleted file mode 100644 index 6b62e710..00000000 --- a/demo/instagram.yaml +++ /dev/null @@ -1,1057 +0,0 @@ ---- -swagger: '2.0' - -################################################################################ -# API Information # -################################################################################ -info: - version: v1 - title: Instagram API - description: | - The first version of the Instagram API is an exciting step forward towards - making it easier for users to have open access to their data. We created it - so that you can surface the amazing content Instagram users share every - second, in fun and innovative ways. - - Build something great! - - Once you've - [registered your client](http://instagram.com/developer/register/) it's easy - to start requesting data from Instagram. - - termsOfService: http://instagram.com/about/legal/terms/api - -################################################################################ -# Host, Base Path, Schemes and Content Types # -################################################################################ -host: api.instagram.com -basePath: /v1 -schemes: - - https -produces: - - application/json -consumes: - - application/json - -################################################################################ -# Tags # -################################################################################ -tags: - - name: JSONP - x-secondaryTag: true - description: | - If you're writing an AJAX application, and you'd like to wrap our response - with a callback, all you have to do is specify a callback parameter with - any API call: - ``` - https://api.instagram.com/v1/tags/coffee/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&callback=callbackFunction - ``` - Would respond with: - ```js - callbackFunction({ - ... - }); - ``` - - name: Pagination - x-secondaryTag: true - description: | - Sometimes you just can't get enough. For this reason, we've provided a - convenient way to access more data in any request for sequential data. - Simply call the url in the next_url parameter and we'll respond with the - next set of data. - ```json - { - ... - "pagination": { - "next_url": "https://api.instagram.com/v1/tags/puppy/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&max_id=13872296", - "next_max_id": "13872296" - } - } - ``` - On views where pagination is present, we also support the "count" parameter. - Simply set this to the number of items you'd like to receive. Note that the - default values should be fine for most applications - but if you decide to - increase this number there is a maximum value defined on each endpoint. - - name: PUT & DELETE in old browsers - x-secondaryTag: true - description: | - We do our best to have all our URLs be - [RESTful](http://en.wikipedia.org/wiki/Representational_state_transfer). - Every endpoint (URL) may support one of four different http verbs. GET - requests fetch information about an object, POST requests create objects, - PUT requests update objects, and finally DELETE requests will delete - objects. - - Since many old browsers don't support PUT or DELETE, we've made it easy to - fake PUTs and DELETEs. All you have to do is do a POST with _method=PUT or - _method=DELETE as a parameter and we will treat it as if you used PUT or - DELETE respectively. - - name: Users - - name: Relationships - description: | - Relationships are expressed using the following terms: - - **outgoing_status**: Your relationship to the user. Can be "follows", - "requested", "none". - **incoming_status**: A user's relationship to you. Can be "followed_by", - "requested_by", "blocked_by_you", "none". - - name: Media - description: | - At this time, uploading via the API is not possible. We made a conscious - choice not to add this for the following reasons: - - * Instagram is about your life on the go – we hope to encourage photos - from within the app. - * We want to fight spam & low quality photos. Once we allow uploading - from other sources, it's harder to control what comes into the Instagram - ecosystem. All this being said, we're working on ways to ensure users - have a consistent and high-quality experience on our platform. - - name: Commnts - - name: Likes - - name: Tags - - name: Location - - name: Subscribtions - -################################################################################ -# Security # -################################################################################ -securityDefinitions: - oauth: - type: oauth2 - flow: implicit - authorizationUrl: https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token - scopes: - basic: | - to read any and all data related to a user (e.g. following/followed-by - lists, photos, etc.) (granted by default) - comments: to create or delete comments on a user’s behalf - relationships: to follow and unfollow users on a user’s behalf - likes: to like and unlike items on a user’s behalf - key: - type: apiKey - in: query - name: access_token -security: - - oauth: - - basic - - comments - - relationships - - likes - - key: [] - -################################################################################ -# Parameters # -################################################################################ -parameters: - user-id: - name: user-id - in: path - description: The user identifier number - type: number - required: true - tag-name: - name: tag-name - in: path - description: Tag name - type: string - required: true - -################################################################################ -# Paths # -################################################################################ -paths: - /users/{user-id}: - parameters: - - $ref: '#/parameters/user-id' - get: - security: - - key: [] - - oauth: - - basic - tags: - - Users - - JSONP - - Pagination - description: Get basic information about a user. - responses: - 200: - description: The user object - schema: - type: object - properties: - data: - $ref: '#/definitions/User' - - /users/self/feed: - get: - tags: - - Users - - JSONP - - Pagination - description: See the authenticated user's feed. - parameters: - - name: count - in: query - description: Count of media to return. - type: integer - - name: max_id - in: query - description: Return media earlier than this max_id.s - type: integer - - name: min_id - in: query - description: Return media later than this min_id. - - type: integer - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Media' - - /users/{user-id}/media/recent: - parameters: - - $ref: '#/parameters/user-id' - get: - tags: - - Users - - JSONP - - Pagination - responses: - 200: - description: | - Get the most recent media published by a user. To get the most recent - media published by the owner of the access token, you can use `self` - instead of the `user-id`. - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Media' - parameters: - - name: count - in: query - description: Count of media to return. - type: integer - - name: max_timestamp - in: query - description: Return media before this UNIX timestamp. - type: integer - - name: min_timestamp - in: query - description: Return media after this UNIX timestamp. - type: integer - - name: min_id - in: query - description: Return media later than this min_id. - type: string - - name: max_id - in: query - description: Return media earlier than this max_id. - type: string - - /users/self/media/liked: - get: - tags: - - Users - - JSONP - - Pagination - description: | - See the list of media liked by the authenticated user. - Private media is returned as long as the authenticated user - has permissionto view that media. Liked media lists are only - available for the currently authenticated user. - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Media' - parameters: - - name: count - in: query - description: Count of media to return. - type: integer - - name: max_like_id - in: query - description: Return media liked before this id. - type: integer - - /users/search: - get: - tags: - - Users - - JSONP - - Pagination - description: Search for a user by name. - parameters: - - name: q - in: query - description: A query string - type: string - required: true - - name: count - in: query - description: Number of users to return. - type: string - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - - /users/{user-id}/follows: - parameters: - - $ref: '#/parameters/user-id' - get: - tags: - - Relationships - - JSONP - - Pagination - description: Get the list of users this user follows. - responses: - 200: - description: OK - schema: - properties: - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - - /users/{user-id}/followed-by: - parameters: - - $ref: '#/parameters/user-id' - get: - tags: - - Relationships - - JSONP - - Pagination - description: Get the list of users this user is followed by. - responses: - 200: - description: OK - schema: - properties: - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - - /users/self/requested-by: - get: - tags: - - Relationships - - JSONP - - Pagination - description: | - List the users who have requested this user's permission to follow. - responses: - 200: - description: OK - schema: - properties: - meta: - properties: - code: - type: integer - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - - /users/{user-id}/relationship: - parameters: - - $ref: '#/parameters/user-id' - post: - tags: - - Relationships - - JSONP - description: | - Modify the relationship between the current user and thetarget user. - security: - - oauth: - - relationships - parameters: - - name: action - in: body - description: One of follow/unfollow/block/unblock/approve/ignore. - schema: - type: string - enum: - - follow - - unfollow - - block - - unblock - - approve - - responses: - 200: - description: OK - schema: - properties: - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - - /media/{media-id}: - parameters: - - name: media-id - in: path - description: The media ID - type: integer - required: true - get: - tags: - - Media - - JSONP - - Pagination - description: | - Get information about a media object. - The returned type key will allow you to differentiate between `image` - and `video` media. - - Note: if you authenticate with an OAuth Token, you will receive the - `user_has_liked` key which quickly tells you whether the current user - has liked this media item. - responses: - 200: - description: OK - schema: - $ref: '#/definitions/Media' - - /media1/{shortcode}: #FIXME: correct path is /media/{shortcode} - parameters: - - name: shortcode - in: path - description: The media shortcode - type: string - required: true - get: - tags: - - Media - - JSONP - - Pagination - description: | - This endpoint returns the same response as **GET** `/media/media-id`. - - A media object's shortcode can be found in its shortlink URL. - An example shortlink is `http://instagram.com/p/D/` - Its corresponding shortcode is D. - - responses: - 200: - description: OK - schema: - $ref: '#/definitions/Media' - - /media/search: - get: - tags: - - Media - - JSONP - - Pagination - description: | - Search for media in a given area. The default time span is set to 5 - days. The time span must not exceed 7 days. Defaults time stamps cover - the last 5 days. Can return mix of image and video types. - - parameters: - - name: LAT - description: | - Latitude of the center search coordinate. If used, lng is required. - type: number - in: query - - name: MIN_TIMESTAMP - description: | - A unix timestamp. All media returned will be taken later than - this timestamp. - type: integer - in: query - - name: LNG - description: | - Longitude of the center search coordinate. If used, lat is required. - type: number - in: query - - name: MAX_TIMESTAMP - description: | - A unix timestamp. All media returned will be taken earlier than this - timestamp. - type: integer - in: query - - name: DISTANCE - description: Default is 1km (distance=1000), max distance is 5km. - type: integer - maximum: 5000 - default: 1000 - in: query - responses: - 200: - description: OK - schema: - type: object - description: List of all media with added `distance` property - properties: - data: - type: array - items: - allOf: - - $ref: '#/definitions/Media' - - - properties: - distance: - type: number - - /media/popular: - get: - tags: - - Media - - JSONP - - Pagination - description: | - Get a list of what media is most popular at the moment. - Can return mix of image and video types. - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Media' - - /media/{media-id}/comments: - parameters: - - name: media-id - in: path - description: Media ID - type: integer - required: true - get: - tags: - - Comments - - JSONP - - Pagination - description: | - Get a list of recent comments on a media object. - responses: - 200: - description: OK - schema: - properties: - meta: - properties: - code: - type: number - data: - type: array - items: - $ref: '#/definitions/Comment' - post: - tags: - - Comments - - Media - - JSONP - description: | - Create a comment on a media object with the following rules: - - * The total length of the comment cannot exceed 300 characters. - * The comment cannot contain more than 4 hashtags. - * The comment cannot contain more than 1 URL. - * The comment cannot consist of all capital letters. - security: - - oauth: - - comments - parameters: - - name: TEXT - description: | - Text to post as a comment on the media object as specified in - media-id. - in: body - schema: - type: number - responses: - 200: - description: OK - schema: - type: object - properties: - meta: - properties: - code: - type: number - data: - type: object - delete: - tags: - - Comments - - PUT & DELETE in old browsers - description: | - Remove a comment either on the authenticated user's media object or - authored by the authenticated user. - responses: - 200: - description: OK - schema: - type: object - properties: - meta: - properties: - code: - type: number - data: - type: object - - /media/{media-id}/likes: - parameters: - - name: media-id - in: path - description: Media ID - type: integer - required: true - get: - tags: - - Likes - - Media - - JSONP - - Pagination - description: | - Get a list of users who have liked this media. - responses: - 200: - description: OK - schema: - properties: - meta: - properties: - code: - type: number - data: - type: array - items: - $ref: '#/definitions/Like' - post: - tags: - - Likes - description: Set a like on this media by the currently authenticated user. - security: - - oauth: - - comments - responses: - 200: - description: OK - schema: - type: object - properties: - meta: - properties: - code: - type: number - data: - type: object - delete: - tags: - - Likes - - PUT & DELETE in old browsers - description: | - Remove a like on this media by the currently authenticated user. - responses: - 200: - description: OK - schema: - type: object - properties: - meta: - properties: - code: - type: number - data: - type: object - - /tags/{tag-name}: - parameters: - - $ref: '#/parameters/tag-name' - get: - tags: - - Tags - - JSONP - - Pagination - description: Get information about a tag object. - responses: - 200: - description: OK - schema: - $ref: '#/definitions/Tag' - - /tags/{tag-name}/media/recent: - parameters: - - $ref: '#/parameters/tag-name' - get: - tags: - - Tags - - JSONP - - Pagination - description: | - Get a list of recently tagged media. Use the `max_tag_id` and - `min_tag_id` parameters in the pagination response to paginate through - these objects. - responses: - 200: - description: OK - schema: - properties: - data: - type: array - items: - $ref: '#/definitions/Tag' - - /tags/search: - get: - tags: - - Tags - - JSONP - - Pagination - parameters: - - name: q - description: | - A valid tag name without a leading #. (eg. snowy, nofilter) - in: query - type: string - responses: - 200: - description: OK - schema: - type: object - properties: - meta: - properties: - code: - type: integer - data: - type: array - items: - $ref: '#/definitions/Tag' - - /locations/{location-id}: - parameters: - - name: location-id - description: Location ID - in: path - type: integer - required: true - get: - tags: - - Location - - JSONP - - Pagination - description: Get information about a location. - responses: - 200: - description: OK - schema: - type: object - properties: - data: - $ref: '#/definitions/Location' - - /locations/{location-id}/media/recent: - parameters: - - name: location-id - description: Location ID - in: path - type: integer - required: true - get: - tags: - - Location - - Media - - JSONP - - Pagination - description: Get a list of recent media objects from a given location. - parameters: - - name: max_timestamp - in: query - description: Return media before this UNIX timestamp. - type: integer - - name: min_timestamp - in: query - description: Return media after this UNIX timestamp. - type: integer - - name: min_id - in: query - description: Return media later than this min_id. - type: string - - name: max_id - in: query - description: Return media earlier than this max_id. - type: string - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Media' - - /locations/search: - get: - tags: - - Location - - JSONP - - Pagination - description: Search for a location by geographic coordinate. - parameters: - - name: distance - in: query - description: Default is 1000m (distance=1000), max distance is 5000. - type: integer - - - name: facebook_places_id - in: query - description: | - Returns a location mapped off of a Facebook places id. If used, a - Foursquare id and lat, lng are not required. - type: integer - - - name: foursquare_id - in: query - description: | - returns a location mapped off of a foursquare v1 api location id. - If used, you are not required to use lat and lng. Note that this - method is deprecated; you should use the new foursquare IDs with V2 - of their API. - type: integer - - - name: lat - in: query - description: | - atitude of the center search coordinate. If used, lng is required. - type: number - - - name: lng - in: query - description: | - ongitude of the center search coordinate. If used, lat is required. - type: number - - - name: foursquare_v2_id - in: query - description: | - Returns a location mapped off of a foursquare v2 api location id. If - used, you are not required to use lat and lng. - type: integer - responses: - 200: - description: OK - schema: - type: object - properties: - data: - type: array - items: - $ref: '#/definitions/Location' - - /geographies/{geo-id}/media/recent: - parameters: - - name: geo-id - in: path - description: Geolocation ID - type: integer - required: true - get: - tags: - - Media - - JSONP - - Pagination - description: | - Get recent media from a geography subscription that you created. - **Note**: You can only access Geographies that were explicitly created - by your OAuth client. Check the Geography Subscriptions section of the - [real-time updates page](https://instagram.com/developer/realtime/). - When you create a subscription to some geography - that you define, you will be returned a unique geo-id that can be used - in this query. To backfill photos from the location covered by this - geography, use the [media search endpoint - ](https://instagram.com/developer/endpoints/media/). - parameters: - - name: count - in: query - description: Max number of media to return. - type: integer - - name: min_id - in: query - description: Return media before this `min_id`. - type: integer - responses: - 200: - description: OK - -################################################################################ -# Definitions # -################################################################################ -definitions: - User: - type: object - properties: - id: - type: integer - username: - type: string - full_name: - type: string - profile_picture: - type: string - bio: - type: string - website: - type: string - counts: - type: object - properties: - media: - type: integer - follows: - type: integer - follwed_by: - type: integer - Media: - type: object - properties: - created_time: - description: Epoc time (ms) - type: integer - type: - type: string - filter: - type: string - tags: - type: array - items: - $ref: '#/definitions/Tag' - id: - type: integer - user: - $ref: '#/definitions/MiniProfile' - users_in_photo: - type: array - items: - $ref: '#/definitions/MiniProfile' - location: - $ref: '#/definitions/Location' - comments:: - type: object - properties: - count: - type: integer - data: - type: array - items: - $ref: '#/definitions/Comment' - likes: - type: object - properties: - count: - type: integer - data: - type: array - items: - $ref: '#/definitions/MiniProfile' - images: - properties: - low_resolution: - $ref: '#/definitions/Image' - thumbnail: - $ref: '#/definitions/Image' - standard_resolution: - $ref: '#/definitions/Image' - videos: - properties: - low_resolution: - $ref: '#/definitions/Image' - standard_resolution: - $ref: '#/definitions/Image' - Location: - type: object - properties: - id: - type: string - name: - type: string - latitude: - type: number - longitude: - type: number - Comment: - type: object - properties: - id: - type: string - created_time: - type: string - text: - type: string - from: - $ref: '#/definitions/MiniProfile' - Like: - type: object - properties: - user_name: - type: string - first_name: - type: string - last_name: - type: string - type: - type: string - id: - type: string - Tag: - type: object - properties: - media_count: - type: integer - name: - type: string - Image: - type: object - properties: - width: - type: integer - height: - type: integer - url: - type: string - MiniProfile: - type: object - description: A shorter version of User for likes array - properties: - user_name: - type: string - full_name: - type: string - id: - type: integer - profile_picture: - type: string