APIs in Python

Manish Patel

05-June-2023

What is an API?

API stands for Application Programming Interface. It is a set of rules, protocols, and tools that allows different software applications to communicate and interact with each other. APIs define how different components should interact, what requests and responses should look like, and what functionalities are available.

Components of an API

  1. Endpoints: An endpoint is a specific URL or URI (Uniform Resource Identifier) provided by the API that represents a specific resource or functionality. Each endpoint typically corresponds to a specific action or operation that you can perform.

  2. Request Methods: APIs use various HTTP methods to define the type of action to be performed on a resource. The most common methods are:

    • GET: Retrieve data or resources.
    • POST: Create new data or resources.
    • PUT: Update existing data or resources.
    • DELETE: Remove data or resources.
  3. Request Parameters: APIs often allow you to pass additional parameters along with your requests to refine the results or specify certain conditions. Parameters can be passed in the URL (query parameters) or in the request body.

  4. Request Headers: Headers provide additional information about the request, such as the content type, authentication credentials, caching directives, etc. Headers are used to pass metadata about the request to the server.

  1. Response: When you send a request to an API, it returns a response containing the requested data or the result of the operation. The response typically includes a status code, headers, and a response body that contains the actual data or the outcome of the operation.

  2. Status Codes: Status codes are standardized codes that indicate the outcome of a request. Common status codes include:

    • 200: OK (request successful).
    • 201: Created (resource successfully created).
    • 400: Bad Request (request malformed or invalid).
    • 401: Unauthorized (authentication required or credentials invalid).
    • 404: Not Found (requested resource not found).
  3. Response Body Format: The response body contains the data or information returned by the API. It can be in various formats such as JSON, XML, HTML, or others. JSON (JavaScript Object Notation) is a widely used format due to its simplicity and compatibility with multiple programming languages.

  4. Authentication: APIs often require authentication to ensure secure access to their resources. Authentication mechanisms can include API keys, tokens, OAuth, or other forms of identification to validate the requester’s identity.

Working of API

IMPORTANT CONCEPTS OF API

When working with APIs in Python, there are several important concepts to understand. Here are some key concepts:

  1. API (Application Programming Interface): An API is a set of rules and protocols that allows different software applications to communicate with each other. APIs define how different components should interact and exchange data.

  2. HTTP (Hypertext Transfer Protocol): APIs are commonly built using HTTP, which is a protocol for transferring data over the web. Understanding HTTP methods (GET, POST, PUT, DELETE) and status codes (200, 404, etc.) is crucial for interacting with APIs.

  3. Request: In Python, you can send HTTP requests to APIs using libraries like requests. Requests include the request method (GET, POST, etc.), headers, URL parameters, query parameters, and sometimes request body data.

  4. Response: API requests return responses that contain data from the server. Responses include status codes, headers, and response body data. The response body is often in formats like JSON, XML, or HTML.

  5. JSON (JavaScript Object Notation): JSON is a popular data format used by many APIs to exchange structured data. Python provides libraries like json to parse JSON responses into Python objects and serialize Python objects into JSON.

  1. Authentication: APIs often require authentication to ensure secure access to their resources. Common authentication methods include API keys, OAuth, and token-based authentication. Python provides ways to include authentication credentials in API requests.

  2. Pagination: APIs may paginate responses when the result set is large. Pagination allows you to retrieve data in smaller chunks using page numbers, offsets, or cursors. You typically need to handle pagination to access all the desired data.

  3. Error Handling: APIs can return errors or exceptions in their responses. It is important to handle these errors gracefully in your Python code. APIs often return error codes and messages that you can check and handle appropriately.

  4. Rate Limiting: APIs may have rate limits to control the number of requests a client can make within a certain timeframe. To respect these limits, you should track the number of requests made and add delays or retry logic when necessary.

  5. Documentation: API documentation provides detailed information about the API’s endpoints, request/response formats, authentication requirements, and available parameters. It is essential to refer to the API documentation to understand how to use an API effectively.

TYPES OF API

API LISTING

OPENWEATHER API

# importing requests and json
import requests, json
# base URL
BASE_URL = "https://api.openweathermap.org/data/2.5/weather?"
# City Name 
CITY = "Ahmedabad"
# API key 
API_KEY = "6661dfea9bba66f4296e4422eefb0cd1"
# upadting the URL
URL = BASE_URL + "q=" + CITY + "&appid=" +  API_KEY + "&lang=en&units=metric"
# HTTP request
response = requests.get(URL)
# checking the status code of the request
if response.status_code == 200:
   # getting data in the json format
   data = response.json()
   # getting the main dict block
   main = data['main']
   # getting temperature
   temperature = main['temp']
   # getting the humidity
   humidity = main['humidity']
   # getting the pressure
   pressure = main['pressure']
   # weather report
   report = data['weather']
   print(f"{CITY:-^30}")
   print(f"Temperature: {temperature}")
   print(f"Humidity: {humidity}")
   print(f"Pressure: {pressure}")
   print(f"Weather Report: {report[0]['description']}")
else:
   # showing the error message
   print("Error in the HTTP request")
----------Ahmedabad-----------
Temperature: 30.02
Humidity: 37
Pressure: 1007
Weather Report: scattered clouds

GITHUB API ACCESS

import requests

# Define the GitHub username
username = "patelmanishv"

# Define the GitHub API endpoint for user repositories
api_url = f"https://api.github.com/users/{username}/repos"

# Send a GET request to the GitHub API endpoint
response = requests.get(api_url)

# Check if the request was successful (status code 200)
if response.status_code == 200:
    # Retrieve the response data as JSON
    data = response.json()
    
    # Extract and process the repository information
    for repo in data:
        repo_name = repo["name"]
        repo_url = repo["html_url"]
        repo_description = repo["description"]
        
        print("Repository Name:", repo_name)
        print("URL:", repo_url)
        print("Description:", repo_description)
        print("------------------")
else:
    # Display an error message if the request was not successful
    print("Error accessing the GitHub API:", response.status_code)
Repository Name: asimpledjango
URL: https://github.com/patelmanishv/asimpledjango
Description: a simple django project
------------------
Repository Name: datascience
URL: https://github.com/patelmanishv/datascience
Description: None
------------------
Repository Name: datasciencecoursera
URL: https://github.com/patelmanishv/datasciencecoursera
Description: None
------------------
Repository Name: datasharing
URL: https://github.com/patelmanishv/datasharing
Description: The Leek group guide to data sharing 
------------------
Repository Name: DATASTRUCTURES
URL: https://github.com/patelmanishv/DATASTRUCTURES
Description: Data Structures lectures using python
------------------
Repository Name: deardiary
URL: https://github.com/patelmanishv/deardiary
Description: None
------------------
Repository Name: django
URL: https://github.com/patelmanishv/django
Description: django project
------------------
Repository Name: ExData_Plotting1
URL: https://github.com/patelmanishv/ExData_Plotting1
Description: Plotting Assignment 1 for Exploratory Data Analysis
------------------
Repository Name: getting-and-cleaning-data
URL: https://github.com/patelmanishv/getting-and-cleaning-data
Description: None
------------------
Repository Name: hello-world
URL: https://github.com/patelmanishv/hello-world
Description: None
------------------
Repository Name: hopr
URL: https://github.com/patelmanishv/hopr
Description: This is the development site for Hands-On Programming with R, a book that teaches how to program in R, with hands-on examples. Read the book at https://rstudio-education.github.io/hopr.
------------------
Repository Name: hugo-creative-portfolio-theme
URL: https://github.com/patelmanishv/hugo-creative-portfolio-theme
Description: Port of the creative portfolio theme to Hugo
------------------
Repository Name: Industry-4.0
URL: https://github.com/patelmanishv/Industry-4.0
Description: None
------------------
Repository Name: internet
URL: https://github.com/patelmanishv/internet
Description: None
------------------
Repository Name: intro_to_networkx
URL: https://github.com/patelmanishv/intro_to_networkx
Description: None
------------------
Repository Name: latex-beamer-teamplates
URL: https://github.com/patelmanishv/latex-beamer-teamplates
Description: My LaTeX Beamer Templates for Daily Presentation and Documentation.
------------------
Repository Name: LEARNINGPATHS
URL: https://github.com/patelmanishv/LEARNINGPATHS
Description: This repository hosts links to learning and enhancing various computer science skills
------------------
Repository Name: Machine-Learning-using-Python
URL: https://github.com/patelmanishv/Machine-Learning-using-Python
Description: None
------------------
Repository Name: ml
URL: https://github.com/patelmanishv/ml
Description: None
------------------
Repository Name: networkx
URL: https://github.com/patelmanishv/networkx
Description: None
------------------
Repository Name: patelmanishv
URL: https://github.com/patelmanishv/patelmanishv
Description: None
------------------
Repository Name: patelmanishv.github.io
URL: https://github.com/patelmanishv/patelmanishv.github.io
Description: None
------------------
Repository Name: ProgrammingAssignment2
URL: https://github.com/patelmanishv/ProgrammingAssignment2
Description: Repository for Programming Assignment 2 for R Programming on Coursera
------------------
Repository Name: raditian-free-hugo-theme
URL: https://github.com/patelmanishv/raditian-free-hugo-theme
Description: Raditian Hugo Theme for Personal Websites
------------------
Repository Name: RepData_PeerAssessment1
URL: https://github.com/patelmanishv/RepData_PeerAssessment1
Description: Peer Assessment 1 for Reproducible Research
------------------
Repository Name: reveal.js
URL: https://github.com/patelmanishv/reveal.js
Description: The HTML Presentation Framework
------------------
Repository Name: Sem4Data
URL: https://github.com/patelmanishv/Sem4Data
Description: None
------------------
Repository Name: Sem4Unit4
URL: https://github.com/patelmanishv/Sem4Unit4
Description: None
------------------
Repository Name: socket
URL: https://github.com/patelmanishv/socket
Description: None
------------------
Repository Name: socketbasics
URL: https://github.com/patelmanishv/socketbasics
Description: None
------------------

JSONPLACEHOLDER API

import requests

# Define the JSONPlaceholder API endpoint for posts
api_url = "https://jsonplaceholder.typicode.com/posts"

# Send a GET request to the JSONPlaceholder API endpoint
response = requests.get(api_url)

# Check if the request was successful (status code 200)
if response.status_code == 200:
    # Retrieve the response data as JSON
    data = response.json()
    
    # Extract and process the post information
    for post in data:
        post_title = post["title"]
        post_body = post["body"]
        
        print("Title:", post_title)
        print("Body:", post_body)
        print("------------------")
else:
    # Display an error message if the request was not successful
    print("Error accessing the JSONPlaceholder API:", response.status_code)
Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
Body: quia et suscipit
suscipit recusandae consequuntur expedita et cum
reprehenderit molestiae ut ut quas totam
nostrum rerum est autem sunt rem eveniet architecto
------------------
Title: qui est esse
Body: est rerum tempore vitae
sequi sint nihil reprehenderit dolor beatae ea dolores neque
fugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis
qui aperiam non debitis possimus qui neque nisi nulla
------------------
Title: ea molestias quasi exercitationem repellat qui ipsa sit aut
Body: et iusto sed quo iure
voluptatem occaecati omnis eligendi aut ad
voluptatem doloribus vel accusantium quis pariatur
molestiae porro eius odio et labore et velit aut
------------------
Title: eum et est occaecati
Body: ullam et saepe reiciendis voluptatem adipisci
sit amet autem assumenda provident rerum culpa
quis hic commodi nesciunt rem tenetur doloremque ipsam iure
quis sunt voluptatem rerum illo velit
------------------
Title: nesciunt quas odio
Body: repudiandae veniam quaerat sunt sed
alias aut fugiat sit autem sed est
voluptatem omnis possimus esse voluptatibus quis
est aut tenetur dolor neque
------------------
Title: dolorem eum magni eos aperiam quia
Body: ut aspernatur corporis harum nihil quis provident sequi
mollitia nobis aliquid molestiae
perspiciatis et ea nemo ab reprehenderit accusantium quas
voluptate dolores velit et doloremque molestiae
------------------
Title: magnam facilis autem
Body: dolore placeat quibusdam ea quo vitae
magni quis enim qui quis quo nemo aut saepe
quidem repellat excepturi ut quia
sunt ut sequi eos ea sed quas
------------------
Title: dolorem dolore est ipsam
Body: dignissimos aperiam dolorem qui eum
facilis quibusdam animi sint suscipit qui sint possimus cum
quaerat magni maiores excepturi
ipsam ut commodi dolor voluptatum modi aut vitae
------------------
Title: nesciunt iure omnis dolorem tempora et accusantium
Body: consectetur animi nesciunt iure dolore
enim quia ad
veniam autem ut quam aut nobis
et est aut quod aut provident voluptas autem voluptas
------------------
Title: optio molestias id quia eum
Body: quo et expedita modi cum officia vel magni
doloribus qui repudiandae
vero nisi sit
quos veniam quod sed accusamus veritatis error
------------------
Title: et ea vero quia laudantium autem
Body: delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus
accusamus in eum beatae sit
vel qui neque voluptates ut commodi qui incidunt
ut animi commodi
------------------
Title: in quibusdam tempore odit est dolorem
Body: itaque id aut magnam
praesentium quia et ea odit et ea voluptas et
sapiente quia nihil amet occaecati quia id voluptatem
incidunt ea est distinctio odio
------------------
Title: dolorum ut in voluptas mollitia et saepe quo animi
Body: aut dicta possimus sint mollitia voluptas commodi quo doloremque
iste corrupti reiciendis voluptatem eius rerum
sit cumque quod eligendi laborum minima
perferendis recusandae assumenda consectetur porro architecto ipsum ipsam
------------------
Title: voluptatem eligendi optio
Body: fuga et accusamus dolorum perferendis illo voluptas
non doloremque neque facere
ad qui dolorum molestiae beatae
sed aut voluptas totam sit illum
------------------
Title: eveniet quod temporibus
Body: reprehenderit quos placeat
velit minima officia dolores impedit repudiandae molestiae nam
voluptas recusandae quis delectus
officiis harum fugiat vitae
------------------
Title: sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio
Body: suscipit nam nisi quo aperiam aut
asperiores eos fugit maiores voluptatibus quia
voluptatem quis ullam qui in alias quia est
consequatur magni mollitia accusamus ea nisi voluptate dicta
------------------
Title: fugit voluptas sed molestias voluptatem provident
Body: eos voluptas et aut odit natus earum
aspernatur fuga molestiae ullam
deserunt ratione qui eos
qui nihil ratione nemo velit ut aut id quo
------------------
Title: voluptate et itaque vero tempora molestiae
Body: eveniet quo quis
laborum totam consequatur non dolor
ut et est repudiandae
est voluptatem vel debitis et magnam
------------------
Title: adipisci placeat illum aut reiciendis qui
Body: illum quis cupiditate provident sit magnam
ea sed aut omnis
veniam maiores ullam consequatur atque
adipisci quo iste expedita sit quos voluptas
------------------
Title: doloribus ad provident suscipit at
Body: qui consequuntur ducimus possimus quisquam amet similique
suscipit porro ipsam amet
eos veritatis officiis exercitationem vel fugit aut necessitatibus totam
omnis rerum consequatur expedita quidem cumque explicabo
------------------
Title: asperiores ea ipsam voluptatibus modi minima quia sint
Body: repellat aliquid praesentium dolorem quo
sed totam minus non itaque
nihil labore molestiae sunt dolor eveniet hic recusandae veniam
tempora et tenetur expedita sunt
------------------
Title: dolor sint quo a velit explicabo quia nam
Body: eos qui et ipsum ipsam suscipit aut
sed omnis non odio
expedita earum mollitia molestiae aut atque rem suscipit
nam impedit esse
------------------
Title: maxime id vitae nihil numquam
Body: veritatis unde neque eligendi
quae quod architecto quo neque vitae
est illo sit tempora doloremque fugit quod
et et vel beatae sequi ullam sed tenetur perspiciatis
------------------
Title: autem hic labore sunt dolores incidunt
Body: enim et ex nulla
omnis voluptas quia qui
voluptatem consequatur numquam aliquam sunt
totam recusandae id dignissimos aut sed asperiores deserunt
------------------
Title: rem alias distinctio quo quis
Body: ullam consequatur ut
omnis quis sit vel consequuntur
ipsa eligendi ipsum molestiae et omnis error nostrum
molestiae illo tempore quia et distinctio
------------------
Title: est et quae odit qui non
Body: similique esse doloribus nihil accusamus
omnis dolorem fuga consequuntur reprehenderit fugit recusandae temporibus
perspiciatis cum ut laudantium
omnis aut molestiae vel vero
------------------
Title: quasi id et eos tenetur aut quo autem
Body: eum sed dolores ipsam sint possimus debitis occaecati
debitis qui qui et
ut placeat enim earum aut odit facilis
consequatur suscipit necessitatibus rerum sed inventore temporibus consequatur
------------------
Title: delectus ullam et corporis nulla voluptas sequi
Body: non et quaerat ex quae ad maiores
maiores recusandae totam aut blanditiis mollitia quas illo
ut voluptatibus voluptatem
similique nostrum eum
------------------
Title: iusto eius quod necessitatibus culpa ea
Body: odit magnam ut saepe sed non qui
tempora atque nihil
accusamus illum doloribus illo dolor
eligendi repudiandae odit magni similique sed cum maiores
------------------
Title: a quo magni similique perferendis
Body: alias dolor cumque
impedit blanditiis non eveniet odio maxime
blanditiis amet eius quis tempora quia autem rem
a provident perspiciatis quia
------------------
Title: ullam ut quidem id aut vel consequuntur
Body: debitis eius sed quibusdam non quis consectetur vitae
impedit ut qui consequatur sed aut in
quidem sit nostrum et maiores adipisci atque
quaerat voluptatem adipisci repudiandae
------------------
Title: doloremque illum aliquid sunt
Body: deserunt eos nobis asperiores et hic
est debitis repellat molestiae optio
nihil ratione ut eos beatae quibusdam distinctio maiores
earum voluptates et aut adipisci ea maiores voluptas maxime
------------------
Title: qui explicabo molestiae dolorem
Body: rerum ut et numquam laborum odit est sit
id qui sint in
quasi tenetur tempore aperiam et quaerat qui in
rerum officiis sequi cumque quod
------------------
Title: magnam ut rerum iure
Body: ea velit perferendis earum ut voluptatem voluptate itaque iusto
totam pariatur in
nemo voluptatem voluptatem autem magni tempora minima in
est distinctio qui assumenda accusamus dignissimos officia nesciunt nobis
------------------
Title: id nihil consequatur molestias animi provident
Body: nisi error delectus possimus ut eligendi vitae
placeat eos harum cupiditate facilis reprehenderit voluptatem beatae
modi ducimus quo illum voluptas eligendi
et nobis quia fugit
------------------
Title: fuga nam accusamus voluptas reiciendis itaque
Body: ad mollitia et omnis minus architecto odit
voluptas doloremque maxime aut non ipsa qui alias veniam
blanditiis culpa aut quia nihil cumque facere et occaecati
qui aspernatur quia eaque ut aperiam inventore
------------------
Title: provident vel ut sit ratione est
Body: debitis et eaque non officia sed nesciunt pariatur vel
voluptatem iste vero et ea
numquam aut expedita ipsum nulla in
voluptates omnis consequatur aut enim officiis in quam qui
------------------
Title: explicabo et eos deleniti nostrum ab id repellendus
Body: animi esse sit aut sit nesciunt assumenda eum voluptas
quia voluptatibus provident quia necessitatibus ea
rerum repudiandae quia voluptatem delectus fugit aut id quia
ratione optio eos iusto veniam iure
------------------
Title: eos dolorem iste accusantium est eaque quam
Body: corporis rerum ducimus vel eum accusantium
maxime aspernatur a porro possimus iste omnis
est in deleniti asperiores fuga aut
voluptas sapiente vel dolore minus voluptatem incidunt ex
------------------
Title: enim quo cumque
Body: ut voluptatum aliquid illo tenetur nemo sequi quo facilis
ipsum rem optio mollitia quas
voluptatem eum voluptas qui
unde omnis voluptatem iure quasi maxime voluptas nam
------------------
Title: non est facere
Body: molestias id nostrum
excepturi molestiae dolore omnis repellendus quaerat saepe
consectetur iste quaerat tenetur asperiores accusamus ex ut
nam quidem est ducimus sunt debitis saepe
------------------
Title: commodi ullam sint et excepturi error explicabo praesentium voluptas
Body: odio fugit voluptatum ducimus earum autem est incidunt voluptatem
odit reiciendis aliquam sunt sequi nulla dolorem
non facere repellendus voluptates quia
ratione harum vitae ut
------------------
Title: eligendi iste nostrum consequuntur adipisci praesentium sit beatae perferendis
Body: similique fugit est
illum et dolorum harum et voluptate eaque quidem
exercitationem quos nam commodi possimus cum odio nihil nulla
dolorum exercitationem magnam ex et a et distinctio debitis
------------------
Title: optio dolor molestias sit
Body: temporibus est consectetur dolore
et libero debitis vel velit laboriosam quia
ipsum quibusdam qui itaque fuga rem aut
ea et iure quam sed maxime ut distinctio quae
------------------
Title: ut numquam possimus omnis eius suscipit laudantium iure
Body: est natus reiciendis nihil possimus aut provident
ex et dolor
repellat pariatur est
nobis rerum repellendus dolorem autem
------------------
Title: aut quo modi neque nostrum ducimus
Body: voluptatem quisquam iste
voluptatibus natus officiis facilis dolorem
quis quas ipsam
vel et voluptatum in aliquid
------------------
Title: quibusdam cumque rem aut deserunt
Body: voluptatem assumenda ut qui ut cupiditate aut impedit veniam
occaecati nemo illum voluptatem laudantium
molestiae beatae rerum ea iure soluta nostrum
eligendi et voluptate
------------------
Title: ut voluptatem illum ea doloribus itaque eos
Body: voluptates quo voluptatem facilis iure occaecati
vel assumenda rerum officia et
illum perspiciatis ab deleniti
laudantium repellat ad ut et autem reprehenderit
------------------
Title: laborum non sunt aut ut assumenda perspiciatis voluptas
Body: inventore ab sint
natus fugit id nulla sequi architecto nihil quaerat
eos tenetur in in eum veritatis non
quibusdam officiis aspernatur cumque aut commodi aut
------------------
Title: repellendus qui recusandae incidunt voluptates tenetur qui omnis exercitationem
Body: error suscipit maxime adipisci consequuntur recusandae
voluptas eligendi et est et voluptates
quia distinctio ab amet quaerat molestiae et vitae
adipisci impedit sequi nesciunt quis consectetur
------------------
Title: soluta aliquam aperiam consequatur illo quis voluptas
Body: sunt dolores aut doloribus
dolore doloribus voluptates tempora et
doloremque et quo
cum asperiores sit consectetur dolorem
------------------
Title: qui enim et consequuntur quia animi quis voluptate quibusdam
Body: iusto est quibusdam fuga quas quaerat molestias
a enim ut sit accusamus enim
temporibus iusto accusantium provident architecto
soluta esse reprehenderit qui laborum
------------------
Title: ut quo aut ducimus alias
Body: minima harum praesentium eum rerum illo dolore
quasi exercitationem rerum nam
porro quis neque quo
consequatur minus dolor quidem veritatis sunt non explicabo similique
------------------
Title: sit asperiores ipsam eveniet odio non quia
Body: totam corporis dignissimos
vitae dolorem ut occaecati accusamus
ex velit deserunt
et exercitationem vero incidunt corrupti mollitia
------------------
Title: sit vel voluptatem et non libero
Body: debitis excepturi ea perferendis harum libero optio
eos accusamus cum fuga ut sapiente repudiandae
et ut incidunt omnis molestiae
nihil ut eum odit
------------------
Title: qui et at rerum necessitatibus
Body: aut est omnis dolores
neque rerum quod ea rerum velit pariatur beatae excepturi
et provident voluptas corrupti
corporis harum reprehenderit dolores eligendi
------------------
Title: sed ab est est
Body: at pariatur consequuntur earum quidem
quo est laudantium soluta voluptatem
qui ullam et est
et cum voluptas voluptatum repellat est
------------------
Title: voluptatum itaque dolores nisi et quasi
Body: veniam voluptatum quae adipisci id
et id quia eos ad et dolorem
aliquam quo nisi sunt eos impedit error
ad similique veniam
------------------
Title: qui commodi dolor at maiores et quis id accusantium
Body: perspiciatis et quam ea autem temporibus non voluptatibus qui
beatae a earum officia nesciunt dolores suscipit voluptas et
animi doloribus cum rerum quas et magni
et hic ut ut commodi expedita sunt
------------------
Title: consequatur placeat omnis quisquam quia reprehenderit fugit veritatis facere
Body: asperiores sunt ab assumenda cumque modi velit
qui esse omnis
voluptate et fuga perferendis voluptas
illo ratione amet aut et omnis
------------------
Title: voluptatem doloribus consectetur est ut ducimus
Body: ab nemo optio odio
delectus tenetur corporis similique nobis repellendus rerum omnis facilis
vero blanditiis debitis in nesciunt doloribus dicta dolores
magnam minus velit
------------------
Title: beatae enim quia vel
Body: enim aspernatur illo distinctio quae praesentium
beatae alias amet delectus qui voluptate distinctio
odit sint accusantium autem omnis
quo molestiae omnis ea eveniet optio
------------------
Title: voluptas blanditiis repellendus animi ducimus error sapiente et suscipit
Body: enim adipisci aspernatur nemo
numquam omnis facere dolorem dolor ex quis temporibus incidunt
ab delectus culpa quo reprehenderit blanditiis asperiores
accusantium ut quam in voluptatibus voluptas ipsam dicta
------------------
Title: et fugit quas eum in in aperiam quod
Body: id velit blanditiis
eum ea voluptatem
molestiae sint occaecati est eos perspiciatis
incidunt a error provident eaque aut aut qui
------------------
Title: consequatur id enim sunt et et
Body: voluptatibus ex esse
sint explicabo est aliquid cumque adipisci fuga repellat labore
molestiae corrupti ex saepe at asperiores et perferendis
natus id esse incidunt pariatur
------------------
Title: repudiandae ea animi iusto
Body: officia veritatis tenetur vero qui itaque
sint non ratione
sed et ut asperiores iusto eos molestiae nostrum
veritatis quibusdam et nemo iusto saepe
------------------
Title: aliquid eos sed fuga est maxime repellendus
Body: reprehenderit id nostrum
voluptas doloremque pariatur sint et accusantium quia quod aspernatur
et fugiat amet
non sapiente et consequatur necessitatibus molestiae
------------------
Title: odio quis facere architecto reiciendis optio
Body: magnam molestiae perferendis quisquam
qui cum reiciendis
quaerat animi amet hic inventore
ea quia deleniti quidem saepe porro velit
------------------
Title: fugiat quod pariatur odit minima
Body: officiis error culpa consequatur modi asperiores et
dolorum assumenda voluptas et vel qui aut vel rerum
voluptatum quisquam perspiciatis quia rerum consequatur totam quas
sequi commodi repudiandae asperiores et saepe a
------------------
Title: voluptatem laborum magni
Body: sunt repellendus quae
est asperiores aut deleniti esse accusamus repellendus quia aut
quia dolorem unde
eum tempora esse dolore
------------------
Title: et iusto veniam et illum aut fuga
Body: occaecati a doloribus
iste saepe consectetur placeat eum voluptate dolorem et
qui quo quia voluptas
rerum ut id enim velit est perferendis
------------------
Title: sint hic doloribus consequatur eos non id
Body: quam occaecati qui deleniti consectetur
consequatur aut facere quas exercitationem aliquam hic voluptas
neque id sunt ut aut accusamus
sunt consectetur expedita inventore velit
------------------
Title: consequuntur deleniti eos quia temporibus ab aliquid at
Body: voluptatem cumque tenetur consequatur expedita ipsum nemo quia explicabo
aut eum minima consequatur
tempore cumque quae est et
et in consequuntur voluptatem voluptates aut
------------------
Title: enim unde ratione doloribus quas enim ut sit sapiente
Body: odit qui et et necessitatibus sint veniam
mollitia amet doloremque molestiae commodi similique magnam et quam
blanditiis est itaque
quo et tenetur ratione occaecati molestiae tempora
------------------
Title: dignissimos eum dolor ut enim et delectus in
Body: commodi non non omnis et voluptas sit
autem aut nobis magnam et sapiente voluptatem
et laborum repellat qui delectus facilis temporibus
rerum amet et nemo voluptate expedita adipisci error dolorem
------------------
Title: doloremque officiis ad et non perferendis
Body: ut animi facere
totam iusto tempore
molestiae eum aut et dolorem aperiam
quaerat recusandae totam odio
------------------
Title: necessitatibus quasi exercitationem odio
Body: modi ut in nulla repudiandae dolorum nostrum eos
aut consequatur omnis
ut incidunt est omnis iste et quam
voluptates sapiente aliquam asperiores nobis amet corrupti repudiandae provident
------------------
Title: quam voluptatibus rerum veritatis
Body: nobis facilis odit tempore cupiditate quia
assumenda doloribus rerum qui ea
illum et qui totam
aut veniam repellendus
------------------
Title: pariatur consequatur quia magnam autem omnis non amet
Body: libero accusantium et et facere incidunt sit dolorem
non excepturi qui quia sed laudantium
quisquam molestiae ducimus est
officiis esse molestiae iste et quos
------------------
Title: labore in ex et explicabo corporis aut quas
Body: ex quod dolorem ea eum iure qui provident amet
quia qui facere excepturi et repudiandae
asperiores molestias provident
minus incidunt vero fugit rerum sint sunt excepturi provident
------------------
Title: tempora rem veritatis voluptas quo dolores vero
Body: facere qui nesciunt est voluptatum voluptatem nisi
sequi eligendi necessitatibus ea at rerum itaque
harum non ratione velit laboriosam quis consequuntur
ex officiis minima doloremque voluptas ut aut
------------------
Title: laudantium voluptate suscipit sunt enim enim
Body: ut libero sit aut totam inventore sunt
porro sint qui sunt molestiae
consequatur cupiditate qui iste ducimus adipisci
dolor enim assumenda soluta laboriosam amet iste delectus hic
------------------
Title: odit et voluptates doloribus alias odio et
Body: est molestiae facilis quis tempora numquam nihil qui
voluptate sapiente consequatur est qui
necessitatibus autem aut ipsa aperiam modi dolore numquam
reprehenderit eius rem quibusdam
------------------
Title: optio ipsam molestias necessitatibus occaecati facilis veritatis dolores aut
Body: sint molestiae magni a et quos
eaque et quasi
ut rerum debitis similique veniam
recusandae dignissimos dolor incidunt consequatur odio
------------------
Title: dolore veritatis porro provident adipisci blanditiis et sunt
Body: similique sed nisi voluptas iusto omnis
mollitia et quo
assumenda suscipit officia magnam sint sed tempora
enim provident pariatur praesentium atque animi amet ratione
------------------
Title: placeat quia et porro iste
Body: quasi excepturi consequatur iste autem temporibus sed molestiae beatae
et quaerat et esse ut
voluptatem occaecati et vel explicabo autem
asperiores pariatur deserunt optio
------------------
Title: nostrum quis quasi placeat
Body: eos et molestiae
nesciunt ut a
dolores perspiciatis repellendus repellat aliquid
magnam sint rem ipsum est
------------------
Title: sapiente omnis fugit eos
Body: consequatur omnis est praesentium
ducimus non iste
neque hic deserunt
voluptatibus veniam cum et rerum sed
------------------
Title: sint soluta et vel magnam aut ut sed qui
Body: repellat aut aperiam totam temporibus autem et
architecto magnam ut
consequatur qui cupiditate rerum quia soluta dignissimos nihil iure
tempore quas est
------------------
Title: ad iusto omnis odit dolor voluptatibus
Body: minus omnis soluta quia
qui sed adipisci voluptates illum ipsam voluptatem
eligendi officia ut in
eos soluta similique molestias praesentium blanditiis
------------------
Title: aut amet sed
Body: libero voluptate eveniet aperiam sed
sunt placeat suscipit molestias
similique fugit nam natus
expedita consequatur consequatur dolores quia eos et placeat
------------------
Title: ratione ex tenetur perferendis
Body: aut et excepturi dicta laudantium sint rerum nihil
laudantium et at
a neque minima officia et similique libero et
commodi voluptate qui
------------------
Title: beatae soluta recusandae
Body: dolorem quibusdam ducimus consequuntur dicta aut quo laboriosam
voluptatem quis enim recusandae ut sed sunt
nostrum est odit totam
sit error sed sunt eveniet provident qui nulla
------------------
Title: qui qui voluptates illo iste minima
Body: aspernatur expedita soluta quo ab ut similique
expedita dolores amet
sed temporibus distinctio magnam saepe deleniti
omnis facilis nam ipsum natus sint similique omnis
------------------
Title: id minus libero illum nam ad officiis
Body: earum voluptatem facere provident blanditiis velit laboriosam
pariatur accusamus odio saepe
cumque dolor qui a dicta ab doloribus consequatur omnis
corporis cupiditate eaque assumenda ad nesciunt
------------------
Title: quaerat velit veniam amet cupiditate aut numquam ut sequi
Body: in non odio excepturi sint eum
labore voluptates vitae quia qui et
inventore itaque rerum
veniam non exercitationem delectus aut
------------------
Title: quas fugiat ut perspiciatis vero provident
Body: eum non blanditiis soluta porro quibusdam voluptas
vel voluptatem qui placeat dolores qui velit aut
vel inventore aut cumque culpa explicabo aliquid at
perspiciatis est et voluptatem dignissimos dolor itaque sit nam
------------------
Title: laboriosam dolor voluptates
Body: doloremque ex facilis sit sint culpa
soluta assumenda eligendi non ut eius
sequi ducimus vel quasi
veritatis est dolores
------------------
Title: temporibus sit alias delectus eligendi possimus magni
Body: quo deleniti praesentium dicta non quod
aut est molestias
molestias et officia quis nihil
itaque dolorem quia
------------------
Title: at nam consequatur ea labore ea harum
Body: cupiditate quo est a modi nesciunt soluta
ipsa voluptas error itaque dicta in
autem qui minus magnam et distinctio eum
accusamus ratione error aut
------------------