{"note":"OpenAPI conversion -- returning structured metadata","name":"quotes-rest","description":"They Said So Quotes API","version":"5.1","base_url":"https://quotes.rest","endpoints":45,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api They Said So Quotes API\n@base https://quotes.rest\n@version 5.1\n@auth Bearer bearer\n@endpoints 45\n@hint download_for_search\n@toc qod(5), quote(32), qshow(8)\n\n@group qod\n@endpoint GET /qod\n@desc Gets `Quote of the Day` (QOD). Optional `category` param determines the category of returned quote of the day\n@optional {category: str(string) # QOD Category (Used in public QOD only), language: str(string)=en # Language of the QOD. The language must be supported in our QOD system., id: str(string) # QOD defition id (Used in private QOD only)}\n@returns(200) {success: str, contents: any} # 200  response\n@errors {400: 400  response}\n\n@endpoint PUT /qod\n@desc Create a private `Quote of the Day` service.\n@required {title: str(string) # Title of the Quote of the day category}\n@optional {repeat_after: int(integer)=30 # How many days after the quotes can repeat? If you are setting this up from your private collection make sure you have more quotes that meet the filter conditions than the days you specify here., authors: str(array) # Comma seperated author names. Quotes will be chosen from one of these authors., private: bool=false # Should apply the filters to the private collection. Default is public quotes in the platform., language: str(string)=en # Quotes language., sfw: bool=false # Consider only quotes marked as \"sfw\" (Safe for work).}\n@returns(200) {success: str, contents: [any]} # 200  response\n@errors {400: 400  response, 403: 403  No access response}\n\n@endpoint PATCH /qod\n@desc Update an existing private `Quote of the Day` definition.\n@required {title: str(string) # Title of the Quote of the day category}\n@optional {repeat_after: int(integer)=30 # How many days after the quotes can repeat? If you are setting this up from your private collection make sure you have more quotes that meet the filter conditions than the days you specify here., authors: str(array) # Comma seperated author names. Quotes will be chosen from one of these authors., private: bool=false # Should apply the filters to the private collection. Default is public quotes in the platform., language: str(string)=en # Quotes language., sfw: bool=false # Consider only quotes marked as \"sfw\" (Safe for work).}\n@returns(200) {success: str, contents: any} # 200  response\n@errors {400: 400  response, 403: 403  No access response}\n\n@endpoint GET /qod/categories\n@desc Gets a list of `Quote of the Day` Categories.\n@optional {language: str(string)=en # Language of the QOD category. The language must be supported in our QOD system., detailed: bool=false # Return detailed information of the categories. Note the data format changes between the two values of this switch.}\n@returns(200) 200  response\n@errors {400: 400  response}\n\n@endpoint GET /qod/languages\n@desc Gets a list of supported languages for `Quote of the Day`.\n@returns(200) 200  response\n\n@endgroup\n\n@group quote\n@endpoint GET /quote/random\n@desc Gets a `Random Quote`. When you are in a hurry this is what you call to get a random famous quote.\n@optional {language: str(string)=en # Language of the Quote. The language must be supported in our system., limit: int(integer)=1 # No of quotes to return. The max limit depends on the subscription level.}\n@returns(200) {success: str, contents: any} # 200  response\n@errors {401: 401  response}\n\n@endpoint GET /quote/search\n@desc Search for a `Quote` in They Said So platform. Optional `category` , `author`, `minlength`, `maxlength` params determines the filters applied while searching for the quote.\n@optional {category: str(string) # Quote Category, author: str(string) # Quote Author, minlength: int(int32)=100 # Quote minimum Length, maxlength: int(int32)=300 # Quote maximum Length, query: str(string) # keyword to search for in the quote, private: bool=false # Should search private collection? Default searches public collection., language: str(string)=en # Language of the Quote. The language must be supported in our system., limit: int(integer)=1 # No of quotes to return. The max limit depends on the subscription level., sfw: bool=false # Should search only SFW (Safe For Work) quotes?}\n@returns(200) {success: str, contents: any} # 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/categories/popular\n@desc Gets a list of popular `Quote` Categories.\n@optional {start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, limit: int(int32)=5 # Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level.}\n@returns(200) 200  response\n\n@endpoint GET /quote/categories/search\n@desc Gets a list of `Quote` Categories matching the query string.\n@optional {query: str(string)=0 # Text string to search for in the categories, start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, limit: int(int32)=2 # Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level.}\n@returns(200) 200  response\n\n@endpoint GET /quote/authors/popular\n@desc Gets a list of popular author names in the system.\n@optional {language: str(string)=en # Language. A same author may have quotes in two or more different languages. So for example 'Mahatma Gandhi' may be returned for language \"en\"(English), and \"மஹாத்மா காந்தி\" may be returned when the language is \"ta\" (Tamil)., detailed: bool=false # Should return detailed author information such as `birthday`, `death date`, `occupation`, `description` etc. Only available at certain subscription levels., start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, limit: int(int32)=5 # Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level.}\n@returns(200) 200  response\n@errors {400: 400  response}\n\n@endpoint GET /quote/authors/search\n@desc Gets a list of author names in the system.\n@optional {query: str(string) # Text string to search for in author names, language: str(string)=en # Language. A same author may have quotes in two or more different languages. So for example 'Mahatma Gandhi' may be returned for language \"en\"(English), and \"மஹாத்மா காந்தி\" may be returned when the language is \"ta\" (Tamil)., detailed: bool=false # Should return detailed author information such as `birthday`, `death date`, `occupation`, `description` etc. Only available at certain subscription levels., start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, limit: int(int32)=1 # Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level.}\n@returns(200) 200  response\n@errors {400: 400  response}\n\n@endpoint PUT /quote\n@desc Add a new quote to your private collection.\n@required {quote: str(string) # Quote}\n@optional {author: str(string) # Quote Author, tags: str(string) # Comma Separated tags, language: str(string)=en # Language. If not supplied an auto detection mechanism will be used to detect a language.}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint POST /quote\n@desc Add a new quote to your private collection. Same as 'PUT' but added since some clients don't handle PUT well.\n@required {quote: str(string) # Quote}\n@optional {author: str(string) # Quote Author, tags: str(string) # Comma Separated tags, language: str(string)=en # Language. If not supplied an auto detection mechanism will be used to detect a language.}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint PATCH /quote\n@desc Update a quote\n@required {id: str(string) # Quote ID}\n@optional {quote: str(string) # Quote, author: str(string) # Quote Author, language: str(string)=en # Language. If not supplied an auto detection mechanism will be used to detect a language., tags: str # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint GET /quote\n@desc Gets a `Quote` with a given `id`.\n@optional {id: str(string) # Quote ID}\n@returns(200) {success: str, contents: any} # 200  response\n@errors {401: 401  response}\n\n@endpoint DELETE /quote\n@desc Delete a quote. The user needs to be the owner of the quote to be able to delete it.\n@required {id: str(string) # Quote ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/list\n@desc Get the list of quotes in your private collection.\n@optional {start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, limit: int(int32)=10 # Response is paged. This parameter controls how many is returned in the result.}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint POST /quote/tags/add\n@desc Add a tag to a given Quote.\n@required {id: str(string) # Quote ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/tags/remove\n@desc Remove a tag from a given quote.\n@required {id: str(string) # Quote ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/like/toggle\n@desc Toggle the user like of the given Quote as a user of the API Key.\n@required {quote_id: str(string) # Quote ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/bookmark/toggle\n@desc Toggle the user bookmark of the given Quote as a user of the API Key.\n@required {quote_id: str(string) # Quote ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endgroup\n\n@group qshow\n@endpoint PUT /qshow\n@desc Create and add a new qshow to your private collection.\n@required {title: str(string) # Qshow title}\n@optional {description: str(string) # Qshow description, tags: [str] # Tags for the qshow}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint GET /qshow\n@desc Gets a details about a qshow.\n@required {id: str(string) # Qshow ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint PATCH /qshow\n@desc Update an existing qshow.\n@required {id: str(string) # Qshow ID}\n@optional {title: str(string) # Qshow title, description: str(string) # Qshow description, tags: [str] # Tags for the qshow}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint DELETE /qshow\n@desc Delete a qshow.\n@required {id: str(string) # Qshow ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /qshow/quotes/add\n@desc Add a quote to a given Qshow.\n@required {id: str(string) # Qshow ID, quoteid: str(string) # Quote ID to add the qshow collection}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /qshow/quotes/remove\n@desc Remove a quote to a given Qshow.\n@required {id: str(string) # Qshow ID, quoteid: str(string) # Quote ID to remove from the qshow collection}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /qshow/quotes\n@desc Get the quotes in a given Qshow.\n@required {id: str(string) # Qshow ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /qshow/list\n@desc Get the list of Qshows in They Said So platform.\n@optional {start: int(int32)=0 # Response is paged. This parameter controls where response starts the listing at, public: bool=false # Should include public qshows or not in the list}\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endgroup\n\n@group quote\n@endpoint PUT /quote/image\n@desc Create a new quote image for a given quote. Choose background colors/images , choose different font styles and generate a beautiful quote image. Did you just had a feeling of being a god or what?!\n@required {quote_id: str(string) # Quote id}\n@optional {bgimage_id: str(string)=theysaidso_default_background_image # Background Image id ( Will override bgcolor if supplied), bg_color: str(string) # Background Color(if background image id is not supplied), font_id: str(string)=theysaidso_default_font # Font id, text_color: str(string) # Text Color, text_size: str(string) # Text/font size, halign: str(string)=center # Horizontal text Alignment Value, valign: str(string)=center # Vertical text Alignment Value, width: int(integer) # Image Width(By default this takes the width of the background image), height: int(integer) # Image Height(By default this takes the height of the background image), branding: bool=false # Disable They Said So branding (Only available in certain subscription levels. Ignored in other levels), include_transparent_layer: bool=true # Should include a transparent layer between the text and the background image? This helps when the background image is bright and obscures the text.}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image\n@desc Gets a Quote image for a given id. Response can be an image file as a binary or a base64 encoded contents wrapped in json. `TODO`\n@required {id: str(string) # Quote Image id}\n@optional {binary: bool=true # Should the response be a direct file download of the image or a base64 encoded image file wrapped in json?}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint DELETE /quote/image\n@desc Delete a quote image. The user needs to be the owner of the quote image to be able to delete it.\n@required {id: str(string) # Quote Image ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image/search\n@desc Gets a Random Quote image. Optional `category` param determines the category of quote used in the image. Optional `author` param gets the quote image of a given author.\n@optional {category: str(string) # Quote Category, author: str(string) # Quote Author, private: bool=false # Should search private collection. Default searches public image collection.}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/background\n@desc Add an image for use later as a quote background image.\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint DELETE /quote/image/background\n@desc Delete a background image file. The user needs to be the owner of the background image to be able to delete it.\n@required {id: str(string) # Font ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image/background/search\n@desc Searches for a background image with a given tag.\n@optional {query: str(string) # Tag string}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image/background/list\n@desc Lists background images in your private collection.\n@optional {start: int(integer) # Response is paged. This parameter determines where the response should start.}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/background/tags/add\n@desc Add a tag to a given Image.\n@required {id: str(string) # Image ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/background/tags/remove\n@desc Remove a tag from a given Image.\n@required {id: str(string) # Image ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/font\n@desc Add a font file for use later in creating a quote image. This is essentially a `PUT` but not many clients handle PUT with binary stream i.e. a file, gracefully.\n@returns(200) 200  response\n@errors {401: 401  response}\n\n@endpoint DELETE /quote/image/font\n@desc Delete a font file. The user needs to be the owner of the font to be able to delete it.\n@required {id: str(string) # Font ID}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image/font/search\n@desc Searches for a font with a given tag.\n@optional {query: str(string) # Tag string}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint GET /quote/image/font/list\n@desc Lists background images in your private collection.\n@optional {start: int(integer) # Response is paged. This parameter determines where the response should start.}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/font/tags/add\n@desc Add a tag to a given font.\n@required {id: str(string) # Font ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endpoint POST /quote/image/font/tags/remove\n@desc Remove a tag from a given Font.\n@required {id: str(string) # Font ID, tags: str(string) # Comma Separated tags}\n@returns(200) 200  response\n@errors {401: 401  response, 404: 404  response}\n\n@endgroup\n\n@end\n"}