From 4abfe37c53a313e55830dc82e7da1c4d05b855f9 Mon Sep 17 00:00:00 2001 From: anandvarma Date: Sat, 11 Dec 2021 03:20:56 -0500 Subject: [PATCH 001/315] Added DropMail API --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 44e87ebc..91803d34 100644 --- a/README.md +++ b/README.md @@ -638,6 +638,7 @@ API | Description | Auth | HTTPS | CORS | ### Email API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| +| [DropMail](https://dropmail.me/api/#live-demo) | GraphQL API for creating and managing ephemeral e-mail inboxes | No | Yes | Unknown | | [Guerrilla Mail](https://www.guerrillamail.com/GuerrillaMailAPI.html) | Disposable temporary Email addresses | No | Yes | Unknown | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | | [Sendgrid](https://sendgrid.com/docs/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | From 96411d6a7dc5ad45dd2d045fb7cc173b8990243b Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Tue, 14 Dec 2021 18:56:27 -0500 Subject: [PATCH 002/315] Add Zoo Animals API to Animals --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 91803d34..6306e745 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ API | Description | Auth | HTTPS | CORS | | [RescueGroups](https://userguide.rescuegroups.org/display/APIDG/API+Developers+Guide+Home) | Adoption | No | Yes | Unknown | | [Shibe.Online](http://shibe.online/) | Random pictures of Shiba Inu, cats or birds | No | Yes | Yes | | [The Dog](https://thedogapi.com/) | A public service all about Dogs, free to use when making your fancy new App, Website or Service | `apiKey` | Yes | No | +| [Zoo Animals](https://zoo-animal-api.herokuapp.com/) | Facts and pictures of zoo animals | No | Yes | Yes | **[⬆ Back to Index](#index)** ### Anime From 5ba2034c1d430cbfc18811d452e2ae18b8d5877e Mon Sep 17 00:00:00 2001 From: Arber Avdullahu Date: Wed, 15 Dec 2021 21:26:21 +0100 Subject: [PATCH 003/315] TheGraph requires an API key --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91803d34..5546ec75 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,7 @@ API | Description | Auth | HTTPS | CORS | | [Helium](https://docs.helium.com/api/blockchain/introduction/) | Helium is a global, distributed network of Hotspots that create public, long-range wireless coverage | No | Yes | Unknown | | [Nownodes](https://nownodes.io/) | Blockchain-as-a-service solution that provides high-quality connection via API | `apiKey` | Yes | Unknown | | [Steem](https://developers.steem.io/) | Blockchain-based blogging and social media website | No | No | No | -| [The Graph](https://thegraph.com) | Indexing protocol for querying networks like Ethereum with GraphQL | No | Yes | Unknown | +| [The Graph](https://thegraph.com) | Indexing protocol for querying networks like Ethereum with GraphQL | `apiKey` | Yes | Unknown | | [Walltime](https://walltime.info/api.html) | To retrieve Walltime's market info | No | Yes | Unknown | **[⬆ Back to Index](#index)** From 4ec22c900db9dbe7009586a533ad9f24392900c5 Mon Sep 17 00:00:00 2001 From: Padmashree Jha Date: Sat, 18 Dec 2021 10:28:53 +0530 Subject: [PATCH 004/315] Updated Cats API cors Change cors for cats API. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d192891b..b876fdf6 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ API | Description | Auth | HTTPS | CORS | | [FishWatch](https://www.fishwatch.gov/developers) | Information and pictures about individual fish species | No | Yes | Yes | | [HTTPCat](https://http.cat/) | Cat for every HTTP Status | No | Yes | Yes | | [IUCN](http://apiv3.iucnredlist.org/api/v3/docs) | IUCN Red List of Threatened Species | `apiKey` | No | No | -| [MeowFacts](https://github.com/wh-iterabb-it/meowfacts) | Get random cat facts | No | Yes | Unknown | +| [MeowFacts](https://github.com/wh-iterabb-it/meowfacts) | Get random cat facts | No | Yes | No | | [Movebank](https://github.com/movebank/movebank-api-doc) | Movement and Migration data of animals | No | Yes | Yes | | [Petfinder](https://www.petfinder.com/developers/) | Petfinder is dedicated to helping pets find homes, another resource to get pets adopted | `apiKey` | Yes | Yes | | [PlaceBear](https://placebear.com/) | Placeholder bear pictures | No | Yes | Yes | From 72144935c8b127c40f57b718a40c360c43a44b3a Mon Sep 17 00:00:00 2001 From: Nahuel Perez <36615599+Nahuelpack@users.noreply.github.com> Date: Sat, 18 Dec 2021 12:28:18 -0300 Subject: [PATCH 005/315] Update README.md Cryptocurrency - 1inch api link leads to a 404, replaced with 'https://1inch.io/api/' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d192891b..617428ef 100644 --- a/README.md +++ b/README.md @@ -348,7 +348,7 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [0x](https://0x.org/api) | API for querying token and pool stats across various liquidity pools | No | Yes | Yes | -| [1inch](https://docs.1inch.io/api/) | API for querying decentralize exchange | No | Yes | Unknown | +| [1inch](https://1inch.io/api/) | API for querying decentralize exchange | No | Yes | Unknown | | [Alchemy Ethereum](https://docs.alchemy.com/alchemy/) | Ethereum Node-as-a-Service Provider | `apiKey` | Yes | Yes | | [apilayer coinlayer](https://coinlayer.com) | Real-time Crypto Currency Exchange Rates | `apiKey` | Yes | Unknown | | [Binance](https://github.com/binance/binance-spot-api-docs) | Exchange for Trading Cryptocurrencies based in China | `apiKey` | Yes | Unknown | From 337e778240a9199f432c27ea07a6eb360a99e14f Mon Sep 17 00:00:00 2001 From: Akshay Bhandari Date: Sat, 18 Dec 2021 22:10:18 +0530 Subject: [PATCH 006/315] Add ItsThisForThat (#2949) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c1a1e5fe..24445b89 100644 --- a/README.md +++ b/README.md @@ -1526,6 +1526,7 @@ API | Description | Auth | HTTPS | CORS | | [FakerAPI](https://fakerapi.it/en) | APIs collection to get fake data | No | Yes | Yes | | [FakeStoreAPI](https://fakestoreapi.com/) | Fake store rest API for your e-commerce or shopping website prototype | No | Yes | Unknown | | [GeneradorDNI](https://api.generadordni.es) | Data generator API. Profiles, vehicles, banks and cards, etc | `apiKey` | Yes | Unknown | +| [ItsThisForThat](https://itsthisforthat.com/api.php) | Generate Random startup ideas | No | Yes | No | | [JSONPlaceholder](http://jsonplaceholder.typicode.com/) | Fake data for testing and prototyping | No | No | Unknown | | [Loripsum](http://loripsum.net/) | The "lorem ipsum" generator that doesn't suck | No | No | Unknown | | [Mailsac](https://mailsac.com/docs/api) | Disposable Email | `apiKey` | Yes | Unknown | From 4c2601dbd19135aa9a21b1361e1679be8771420c Mon Sep 17 00:00:00 2001 From: Anton Date: Sat, 18 Dec 2021 17:50:26 +0100 Subject: [PATCH 007/315] Add Minecraft Server Status (#2950) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 24445b89..76d5927a 100644 --- a/README.md +++ b/README.md @@ -822,6 +822,7 @@ API | Description | Auth | HTTPS | CORS | | [Magic The Gathering](http://magicthegathering.io/) | Magic The Gathering Game Information | No | No | Unknown | | [Mario Kart Tour](https://mario-kart-tour-api.herokuapp.com/) | API for Drivers, Karts, Gliders and Courses | `OAuth` | Yes | Unknown | | [Marvel](https://developer.marvel.com) | Marvel Comics | `apiKey` | Yes | Unknown | +| [Minecraft Server Status](https://api.mcsrvstat.us) | API to get Information about a Minecraft Server | No | Yes | No | | [MMO Games](https://www.mmobomb.com/api) | MMO Games Database, News and Giveaways | No | Yes | No | | [mod.io](https://docs.mod.io) | Cross Platform Mod API | `apiKey` | Yes | Unknown | | [Mojang](https://wiki.vg/Mojang_API) | Mojang / Minecraft API | `apiKey` | Yes | Unknown | From 310a49f973fa6b0e4d44e7ba1ec48602911d0971 Mon Sep 17 00:00:00 2001 From: Padmashree Jha Date: Sun, 19 Dec 2021 18:20:14 +0530 Subject: [PATCH 008/315] Updated trace moe Updated CORS for trace moe anime API. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76d5927a..ed29997f 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ API | Description | Auth | HTTPS | CORS | | [NekosBest](https://docs.nekos.best) | Neko Images & Anime roleplaying GIFs | No | Yes | Yes | | [Shikimori](https://shikimori.one/api/doc) | Anime discovery, tracking, forum, rates | `OAuth` | Yes | Unknown | | [Studio Ghibli](https://ghibliapi.herokuapp.com) | Resources from Studio Ghibli films | No | Yes | Yes | -| [Trace Moe](https://soruly.github.io/trace.moe-api/#/) | A useful tool to get the exact scene of an anime from a screenshot | No | Yes | Unknown | +| [Trace Moe](https://soruly.github.io/trace.moe-api/#/) | A useful tool to get the exact scene of an anime from a screenshot | No | Yes | No | | [Waifu.pics](https://waifu.pics/docs) | Image sharing platform for anime images | No | Yes | No | **[⬆ Back to Index](#index)** From 4b949275581ec004effaed21b5b662fcebf5f0fd Mon Sep 17 00:00:00 2001 From: Aditya Kajla Date: Sun, 19 Dec 2021 14:26:27 -0800 Subject: [PATCH 009/315] Add Warrant API to Authentication & Authorization --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ed29997f..43f430ac 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ * [Anime](#anime) * [Anti-Malware](#anti-malware) * [Art & Design](#art--design) -* [Authentication](#authentication) +* [Authentication & Authorization](#authentication--authorization) * [Blockchain](#blockchain) * [Books](#books) * [Business](#business) @@ -203,7 +203,7 @@ API | Description | Auth | HTTPS | CORS | | [xColors](https://x-colors.herokuapp.com/) | Generate & convert colors | No | Yes | Yes | **[⬆ Back to Index](#index)** -### Authentication +### Authentication & Authorization API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Auth0](https://auth0.com) | Easy to implement, adaptable authentication and authorization platform | `apiKey` | Yes | Yes | @@ -212,6 +212,7 @@ API | Description | Auth | HTTPS | CORS | | [MojoAuth](https://mojoauth.com) | Secure and modern passwordless authentication platform | `apiKey` | Yes | Yes | | [SAWO Labs](https://sawolabs.com) | Simplify login and improve user experience by integrating passwordless authentication in your app | `apiKey` | Yes | Yes | | [Stytch](https://stytch.com/) | User infrastructure for modern applications | `apiKey` | Yes | No | +| [Warrant](https://warrant.dev/) | APIs for authorization and access control | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** ### Blockchain From 63b4155e5ac95d377350e2f99bdac6a1054b02b7 Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Sun, 19 Dec 2021 18:49:07 -0600 Subject: [PATCH 010/315] Updated Validator.pizza to MailCheck.ai Updated Validator.pizza to MailCheck.ai (name, url, and description) to match service's change from December 2nd 2021. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ed29997f..e77ff070 100644 --- a/README.md +++ b/README.md @@ -446,12 +446,12 @@ API | Description | Auth | HTTPS | CORS | | [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | | [Kickbox](https://open.kickbox.com/) | Email verification API | No | Yes | Yes | | [Lob.com](https://lob.com/) | US Address Verification | `apiKey` | Yes | Unknown | +| [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Postman Echo](https://www.postman-echo.com) | Test api server to receive and return value from HTTP method | No | Yes | Unknown | | [PurgoMalum](http://www.purgomalum.com) | Content validator against profanity & obscenity | No | No | Unknown | | [US Autocomplete](https://smartystreets.com/docs/cloud/us-autocomplete-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | | [US Extract](https://smartystreets.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | | [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | -| [Validator.pizza](https://www.validator.pizza/) | Prevent users to register to websites with a disposable email address | No | Yes | Unknown | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | | [Verifier](https://verifier.meetchopra.com/docs#/) | Verifies that a given email is real | `apiKey` | Yes | Yes | | [Veriphone](https://veriphone.io) | Phone number validation & carrier lookup | `apiKey` | Yes | Yes | From 5f8b8910f9012c185369808a4f7da0a377861805 Mon Sep 17 00:00:00 2001 From: Buco <80671351+Bucolo@users.noreply.github.com> Date: Mon, 20 Dec 2021 16:44:38 +0100 Subject: [PATCH 011/315] Add Waifu.im API to Anime --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e77ff070..6f4066be 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ API | Description | Auth | HTTPS | CORS | | [Shikimori](https://shikimori.one/api/doc) | Anime discovery, tracking, forum, rates | `OAuth` | Yes | Unknown | | [Studio Ghibli](https://ghibliapi.herokuapp.com) | Resources from Studio Ghibli films | No | Yes | Yes | | [Trace Moe](https://soruly.github.io/trace.moe-api/#/) | A useful tool to get the exact scene of an anime from a screenshot | No | Yes | No | +| [Waifu.im](https://waifu.im/docs) | Get waifu pictures from an archive of over 4000 images and multiple tags | No | Yes | No | | [Waifu.pics](https://waifu.pics/docs) | Image sharing platform for anime images | No | Yes | No | **[⬆ Back to Index](#index)** From 9e72e9c5fca5bb394f3acfec98b11018e7ccf355 Mon Sep 17 00:00:00 2001 From: Yury <72691412+cheatsnake@users.noreply.github.com> Date: Tue, 21 Dec 2021 21:23:55 +0300 Subject: [PATCH 012/315] Add EmojiHub API to Art & Design --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e77ff070..72e89a2d 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ API | Description | Auth | HTTPS | CORS | | [ColourLovers](http://www.colourlovers.com/api) | Get various patterns, palettes and images | No | No | Unknown | | [Cooper Hewitt](https://collection.cooperhewitt.org/api) | Smithsonian Design Museum | `apiKey` | Yes | Unknown | | [Dribbble](https://developer.dribbble.com) | Discover the world’s top designers & creatives | `OAuth` | Yes | Unknown | +| [EmojiHub](https://github.com/cheatsnake/emojihub) | Get emojis by categories and groups | No | Yes | Yes | | [Europeana](https://pro.europeana.eu/resources/apis/search) | European Museum and Galleries content | `apiKey` | Yes | Unknown | | [Harvard Art Museums](https://github.com/harvardartmuseums/api-docs) | Art | `apiKey` | No | Unknown | | [Icon Horse](https://icon.horse) | Favicons for any website, with fallbacks | No | Yes | Yes | From 833e32e36315f548e58368c54cd404a4f66a0cdd Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Tue, 21 Dec 2021 16:20:29 -0600 Subject: [PATCH 013/315] Removed Calendar Index (acquired by Calendarific) Removed Calendar Index to reflect 2018 acquisition by Calendarific. Calendar Index now redirects to Calendarific, and Calendarific is already listed separately, so Calendar Index has been removed. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e77ff070..1052e3d7 100644 --- a/README.md +++ b/README.md @@ -294,7 +294,6 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Abstract Public Holidays](https://www.abstractapi.com/holidays-api) | Data on national, regional, and religious holidays via API | `apiKey` | Yes | Yes | -| [Calendar Index](https://www.calendarindex.com/) | Worldwide Holidays and Working Days | `apiKey` | Yes | Yes | | [Calendarific](https://calendarific.com/) | Worldwide Holidays | `apiKey` | Yes | Unknown | | [Church Calendar](http://calapi.inadiutorium.cz/) | Catholic liturgical calendar | No | No | Unknown | | [Czech Namedays Calendar](https://svatky.adresa.info) | Lookup for a name and returns nameday date | No | No | Unknown | From d355faf8bcf7b4f93a1d99becbc48cd2d577b277 Mon Sep 17 00:00:00 2001 From: Padmashree Jha Date: Wed, 22 Dec 2021 12:28:40 +0530 Subject: [PATCH 014/315] Changed cors for urlHaus --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e77ff070..c8875252 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ API | Description | Auth | HTTPS | CORS | | [Metacert](https://metacert.com/) | Metacert Link Flagging | `apiKey` | Yes | Unknown | | [Phisherman](https://phisherman.gg/) | IP/domain/URL reputation | `apiKey` | Yes | Unknown | | [Scanii](https://docs.scanii.com/) | Simple REST API that can scan submitted documents/files for the presence of threats | `apiKey` | Yes | Yes | -| [URLhaus](https://urlhaus-api.abuse.ch/) | Bulk queries and Download Malware Samples | No | Yes | Unknown | +| [URLhaus](https://urlhaus-api.abuse.ch/) | Bulk queries and Download Malware Samples | No | Yes | Yes | | [URLScan.io](https://urlscan.io/about-api/) | Scan and Analyse URLs | `apiKey` | Yes | Unknown | | [VirusTotal](https://www.virustotal.com/en/documentation/public-api/) | VirusTotal File/URL Analysis | `apiKey` | Yes | Unknown | | [Web of Trust](https://support.mywot.com/hc/en-us/sections/360004477734-API-) | IP/domain/URL reputation | `apiKey` | Yes | Unknown | From 8b87c72a0476c588b9412d3b33bbb335327a9c7d Mon Sep 17 00:00:00 2001 From: Kev1venteur Date: Wed, 22 Dec 2021 11:32:04 +0100 Subject: [PATCH 015/315] Add Storj to storage APIs --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ce62698c..1bf8b651 100644 --- a/README.md +++ b/README.md @@ -329,6 +329,7 @@ API | Description | Auth | HTTPS | CORS | | [Pastebin](https://pastebin.com/doc_api) | Plain Text Storage | `apiKey` | Yes | Unknown | | [Pinata](https://docs.pinata.cloud/) | IPFS Pinning Services API | `apiKey` | Yes | Unknown | | [Quip](https://quip.com/dev/automation/documentation) | File Sharing and Storage for groups | `apiKey` | Yes | Yes | +| [Storj](https://docs.storj.io/dcs/) | Decentralized Open-Source Cloud Storage | `apiKey` | Yes | Unknown | | [The Null Pointer](https://0x0.st) | No-bullshit file hosting and URL shortening service | No | Yes | Unknown | | [Web3 Storage](https://web3.storage/) | File Sharing and Storage for Free with 1TB Space | `apiKey` | Yes | Yes | From fffe77bc5b09ecb5afd474264bfb4a6a00ddd08a Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Wed, 22 Dec 2021 11:42:08 -0600 Subject: [PATCH 016/315] Updated Quandl to Nasdaq Data Link Updated Quandl to Nasdaq Data Link (acquisition) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce62698c..3591a88a 100644 --- a/README.md +++ b/README.md @@ -1214,11 +1214,11 @@ API | Description | Auth | HTTPS | CORS | | [Kaggle](https://www.kaggle.com/docs/api) | Create and interact with Datasets, Notebooks, and connect with Kaggle | `apiKey` | Yes | Unknown | | [LinkPreview](https://www.linkpreview.net) | Get JSON formatted summary with title, description and preview image for any requested URL | `apiKey` | Yes | Yes | | [Microlink.io](https://microlink.io) | Extract structured data from any website | No | Yes | Yes | +| [Nasdaq Data Link](https://docs.data.nasdaq.com/) | Stock market data | `apiKey` | Yes | Unknown | | [Nobel Prize](https://www.nobelprize.org/about/developer-zone-2/) | Open data about nobel prizes and events | No | Yes | Yes | | [Open Data Minneapolis](https://opendata.minneapolismn.gov/) | Spatial (GIS) and non-spatial city data for Minneapolis | No | Yes | No | | [openAFRICA](https://africaopendata.org/) | Large datasets repository of African open data | No | Yes | Unknown | | [OpenCorporates](http://api.opencorporates.com/documentation/API-Reference) | Data on corporate entities and directors in many countries | `apiKey` | Yes | Unknown | -| [Quandl](https://www.quandl.com/) | Stock Market Data | No | Yes | Unknown | | [Recreation Information Database](https://ridb.recreation.gov/) | Recreational areas, federal lands, historic sites, museums, and other attractions/resources(US) | `apiKey` | Yes | Unknown | | [Scoop.it](http://www.scoop.it/dev) | Content Curation Service | `apiKey` | No | Unknown | | [Socrata](https://dev.socrata.com/) | Access to Open Data from Governments, Non-profits and NGOs around the world | `OAuth` | Yes | Yes | From 9a5b3bce2270c9e7388e236fc6e3c6e8630ed2b4 Mon Sep 17 00:00:00 2001 From: Ankit Sharma <75074904+CrypticMessenger@users.noreply.github.com> Date: Thu, 23 Dec 2021 12:57:27 +0530 Subject: [PATCH 017/315] Add Motivational Quotes API (#2965) * Add Motivational Quotes API Add Motivational Quotes API to Video * Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fd2b0e1d..107c3207 100644 --- a/README.md +++ b/README.md @@ -1709,6 +1709,7 @@ API | Description | Auth | HTTPS | CORS | | [JSON2Video](https://json2video.com) | Create and edit videos programmatically: watermarks,resizing,slideshows,voice-over,text animations | `apiKey` | Yes | No | | [Lucifer Quotes](https://github.com/shadowoff09/lucifer-quotes) | Returns Lucifer quotes | No | Yes | Unknown | | [MCU Countdown](https://github.com/DiljotSG/MCU-Countdown) | A Countdown to the next MCU Film | No | Yes | Yes | +| [Motivational Quotes](https://nodejs-quoteapp.herokuapp.com/) | Random Motivational Quotes | No | Yes | Unknown | | [Movie Quote](https://github.com/F4R4N/movie-quote/) | Random Movie and Series Quotes | No | Yes | Yes | | [Open Movie Database](http://www.omdbapi.com/) | Movie information | `apiKey` | Yes | Unknown | | [Ron Swanson Quotes](https://github.com/jamesseanwright/ron-swanson-quotes#ron-swanson-quotes-api) | Television | No | Yes | Unknown | From 3b593e070ec92ad0bf012446c47300520a54906c Mon Sep 17 00:00:00 2001 From: Zachary Spielberger Date: Thu, 23 Dec 2021 01:19:39 -0700 Subject: [PATCH 018/315] Add Bob's Burgers API Add Bob's Burgers API to Video --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 107c3207..a12d2496 100644 --- a/README.md +++ b/README.md @@ -1694,6 +1694,7 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [An API of Ice And Fire](https://anapioficeandfire.com/) | Game Of Thrones API | No | Yes | Unknown | +| [Bob's Burgers](https://bobs-burgers-api-ui.herokuapp.com) | Bob's Burgers API | No | Yes | Yes | | [Breaking Bad](https://breakingbadapi.com/documentation) | Breaking Bad API | No | Yes | Unknown | | [Breaking Bad Quotes](https://github.com/shevabam/breaking-bad-quotes) | Some Breaking Bad quotes | No | Yes | Unknown | | [Catalogopolis](https://api.catalogopolis.xyz/docs/) | Doctor Who API | No | Yes | Unknown | From f9d88a12e6c474ff95ed415b3ab6b82fe3043fd1 Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Thu, 23 Dec 2021 12:44:08 -0600 Subject: [PATCH 019/315] Updated CivicFeed to PeakMetrics Updated CivicFeed to PeakMetrics (2019 name change) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 107c3207..6275a301 100644 --- a/README.md +++ b/README.md @@ -1207,7 +1207,6 @@ API | Description | Auth | HTTPS | CORS | | [BotsArchive](https://botsarchive.com/docs.html) | JSON formatted details about Telegram Bots available in database | No | Yes | Unknown | | [Callook.info](https://callook.info) | United States ham radio callsigns | No | Yes | Unknown | | [CARTO](https://carto.com/) | Location Information Prediction | `apiKey` | Yes | Unknown | -| [CivicFeed](https://developers.civicfeed.com/) | News articles and public datasets | `apiKey` | Yes | Unknown | | [CollegeScoreCard.ed.gov](https://collegescorecard.ed.gov/data/) | Data on higher education institutions in the United States | No | Yes | Unknown | | [Enigma Public](http://docs.enigma.com/public/public_v20_api_about) | Broadest collection of public data | `apiKey` | Yes | Yes | | [French Address Search](https://geo.api.gouv.fr/adresse) | Address search via the French Government | No | Yes | Unknown | @@ -1221,6 +1220,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Data Minneapolis](https://opendata.minneapolismn.gov/) | Spatial (GIS) and non-spatial city data for Minneapolis | No | Yes | No | | [openAFRICA](https://africaopendata.org/) | Large datasets repository of African open data | No | Yes | Unknown | | [OpenCorporates](http://api.opencorporates.com/documentation/API-Reference) | Data on corporate entities and directors in many countries | `apiKey` | Yes | Unknown | +| [PeakMetrics](https://rapidapi.com/peakmetrics-peakmetrics-default/api/peakmetrics-news) | News articles and public datasets | `apiKey` | Yes | Unknown | | [Recreation Information Database](https://ridb.recreation.gov/) | Recreational areas, federal lands, historic sites, museums, and other attractions/resources(US) | `apiKey` | Yes | Unknown | | [Scoop.it](http://www.scoop.it/dev) | Content Curation Service | `apiKey` | No | Unknown | | [Socrata](https://dev.socrata.com/) | Access to Open Data from Governments, Non-profits and NGOs around the world | `OAuth` | Yes | Yes | From 60af6e26ada37645b02ae97348ed2489da837f40 Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Thu, 23 Dec 2021 14:20:20 -0600 Subject: [PATCH 020/315] Removed Picatic and updated Eventbrite Removed Picatic (acquired by Eventbrite) and updated Eventbrite link. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 5afbd9c3..d29b6937 100644 --- a/README.md +++ b/README.md @@ -684,8 +684,7 @@ API | Description | Auth | HTTPS | CORS | ### Events API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Eventbrite](https://www.eventbrite.com/developer/v3/) | Find events | `OAuth` | Yes | Unknown | -| [Picatic](http://developer.picatic.com/?utm_medium=web&utm_source=github&utm_campaign=public-apis%20repo&utm_content=toddmotto) | Sell tickets anywhere | `apiKey` | Yes | Unknown | +| [Eventbrite](https://www.eventbrite.com/platform/api/) | Find events | `OAuth` | Yes | Unknown | | [SeatGeek](https://platform.seatgeek.com/) | Search events, venues and performers | `apiKey` | Yes | Unknown | | [Ticketmaster](http://developer.ticketmaster.com/products-and-docs/apis/getting-started/) | Search events, attractions, or venues | `apiKey` | Yes | Unknown | From 3b8126d3de5cc815b01fc503641c01ea76294812 Mon Sep 17 00:00:00 2001 From: Padmashree Jha Date: Sat, 25 Dec 2021 08:42:15 +0530 Subject: [PATCH 021/315] Changed CORS. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d29b6937..92abdd54 100644 --- a/README.md +++ b/README.md @@ -1682,7 +1682,7 @@ API | Description | Auth | HTTPS | CORS | ### Vehicle API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Brazilian Vehicles and Prices](https://deividfortuna.github.io/fipe/) | Vehicles information from Fundação Instituto de Pesquisas Econômicas - Fipe | No | Yes | Unknown | +| [Brazilian Vehicles and Prices](https://deividfortuna.github.io/fipe/) | Vehicles information from Fundação Instituto de Pesquisas Econômicas - Fipe | No | Yes | No | | [Helipaddy sites](https://helipaddy.com/api/) | Helicopter and passenger drone landing site directory, Helipaddy data and much more | `apiKey` | Yes | Unknown | | [Kelley Blue Book](http://developer.kbb.com/#!/data/1-Default) | Vehicle info, pricing, configuration, plus much more | `apiKey` | Yes | No | | [Mercedes-Benz](https://developer.mercedes-benz.com/apis) | Telematics data, remotely access vehicle functions, car configurator, locate service dealers | `apiKey` | Yes | No | From c9bbd33cdb4850250c1e09fadac8666a6b76ba7f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 25 Dec 2021 16:11:31 -0300 Subject: [PATCH 022/315] Upd Transport for Chicago, US (#2975) Improve description and change auth from No to apiKey resolve #2975 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92abdd54..7e78af98 100644 --- a/README.md +++ b/README.md @@ -1623,7 +1623,7 @@ API | Description | Auth | HTTPS | CORS | | [Transport for Bordeaux, France](https://opendata.bordeaux-metropole.fr/explore/) | Bordeaux Métropole public transport and more (France) | `apiKey` | Yes | Unknown | | [Transport for Boston, US](https://mbta.com/developers/v3-api) | MBTA API | No | No | Unknown | | [Transport for Budapest, Hungary](https://bkkfutar.docs.apiary.io) | Budapest public transport API | No | Yes | Unknown | -| [Transport for Chicago, US](http://www.transitchicago.com/developers/) | CTA | No | No | Unknown | +| [Transport for Chicago, US](http://www.transitchicago.com/developers/) | Chicago Transit Authority (CTA) | `apiKey` | No | Unknown | | [Transport for Czech Republic](https://www.chaps.cz/eng/products/idos-internet) | Czech transport API | No | Yes | Unknown | | [Transport for Denver, US](http://www.rtd-denver.com/gtfs-developer-guide.shtml) | RTD | No | No | Unknown | | [Transport for Finland](https://digitransit.fi/en/developers/ ) | Finnish transport API | No | Yes | Unknown | From 164378ce4bc264958032453b8c4748717c6d4a21 Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Sat, 25 Dec 2021 14:33:35 -0600 Subject: [PATCH 023/315] Removed Yahoo Weather Removed Yahoo Weather (shutdown June 2021) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7e78af98..9ab74c8f 100644 --- a/README.md +++ b/README.md @@ -1771,7 +1771,6 @@ API | Description | Auth | HTTPS | CORS | | [weather-api](https://github.com/robertoduessmann/weather-api) | A RESTful free API to check the weather | No | Yes | No | | [WeatherAPI](https://www.weatherapi.com/) | Weather API with other stuff like Astronomy and Geolocation API | `apiKey` | Yes | Yes | | [Weatherbit](https://www.weatherbit.io/api) | Weather | `apiKey` | Yes | Unknown | -| [Yahoo Weather](https://developer.yahoo.com/weather/) | Weather API from Yahoo | `OAuth` | Yes | Unknown | | [Yandex.Weather](https://yandex.com/dev/weather/) | Assesses weather condition in specific locations | `apiKey` | Yes | No | **[⬆ Back to Index](#index)** From 8aa63073a9b5ac9dbe8a82eb8b3e6a617e48b0fa Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 27 Dec 2021 20:07:44 -0300 Subject: [PATCH 024/315] Remove collective API as alternative site The alternative site "collective API" is broken. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ab74c8f..4e367e1b 100644 --- a/README.md +++ b/README.md @@ -46,8 +46,7 @@ Free APIsDev ResourcesPublic APIs Site • - Apihouse • - Collective APIs + Apihouse --- From c40967431944a0ea6eac47bd49e8fb080f1bfdb4 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 27 Dec 2021 20:25:30 -0300 Subject: [PATCH 025/315] Move Abstract Email Validation and apilayer mailboxlayer to Email section --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e367e1b..88d4a95a 100644 --- a/README.md +++ b/README.md @@ -441,8 +441,6 @@ API | Description | Auth | HTTPS | CORS | ### Data Validation API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Abstract Email Validation](https://www.abstractapi.com/email-verification-validation-api) | Validate email addresses for deliverability and spam | `apiKey` | Yes | Yes | -| [apilayer mailboxlayer](https://mailboxlayer.com) | Email address validation | `apiKey` | Yes | Unknown | | [Cloudmersive Validate](https://cloudmersive.com/validate-api) | Validate email addresses, phone numbers, VAT numbers and domain names | `apiKey` | Yes | Yes | | [Disify](https://www.disify.com/) | Validate and detect disposable and temporary email addresses | No | Yes | Yes | | [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | @@ -641,6 +639,8 @@ API | Description | Auth | HTTPS | CORS | ### Email API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| +| [Abstract Email Validation](https://www.abstractapi.com/email-verification-validation-api) | Validate email addresses for deliverability and spam | `apiKey` | Yes | Yes | +| [apilayer mailboxlayer](https://mailboxlayer.com) | Email address validation | `apiKey` | Yes | Unknown | | [DropMail](https://dropmail.me/api/#live-demo) | GraphQL API for creating and managing ephemeral e-mail inboxes | No | Yes | Unknown | | [Guerrilla Mail](https://www.guerrillamail.com/GuerrillaMailAPI.html) | Disposable temporary Email addresses | No | Yes | Unknown | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | From 4037b8f44d3db2244d7e698d9f12742ceb8d302b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 27 Dec 2021 20:30:02 -0300 Subject: [PATCH 026/315] Move Cloudmersive Validate, Disify, EVA and Kickbox to Email section --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 88d4a95a..8df963e8 100644 --- a/README.md +++ b/README.md @@ -441,10 +441,6 @@ API | Description | Auth | HTTPS | CORS | ### Data Validation API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Cloudmersive Validate](https://cloudmersive.com/validate-api) | Validate email addresses, phone numbers, VAT numbers and domain names | `apiKey` | Yes | Yes | -| [Disify](https://www.disify.com/) | Validate and detect disposable and temporary email addresses | No | Yes | Yes | -| [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | -| [Kickbox](https://open.kickbox.com/) | Email verification API | No | Yes | Yes | | [Lob.com](https://lob.com/) | US Address Verification | `apiKey` | Yes | Unknown | | [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Postman Echo](https://www.postman-echo.com) | Test api server to receive and return value from HTTP method | No | Yes | Unknown | @@ -641,8 +637,12 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Abstract Email Validation](https://www.abstractapi.com/email-verification-validation-api) | Validate email addresses for deliverability and spam | `apiKey` | Yes | Yes | | [apilayer mailboxlayer](https://mailboxlayer.com) | Email address validation | `apiKey` | Yes | Unknown | +| [Cloudmersive Validate](https://cloudmersive.com/validate-api) | Validate email addresses, phone numbers, VAT numbers and domain names | `apiKey` | Yes | Yes | +| [Disify](https://www.disify.com/) | Validate and detect disposable and temporary email addresses | No | Yes | Yes | | [DropMail](https://dropmail.me/api/#live-demo) | GraphQL API for creating and managing ephemeral e-mail inboxes | No | Yes | Unknown | +| [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | | [Guerrilla Mail](https://www.guerrillamail.com/GuerrillaMailAPI.html) | Disposable temporary Email addresses | No | Yes | Unknown | +| [Kickbox](https://open.kickbox.com/) | Email verification API | No | Yes | Yes | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | | [Sendgrid](https://sendgrid.com/docs/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | | [Sendinblue](https://developers.sendinblue.com/docs) | A service that provides solutions relating to marketing and/or transactional email and/or SMS | `apiKey` | Yes | Unknown | From d1bdf35750f1b0c3b0e120bff44a7a4c526f0323 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 27 Dec 2021 20:33:56 -0300 Subject: [PATCH 027/315] Move MailCheck.ai and Verifier to Email section --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8df963e8..99218f85 100644 --- a/README.md +++ b/README.md @@ -442,14 +442,12 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Lob.com](https://lob.com/) | US Address Verification | `apiKey` | Yes | Unknown | -| [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Postman Echo](https://www.postman-echo.com) | Test api server to receive and return value from HTTP method | No | Yes | Unknown | | [PurgoMalum](http://www.purgomalum.com) | Content validator against profanity & obscenity | No | No | Unknown | | [US Autocomplete](https://smartystreets.com/docs/cloud/us-autocomplete-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | | [US Extract](https://smartystreets.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | | [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | -| [Verifier](https://verifier.meetchopra.com/docs#/) | Verifies that a given email is real | `apiKey` | Yes | Yes | | [Veriphone](https://veriphone.io) | Phone number validation & carrier lookup | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** @@ -643,9 +641,11 @@ API | Description | Auth | HTTPS | CORS | | [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | | [Guerrilla Mail](https://www.guerrillamail.com/GuerrillaMailAPI.html) | Disposable temporary Email addresses | No | Yes | Unknown | | [Kickbox](https://open.kickbox.com/) | Email verification API | No | Yes | Yes | +| [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | | [Sendgrid](https://sendgrid.com/docs/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | | [Sendinblue](https://developers.sendinblue.com/docs) | A service that provides solutions relating to marketing and/or transactional email and/or SMS | `apiKey` | Yes | Unknown | +| [Verifier](https://verifier.meetchopra.com/docs#/) | Verifies that a given email is real | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** ### Entertainment From a860afd0146cd65fc1966dea6ccd6560a5b5d7f6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 27 Dec 2021 20:37:03 -0300 Subject: [PATCH 028/315] Move Veriphone to Phone section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99218f85..2621402a 100644 --- a/README.md +++ b/README.md @@ -448,7 +448,6 @@ API | Description | Auth | HTTPS | CORS | | [US Extract](https://smartystreets.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | | [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | -| [Veriphone](https://veriphone.io) | Phone number validation & carrier lookup | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** ### Development @@ -1292,6 +1291,7 @@ API | Description | Auth | HTTPS | CORS | | [apilayer numverify](https://numverify.com) | Phone number validation | `apiKey` | Yes | Unknown | | [Cloudmersive Validate](https://cloudmersive.com/phone-number-validation-API) | Validate international phone numbers | `apiKey` | Yes | Yes | | [Phone Specification](https://github.com/azharimm/phone-specs-api) | Rest Api for Phone specifications | No | Yes | Yes | +| [Veriphone](https://veriphone.io) | Phone number validation & carrier lookup | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** ### Photography From b03248ee629f8ae6a0095c3e428bf69618bec4a4 Mon Sep 17 00:00:00 2001 From: Chase Durand <50851884+ChaseDurand@users.noreply.github.com> Date: Mon, 27 Dec 2021 22:03:30 -0600 Subject: [PATCH 029/315] Removed Wegmans Removed Wegmans (API no longer open to public) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2621402a..7fb145d7 100644 --- a/README.md +++ b/README.md @@ -1431,7 +1431,6 @@ API | Description | Auth | HTTPS | CORS | | [Rappi](https://dev-portal.rappi.com/) | Manage orders from Rappi's app | `OAuth` | Yes | Unknown | | [Shopee](https://open.shopee.com/documents?version=1) | Shopee's official API for integration of various services from Shopee | `apiKey` | Yes | Unknown | | [Tokopedia](https://developer.tokopedia.com/openapi/guide/#/) | Tokopedia's Official API for integration of various services from Tokopedia | `OAuth` | Yes | Unknown | -| [Wegmans](https://dev.wegmans.io) | Wegmans Food Markets | `apiKey` | Yes | Unknown | | [WooCommerce](https://woocommerce.github.io/woocommerce-rest-api-docs/) | WooCommerce REST APIS to create, read, update, and delete data on wordpress website in JSON format | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** From a94767db4dfb409650bda98263813dd78e6e82b1 Mon Sep 17 00:00:00 2001 From: Sent <66543853+sent@users.noreply.github.com> Date: Tue, 28 Dec 2021 23:00:52 +0300 Subject: [PATCH 030/315] Add mail.gw (#2980) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7fb145d7..aae07d36 100644 --- a/README.md +++ b/README.md @@ -272,6 +272,7 @@ API | Description | Auth | HTTPS | CORS | | [Google Analytics](https://developers.google.com/analytics/) | Collect, configure and analyze your data to reach the right audience | `OAuth` | Yes | Unknown | | [ImprovMX](https://improvmx.com/api) | API for free email forwarding service | `apiKey` | Yes | Unknown | | [Instatus](https://instatus.com/help/api) | Post to and update maintenance and incidents on your status page through an HTTP REST API | `apiKey` | Yes | Unknown | +| [mail.gw](https://docs.mail.gw) | 10 Minute Mail | No | Yes | Yes | | [mail.tm](https://docs.mail.tm) | Temporary Email Service | No | Yes | Yes | | [MailboxValidator](https://www.mailboxvalidator.com/api-email-free) | Validate email address to improve deliverability | `apiKey` | Yes | Unknown | | [Mailchimp](https://mailchimp.com/developer/) | Send marketing campaigns and transactional mails | `apiKey` | Yes | Unknown | From 86d9a605efb57480b148d0cc1c160edfa3e2308b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 28 Dec 2021 17:34:48 -0300 Subject: [PATCH 031/315] Move email APIs to Email section Moved: - ImprovMX - mail.gw - mail.tm - MailboxValidator --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index aae07d36..aac2f4f6 100644 --- a/README.md +++ b/README.md @@ -270,11 +270,7 @@ API | Description | Auth | HTTPS | CORS | | [Freelancer](https://developers.freelancer.com/docs) | Hire freelancers to get work done | `OAuth` | Yes | Unknown | | [Gmail](https://developers.google.com/gmail/api/) | Flexible, RESTful access to the user's inbox | `OAuth` | Yes | Unknown | | [Google Analytics](https://developers.google.com/analytics/) | Collect, configure and analyze your data to reach the right audience | `OAuth` | Yes | Unknown | -| [ImprovMX](https://improvmx.com/api) | API for free email forwarding service | `apiKey` | Yes | Unknown | | [Instatus](https://instatus.com/help/api) | Post to and update maintenance and incidents on your status page through an HTTP REST API | `apiKey` | Yes | Unknown | -| [mail.gw](https://docs.mail.gw) | 10 Minute Mail | No | Yes | Yes | -| [mail.tm](https://docs.mail.tm) | Temporary Email Service | No | Yes | Yes | -| [MailboxValidator](https://www.mailboxvalidator.com/api-email-free) | Validate email address to improve deliverability | `apiKey` | Yes | Unknown | | [Mailchimp](https://mailchimp.com/developer/) | Send marketing campaigns and transactional mails | `apiKey` | Yes | Unknown | | [mailgun](https://www.mailgun.com/) | Email Service | `apiKey` | Yes | Unknown | | [mailjet](https://www.mailjet.com/) | Marketing email can be sent and mail templates made in MJML or HTML can be sent using API | `apiKey` | Yes | Unknown | @@ -640,7 +636,11 @@ API | Description | Auth | HTTPS | CORS | | [DropMail](https://dropmail.me/api/#live-demo) | GraphQL API for creating and managing ephemeral e-mail inboxes | No | Yes | Unknown | | [EVA](https://eva.pingutil.com/) | Validate email addresses | No | Yes | Yes | | [Guerrilla Mail](https://www.guerrillamail.com/GuerrillaMailAPI.html) | Disposable temporary Email addresses | No | Yes | Unknown | +| [ImprovMX](https://improvmx.com/api) | API for free email forwarding service | `apiKey` | Yes | Unknown | | [Kickbox](https://open.kickbox.com/) | Email verification API | No | Yes | Yes | +| [mail.gw](https://docs.mail.gw) | 10 Minute Mail | No | Yes | Yes | +| [mail.tm](https://docs.mail.tm) | Temporary Email Service | No | Yes | Yes | +| [MailboxValidator](https://www.mailboxvalidator.com/api-email-free) | Validate email address to improve deliverability | `apiKey` | Yes | Unknown | | [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | | [Sendgrid](https://sendgrid.com/docs/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | From f7255babfcdc4c193343ba231865d2df0fe57aa6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 28 Dec 2021 17:43:12 -0300 Subject: [PATCH 032/315] Remove mailgun Mailgun only provides a testing tier. When this tier's limit runs out, you'll need to pay to keep using it. ref: https://www.mailgun.com/pricing/ ``` Try us out! Get 5,000 free emails per month for 3 months, then only pay for what you send Pay As You Grow ``` --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index aac2f4f6..df862aa9 100644 --- a/README.md +++ b/README.md @@ -272,7 +272,6 @@ API | Description | Auth | HTTPS | CORS | | [Google Analytics](https://developers.google.com/analytics/) | Collect, configure and analyze your data to reach the right audience | `OAuth` | Yes | Unknown | | [Instatus](https://instatus.com/help/api) | Post to and update maintenance and incidents on your status page through an HTTP REST API | `apiKey` | Yes | Unknown | | [Mailchimp](https://mailchimp.com/developer/) | Send marketing campaigns and transactional mails | `apiKey` | Yes | Unknown | -| [mailgun](https://www.mailgun.com/) | Email Service | `apiKey` | Yes | Unknown | | [mailjet](https://www.mailjet.com/) | Marketing email can be sent and mail templates made in MJML or HTML can be sent using API | `apiKey` | Yes | Unknown | | [markerapi](http://www.markerapi.com/) | Trademark Search | No | No | Unknown | | [ORB Intelligence](https://api.orb-intelligence.com/docs/) | Company lookup | `apiKey` | Yes | Unknown | From 1f2c0f3db7bd94edfd0787337e898afdae74abc9 Mon Sep 17 00:00:00 2001 From: Not Your Surya <0x0is1@protonmail.com> Date: Wed, 29 Dec 2021 14:18:10 +0530 Subject: [PATCH 033/315] [+] Add Lowy Asia Index API (#2951) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index df862aa9..bbf32114 100644 --- a/README.md +++ b/README.md @@ -1212,6 +1212,7 @@ API | Description | Auth | HTTPS | CORS | | [Joshua Project](https://api.joshuaproject.net/) | People groups of the world with the fewest followers of Christ | `apiKey` | Yes | Unknown | | [Kaggle](https://www.kaggle.com/docs/api) | Create and interact with Datasets, Notebooks, and connect with Kaggle | `apiKey` | Yes | Unknown | | [LinkPreview](https://www.linkpreview.net) | Get JSON formatted summary with title, description and preview image for any requested URL | `apiKey` | Yes | Yes | +| [Lowy Asia Power Index](https://github.com/0x0is1/lowy-index-api-docs) | Get measure resources and influence to rank the relative power of states in Asia | No | Yes | Unknown | | [Microlink.io](https://microlink.io) | Extract structured data from any website | No | Yes | Yes | | [Nasdaq Data Link](https://docs.data.nasdaq.com/) | Stock market data | `apiKey` | Yes | Unknown | | [Nobel Prize](https://www.nobelprize.org/about/developer-zone-2/) | Open data about nobel prizes and events | No | Yes | Yes | From 36c3be285d7eb2a63388b3f62f183506e68962ff Mon Sep 17 00:00:00 2001 From: Friedrich Lindenberg Date: Thu, 30 Dec 2021 14:03:09 +0100 Subject: [PATCH 034/315] Add OpenSanctions --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bbf32114..af6dce0f 100644 --- a/README.md +++ b/README.md @@ -1219,6 +1219,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Data Minneapolis](https://opendata.minneapolismn.gov/) | Spatial (GIS) and non-spatial city data for Minneapolis | No | Yes | No | | [openAFRICA](https://africaopendata.org/) | Large datasets repository of African open data | No | Yes | Unknown | | [OpenCorporates](http://api.opencorporates.com/documentation/API-Reference) | Data on corporate entities and directors in many countries | `apiKey` | Yes | Unknown | +| [OpenSanctions](https://www.opensanctions.org/docs/api/) | Data on international sanctions, crime and politically exposed persons | No | Yes | Yes | | [PeakMetrics](https://rapidapi.com/peakmetrics-peakmetrics-default/api/peakmetrics-news) | News articles and public datasets | `apiKey` | Yes | Unknown | | [Recreation Information Database](https://ridb.recreation.gov/) | Recreational areas, federal lands, historic sites, museums, and other attractions/resources(US) | `apiKey` | Yes | Unknown | | [Scoop.it](http://www.scoop.it/dev) | Content Curation Service | `apiKey` | No | Unknown | From af85434ee76786ed62cd7effbfc9afaaadcfa0b5 Mon Sep 17 00:00:00 2001 From: Seth Morenos Date: Thu, 30 Dec 2021 23:33:02 -0500 Subject: [PATCH 035/315] add kimiquotes to Personality --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bbf32114..fd600b08 100644 --- a/README.md +++ b/README.md @@ -1271,6 +1271,7 @@ API | Description | Auth | HTTPS | CORS | | [icanhazdadjoke](https://icanhazdadjoke.com/api) | The largest selection of dad jokes on the internet | No | Yes | Unknown | | [Inspiration](https://inspiration.goprogram.ai/docs/) | Motivational and Inspirational quotes | No | Yes | Yes | | [kanye.rest](https://kanye.rest) | REST API for random Kanye West quotes | No | Yes | Yes | +| [kimiquotes](https://kimiquotes.herokuapp.com/doc) | Team radio and interview quotes by Finnish F1 legend Kimi Räikkönen | No | Yes | Yes | | [Medium](https://github.com/Medium/medium-api-docs) | Community of readers and writers offering unique perspectives on ideas | `OAuth` | Yes | Unknown | | [Programming Quotes](https://github.com/skolakoda/programming-quotes-api) | Programming Quotes API for open source projects | No | Yes | Unknown | | [Quotable Quotes](https://github.com/lukePeavey/quotable) | Quotable is a free, open source quotations API | No | Yes | Unknown | From bf01c83b746da0c9d7c29cee3e33faf7df1c0ee0 Mon Sep 17 00:00:00 2001 From: Robert Renzo Rudio Date: Fri, 31 Dec 2021 15:35:18 -0800 Subject: [PATCH 036/315] add GeographQL to Geocoding --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bbf32114..80283ac5 100644 --- a/README.md +++ b/README.md @@ -891,6 +891,7 @@ API | Description | Auth | HTTPS | CORS | | [Geodata.gov.gr](https://geodata.gov.gr/en/) | Open geospatial data and API service for Greece | No | Yes | Unknown | | [GeoDataSource](https://www.geodatasource.com/web-service) | Geocoding of city name by using latitude and longitude coordinates | `apiKey` | Yes | Unknown | | [GeoDB Cities](http://geodb-cities-api.wirefreethought.com/) | Get global city, region, and country data | `apiKey` | Yes | Unknown | +| [GeographQL](https://geographql.netlify.app) | A Country, State, and City GraphQL API | No | Yes | Yes | | [GeoJS](https://geojs.io/) | IP geolocation with ChatOps integration | No | Yes | Yes | | [Geokeo](https://geokeo.com) | Geokeo geocoding service- with 2500 free api requests daily | No | Yes | Yes | | [GeoNames](http://www.geonames.org/export/web-services.html) | Place names and other geographical data | No | No | Unknown | From eb5f4dc4ecd6728ae7179fe9db9c88ccfebfe6c0 Mon Sep 17 00:00:00 2001 From: Pawel Borkar <36134699+pawelborkar@users.noreply.github.com> Date: Sat, 1 Jan 2022 11:40:12 +0530 Subject: [PATCH 037/315] Update year to 2022 --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 5d67c9ed..196b23b1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 public-apis +Copyright (c) 2022 public-apis Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From ef3aa99fd58747523bbd292266eded6d2027d656 Mon Sep 17 00:00:00 2001 From: Gabriel Tavares <88493991+gabzin@users.noreply.github.com> Date: Tue, 4 Jan 2022 00:11:32 -0300 Subject: [PATCH 038/315] Add Brazil CNPJ (#2984) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b019304f..225cc7cd 100644 --- a/README.md +++ b/README.md @@ -957,6 +957,7 @@ API | Description | Auth | HTTPS | CORS | | [BCLaws](http://www.bclaws.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | | [Brazil](https://brasilapi.com.br/) | Community driven API for Brazil Public Data | No | Yes | Yes | | [Brazil Central Bank Open Data](https://dadosabertos.bcb.gov.br/) | Brazil Central Bank Open Data | No | Yes | Unknown | +| [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | No | Unknown | | [Brazil Receita WS](https://www.receitaws.com.br/) | Consult companies by CNPJ for Brazilian companies | No | Yes | Unknown | | [Brazilian Chamber of Deputies Open Data](https://dadosabertos.camara.leg.br/swagger/api.html) | Provides legislative information in Apis XML and JSON, as well as files in various formats | No | Yes | No | | [BusinessUSA](https://business.usa.gov/developer) | Authoritative information on U.S. programs, events, services and more | `apiKey` | Yes | Unknown | From bd42acfebb6691a47195bf7cea9934730238cc77 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 4 Jan 2022 04:27:12 +0100 Subject: [PATCH 039/315] Add Stromberg Quotes (#2990) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 795c509e..3a99119c 100644 --- a/README.md +++ b/README.md @@ -1721,6 +1721,7 @@ API | Description | Auth | HTTPS | CORS | | [STAPI](http://stapi.co) | Information on all things Star Trek | No | No | No | | [Stranger Things Quotes](https://github.com/shadowoff09/strangerthings-quotes) | Returns Stranger Things quotes | No | Yes | Unknown | | [Stream](https://api.stream.cz/graphiql) | Czech internet television, films, series and online videos for free | No | Yes | No | +| [Stromberg Quotes](https://www.stromberg-api.de/) | Returns Stromberg quotes and more | No | Yes | Unknown | | [SWAPI](https://swapi.dev/) | All the Star Wars data you've ever wanted | No | Yes | Yes | | [SWAPI](https://www.swapi.tech) | All things Star Wars | No | Yes | Yes | | [SWAPI GraphQL](https://graphql.org/swapi-graphql) | Star Wars GraphQL API | No | Yes | Unknown | From e89172839de7ddd7388364712e881093af29211d Mon Sep 17 00:00:00 2001 From: Gabriel Tavares <88493991+gabzin@users.noreply.github.com> Date: Wed, 5 Jan 2022 18:26:34 -0300 Subject: [PATCH 040/315] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a99119c..4d5fab22 100644 --- a/README.md +++ b/README.md @@ -958,7 +958,7 @@ API | Description | Auth | HTTPS | CORS | | [BCLaws](http://www.bclaws.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | | [Brazil](https://brasilapi.com.br/) | Community driven API for Brazil Public Data | No | Yes | Yes | | [Brazil Central Bank Open Data](https://dadosabertos.bcb.gov.br/) | Brazil Central Bank Open Data | No | Yes | Unknown | -| [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | No | Unknown | +| [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | Yes | Unknown | | [Brazil Receita WS](https://www.receitaws.com.br/) | Consult companies by CNPJ for Brazilian companies | No | Yes | Unknown | | [Brazilian Chamber of Deputies Open Data](https://dadosabertos.camara.leg.br/swagger/api.html) | Provides legislative information in Apis XML and JSON, as well as files in various formats | No | Yes | No | | [BusinessUSA](https://business.usa.gov/developer) | Authoritative information on U.S. programs, events, services and more | `apiKey` | Yes | Unknown | From 6d1c6c532b30e0998c5e31e4aaf4225670f9a805 Mon Sep 17 00:00:00 2001 From: Akshayan Sinha Date: Thu, 6 Jan 2022 10:48:32 +0530 Subject: [PATCH 041/315] Removed fungenerators (Fun Fact) API It is not open-source, it is a paid service. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3a99119c..eb598e97 100644 --- a/README.md +++ b/README.md @@ -542,7 +542,6 @@ API | Description | Auth | HTTPS | CORS | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | | [Public APIs](https://github.com/davemachado/public-api) | A collective list of free JSON APIs for use in web development | No | Yes | Unknown | | [Pusher Beams](https://pusher.com/beams) | Push notifications for Android & iOS | `apiKey` | Yes | Unknown | -| [QR Code](https://fungenerators.com/api/qrcode/) | Create new QR Code or decode existing one | `apiKey` | Yes | Yes | | [QR code](http://qrtag.net/api/) | Create an easy to read QR code and URL shortener | No | Yes | Yes | | [QR code](http://goqr.me/api/) | Generate and decode / read QR code graphics | No | Yes | Unknown | | [Qrcode Monkey](https://www.qrcode-monkey.com/qr-code-api-with-logo/) | Integrate custom and unique looking QR codes into your system or workflow | No | Yes | Unknown | From 172da16352ce6f8df632bc29f5b28d1c61073e00 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 6 Jan 2022 05:14:59 -0300 Subject: [PATCH 042/315] Remove Random Facts Fungenerators Random Facts is now paid --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index d55c45b7..ddb489f1 100644 --- a/README.md +++ b/README.md @@ -838,7 +838,6 @@ API | Description | Auth | HTTPS | CORS | | [Puyo Nexus](https://github.com/deltadex7/puyodb-api-deno) | Puyo Puyo information from Puyo Nexus Wiki | No | Yes | Yes | | [quizapi.io](https://quizapi.io/) | Access to various kind of quiz questions | `apiKey` | Yes | Yes | | [Raider](https://raider.io/api) | Provides detailed character and guild rankings for Raiding and Mythic+ content in World of Warcraft | No | Yes | Unknown | -| [Random Facts](https://fungenerators.com/api/facts/) | Random Facts from hundreds of categories | `apiKey` | Yes | Yes | | [RAWG.io](https://rawg.io/apidocs) | 500,000+ games for 50 platforms including mobiles | `apiKey` | Yes | Unknown | | [Rick and Morty](https://rickandmortyapi.com) | All the Rick and Morty information, including images | No | Yes | Yes | | [Riot Games](https://developer.riotgames.com/) | League of Legends Game Information | `apiKey` | Yes | Unknown | From bf06e9cedbdbed1e8a7c70d545b86c549130b8ae Mon Sep 17 00:00:00 2001 From: Manuel Bauer Date: Thu, 6 Jan 2022 13:07:07 +0100 Subject: [PATCH 043/315] Remove Troposphere weather API, because it is no longer active --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ddb489f1..313518e7 100644 --- a/README.md +++ b/README.md @@ -1767,7 +1767,6 @@ API | Description | Auth | HTTPS | CORS | | [SimpleWeather](https://english.api.rakuten.net/mxrck/api/simple-weather/endpoints) | Simple tool for get current weather | `apiKey` | Yes | Yes | | [Storm Glass](https://stormglass.io/) | Global marine weather from multiple sources | `apiKey` | Yes | Yes | | [Tomorrow](https://docs.tomorrow.io) | Weather API Powered by Proprietary Technology | `apiKey` | Yes | Unknown | -| [Troposphere](https://www.troposphere.io/developer) | Global weather and climate data | `apiKey` | Yes | Yes | | [US Weather](https://www.weather.gov/documentation/services-web-api) | US National Weather Service | No | Yes | Yes | | [Visual Crossing](https://www.visualcrossing.com/weather-api) | Global historical and weather forecast data | `apiKey` | Yes | Yes | | [weather-api](https://github.com/robertoduessmann/weather-api) | A RESTful free API to check the weather | No | Yes | No | From dba235f13f1ae4394b55a9cdb3fdc5dc99526e88 Mon Sep 17 00:00:00 2001 From: Kaustubh Dwivedi Date: Sat, 8 Jan 2022 00:28:07 +0530 Subject: [PATCH 044/315] Add Excuser in Entertainment Category (#2994) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 313518e7..92207dbc 100644 --- a/README.md +++ b/README.md @@ -650,6 +650,7 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [chucknorris.io](https://api.chucknorris.io) | JSON API for hand curated Chuck Norris jokes | No | Yes | Unknown | +| [Excuser](https://excuser.herokuapp.com/) | Get random excuses for various situations | No | Yes | Unknown | | [Imgflip](https://imgflip.com/api) | Gets an array of popular memes | No | Yes | Unknown | | [Meme Maker](https://mememaker.github.io/API/) | REST API for create your own meme | No | Yes | Unknown | | [NaMoMemes](https://github.com/theIYD/NaMoMemes) | Memes on Narendra Modi | No | Yes | Unknown | From 250846b5eede7c71c58a62dae7785331cc012cb9 Mon Sep 17 00:00:00 2001 From: Le Quant 40 Date: Fri, 7 Jan 2022 22:37:46 +0100 Subject: [PATCH 045/315] Add Portfolio Optimizer API to Finance --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 92207dbc..24d5853d 100644 --- a/README.md +++ b/README.md @@ -721,6 +721,7 @@ API | Description | Auth | HTTPS | CORS | | [OpenFIGI](https://www.openfigi.com/api) | Equity, index, futures, options symbology from Bloomberg LP | `apiKey` | Yes | Yes | | [Plaid](https://plaid.com/) | Connect with user's bank accounts and access transaction data | `apiKey` | Yes | Unknown | | [Polygon](https://polygon.io/) | Historical stock market data | `apiKey` | Yes | Unknown | +| [Portfolio Optimizer](https://portfoliooptimizer.io/) | Portfolio analysis and optimization | No | Yes | Yes | | [Razorpay IFSC](https://razorpay.com/docs/) | Indian Financial Systems Code (Bank Branch Codes) | No | Yes | Unknown | | [Real Time Finance](https://github.com/Real-time-finance/finance-websocket-API/) | Websocket API to access realtime stock data | `apiKey` | No | Unknown | | [SEC EDGAR Data](https://www.sec.gov/edgar/sec-api-documentation) | API to access annual reports of public US companies | No | Yes | Yes | From efdf1e1ccfda42f47ddcf077e946712fdee2f3a4 Mon Sep 17 00:00:00 2001 From: Harshal Dhir Date: Mon, 10 Jan 2022 21:00:05 -0800 Subject: [PATCH 046/315] Add MessengerX.io in Machine Learning (#3000) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 24d5853d..3a674bcc 100644 --- a/README.md +++ b/README.md @@ -1123,6 +1123,7 @@ API | Description | Auth | HTTPS | CORS | | [Irisnet](https://irisnet.de/api/) | Realtime content moderation API that blocks or blurs unwanted images in real-time | `apiKey` | Yes | Yes | | [Keen IO](https://keen.io/) | Data Analytics | `apiKey` | Yes | Unknown | | [Machinetutors](https://www.machinetutors.com/portfolio/MT_api.html) | AI Solutions: Video/Image Classification & Tagging, NSFW, Icon/Image/Audio Search, NLP | `apiKey` | Yes | Yes | +| [MessengerX.io](https://messengerx.rtfd.io) | A FREE API for developers to build and monetize personalized ML based chat apps | `apiKey` | Yes | Yes | | [NLP Cloud](https://nlpcloud.io) | NLP API using spaCy and transformers for NER, sentiments, classification, summarization, and more | `apiKey` | Yes | Unknown | | [OpenVisionAPI](https://openvisionapi.com) | Open source computer vision API based on open source models | No | Yes | Yes | | [Perspective](https://perspectiveapi.com) | NLP API to return probability that if text is toxic, obscene, insulting or threatening | `apiKey` | Yes | Unknown | From f5123d246ad9ad7537fd002e2668157a56aa264a Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 02:33:41 -0300 Subject: [PATCH 047/315] Create .gitignore file to Python projects --- .gitignore | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..bdca81ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,130 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST +.pypirc + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ \ No newline at end of file From f59cb8290404898b1c5296a4f9c8d91a121badef Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 02:38:26 -0300 Subject: [PATCH 048/315] Create validate package --- scripts/validate/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 scripts/validate/__init__.py diff --git a/scripts/validate/__init__.py b/scripts/validate/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/scripts/validate/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- From e526f867d8b17c5f7e275afa4da0efd031b79e1c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 02:42:28 -0300 Subject: [PATCH 049/315] Create new requirements file --- scripts/requirements.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 scripts/requirements.txt diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 00000000..9b0cb453 --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1,5 @@ +certifi==2021.10.8 +charset-normalizer==2.0.10 +idna==3.3 +requests==2.27.1 +urllib3==1.26.8 From 83caeb7cbeaea87481af1325572a7f0800b388c3 Mon Sep 17 00:00:00 2001 From: Pawel Borkar <36134699+pawelborkar@users.noreply.github.com> Date: Tue, 11 Jan 2022 11:25:04 +0530 Subject: [PATCH 050/315] Add copyright to the license section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a674bcc..cbe289e9 100644 --- a/README.md +++ b/README.md @@ -1782,4 +1782,4 @@ API | Description | Auth | HTTPS | CORS |
## License -[MIT](LICENSE) +[MIT](LICENSE) (c) 2022 public-apis From 4808d633a170a7732a45016da47390a9d5e3638d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 03:59:18 -0300 Subject: [PATCH 051/315] Implement functions to find links in a text/file --- scripts/validate/links.py | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 scripts/validate/links.py diff --git a/scripts/validate/links.py b/scripts/validate/links.py new file mode 100644 index 00000000..b7895097 --- /dev/null +++ b/scripts/validate/links.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +import sys +import re +from typing import List + + +def find_links_in_text(text: str) -> List[str]: + """Find links in a text and return a list of URLs.""" + + link_pattern = re.compile(r'((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'\".,<>?«»“”‘’]))') + + raw_links = re.findall(link_pattern, text) + + links = [ + str(raw_link[0]).rstrip('/') for raw_link in raw_links + ] + + return links + + +def find_links_in_file(filename: str) -> List[str]: + """Find links in a file and return a list of URLs from text file.""" + + with open(filename, mode='r', encoding='utf-8') as file: + readme = file.read() + index_section = readme.find('## Index') + content = readme[index_section:] + + links = find_links_in_text(content) + + return links + + +if __name__ == '__main__': + num_args = len(sys.argv) + + if num_args < 2: + print('No .md file passed') + sys.exit(1) + + links = find_links_in_file(sys.argv[1]) From 2eb6d2010097041178ce88a98353507c6eaadcbb Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 04:33:18 -0300 Subject: [PATCH 052/315] Implement functions to check duplicate links --- scripts/validate/links.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index b7895097..45bd174e 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -32,6 +32,31 @@ def find_links_in_file(filename: str) -> List[str]: return links +def check_duplicate_links(links: List[str]) -> bool: + """Check for duplicated links and return True or False.""" + + print('Checking for duplicated links...') + + seen = {} + duplicates = [] + has_duplicate = False + + for link in links: + if link not in seen: + seen[link] = 1 + else: + if seen[link] == 1: + duplicates.append(link) + + if not duplicates: + print(f'No duplicate links.') + else: + print(f'Found duplicate links: {duplicates}') + has_duplicate = True + + return has_duplicate + + if __name__ == '__main__': num_args = len(sys.argv) @@ -40,3 +65,5 @@ if __name__ == '__main__': sys.exit(1) links = find_links_in_file(sys.argv[1]) + + has_duplicate = check_duplicate_links(links) From 130179838922b84f8728a675cab17be63429d879 Mon Sep 17 00:00:00 2001 From: "Isis T. Baulig" Date: Tue, 11 Jan 2022 12:19:50 +0100 Subject: [PATCH 053/315] add Climatiq to Environment --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cbe289e9..1f4200a9 100644 --- a/README.md +++ b/README.md @@ -664,6 +664,7 @@ API | Description | Auth | HTTPS | CORS | | [AirVisual](https://airvisual.com/api) | Air quality and weather data | `apiKey` | Yes | Unknown | | [BreezoMeter Pollen](https://docs.breezometer.com/api-documentation/pollen-api/v2/) | Daily Forecast pollen conditions data for a specific location | `apiKey` | Yes | Unknown | | [Carbon Interface](https://docs.carboninterface.com/) | API to calculate carbon (C02) emissions estimates for common C02 emitting activities | `apiKey` | Yes | Yes | +| [Climatiq](https://docs.climatiq.io) | Calculate the environmental footprint created by a broad range of emission-generating activities | `apiKey` | Yes | Yes | | [Cloverly](https://www.cloverly.com/carbon-offset-documentation) | API calculates the impact of common carbon-intensive activities in real time | `apiKey` | Yes | Unknown | | [CO2 Offset](https://co2offset.io/api.html) | API calculates and validates the carbon footprint | No | Yes | Unknown | | [Danish data service Energi](https://www.energidataservice.dk/) | Open energy data from Energinet to society | No | Yes | Unknown | From aaf1600708da07a257007425da5618a7abe7388f Mon Sep 17 00:00:00 2001 From: Dale B <78056869+hyamero@users.noreply.github.com> Date: Tue, 11 Jan 2022 21:12:34 +0800 Subject: [PATCH 054/315] Add Collective APIs Site in the Alternative sites (#3004) * Add Collective APIs Site in the Alternative sites site: https://www.collective-api.ml * Update Collective APIs link --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f4200a9..643b7864 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,8 @@ Free APIsDev ResourcesPublic APIs Site • - Apihouse + Apihouse • + Collective APIs --- From 322c51e1cf093e2cb8089a13834fe7f0474b8ab5 Mon Sep 17 00:00:00 2001 From: Aidan Holland Date: Tue, 11 Jan 2022 14:33:43 -0500 Subject: [PATCH 055/315] Update Censys Link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 643b7864..8ac0b259 100644 --- a/README.md +++ b/README.md @@ -1388,7 +1388,7 @@ API | Description | Auth | HTTPS | CORS | | [BitWarden](https://bitwarden.com/help/api/) | Best open-source password manager | `OAuth` | Yes | Unknown | | [Botd](https://github.com/fingerprintjs/botd) | Botd is a browser library for JavaScript bot detection | `apiKey` | Yes | Yes | | [Bugcrowd](https://docs.bugcrowd.com/api/getting-started/) | Bugcrowd API for interacting and tracking the reported issues programmatically | `apiKey` | Yes | Unknown | -| [Censys.io](https://censys.io/api) | Search engine for Internet connected host and devices | `apiKey` | Yes | No | +| [Censys](https://search.censys.io/api) | Search engine for Internet connected host and devices | `apiKey` | Yes | No | | [Classify](https://classify-web.herokuapp.com/#/api) | Encrypting & decrypting text messages | No | Yes | Yes | | [Complete Criminal Checks](https://completecriminalchecks.com/Developers) | Provides data of offenders from all U.S. States and Pureto Rico | `apiKey` | Yes | Yes | | [CRXcavator](https://crxcavator.io/apidocs) | Chrome extension risk scoring | `apiKey` | Yes | Unknown | From d728eeddbce61e5b84d3f29efe4f4b9dc6fd6ce5 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 20:58:05 -0300 Subject: [PATCH 056/315] Refactor duplicate link checker --- scripts/validate/links.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 45bd174e..bb84aac8 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -2,7 +2,7 @@ import sys import re -from typing import List +from typing import List, Tuple def find_links_in_text(text: str) -> List[str]: @@ -32,10 +32,11 @@ def find_links_in_file(filename: str) -> List[str]: return links -def check_duplicate_links(links: List[str]) -> bool: - """Check for duplicated links and return True or False.""" +def check_duplicate_links(links: List[str]) -> Tuple[bool, List]: + """Check for duplicated links. - print('Checking for duplicated links...') + Returns a tuple with True or False and duplicate list. + """ seen = {} duplicates = [] @@ -48,13 +49,10 @@ def check_duplicate_links(links: List[str]) -> bool: if seen[link] == 1: duplicates.append(link) - if not duplicates: - print(f'No duplicate links.') - else: - print(f'Found duplicate links: {duplicates}') + if duplicates: has_duplicate = True - - return has_duplicate + + return (has_duplicate, duplicates) if __name__ == '__main__': @@ -66,4 +64,11 @@ if __name__ == '__main__': links = find_links_in_file(sys.argv[1]) - has_duplicate = check_duplicate_links(links) + print('Checking for duplicate links...') + + has_duplicate_link, duplicates_links = check_duplicate_links(links) + + if has_duplicate_link: + print(f'Found duplicate links: {duplicates_links}') + else: + print('No duplicate links.') From d86c263f4523ee38e01e4fba4847d60e409cbece Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 21:09:43 -0300 Subject: [PATCH 057/315] Create test structure --- scripts/tests/__init__.py | 1 + scripts/tests/test_validate_links.py | 1 + 2 files changed, 2 insertions(+) create mode 100644 scripts/tests/__init__.py create mode 100644 scripts/tests/test_validate_links.py diff --git a/scripts/tests/__init__.py b/scripts/tests/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/scripts/tests/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/scripts/tests/test_validate_links.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- From 80ba7262faac234387e0c537caa8838420050c8f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 21:13:46 -0300 Subject: [PATCH 058/315] Create TestValidateLinks class --- scripts/tests/test_validate_links.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index 40a96afc..031a8658 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -1 +1,7 @@ # -*- coding: utf-8 -*- + +import unittest + + +class TestValidateLinks(unittest.TestCase): + ... From bf4dfcd39dcec6d2fbe964bc837390b19ce25b09 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 22:16:26 -0300 Subject: [PATCH 059/315] Create basic test to find_link_in_text function --- scripts/tests/test_validate_links.py | 41 +++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index 031a8658..f9dea3e0 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -2,6 +2,45 @@ import unittest +from validate.links import find_links_in_text + class TestValidateLinks(unittest.TestCase): - ... + + def setUp(self): + self.text = """ + # this is valid + + http://example.com?param1=1¶m2=2#anchor + https://www.example.com?param1=1¶m2=2#anchor + https://www.example.com.br + https://www.example.com.gov.br + [Example](https://www.example.com?param1=1¶m2=2#anchor) + lorem ipsum https://www.example.com?param1=1¶m2=2#anchor + https://www.example.com?param1=1¶m2=2#anchor lorem ipsum + + # this not is valid + + example.com + https:example.com + https:/example.com + https//example.com + https//.com + """ + + + def test_find_link_in_text(self): + links = find_links_in_text(self.text) + + self.assertIsInstance(links, list) + self.assertEqual(len(links), 7) + + for link in links: + with self.subTest(): + self.assertIsInstance(link, str) + + def test_find_link_in_text_with_invalid_argument(self): + with self.assertRaises(TypeError): + find_links_in_text() + find_links_in_text(1) + find_links_in_text(True) From 3cc0f49b29c26b42e0c91f20740ec404eaf290f0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 22:19:54 -0300 Subject: [PATCH 060/315] Remove setUp method --- scripts/tests/test_validate_links.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index f9dea3e0..97833f09 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -5,10 +5,10 @@ import unittest from validate.links import find_links_in_text -class TestValidateLinks(unittest.TestCase): +class TestValidateLinks(unittest.TestCase): - def setUp(self): - self.text = """ + def test_find_link_in_text(self): + text = """ # this is valid http://example.com?param1=1¶m2=2#anchor @@ -27,10 +27,8 @@ class TestValidateLinks(unittest.TestCase): https//example.com https//.com """ - - def test_find_link_in_text(self): - links = find_links_in_text(self.text) + links = find_links_in_text(text) self.assertIsInstance(links, list) self.assertEqual(len(links), 7) From d06a3717d487b3a24a1a268b97c5e881ff9bdf28 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 11 Jan 2022 22:32:43 -0300 Subject: [PATCH 061/315] Remove whitespace --- scripts/tests/test_validate_links.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index 97833f09..c655f4af 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -5,7 +5,7 @@ import unittest from validate.links import find_links_in_text -class TestValidateLinks(unittest.TestCase): +class TestValidateLinks(unittest.TestCase): def test_find_link_in_text(self): text = """ From 7be0512b5438edf4d434f325181e2e586ee65009 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 00:55:23 -0300 Subject: [PATCH 062/315] Check if a link is working --- scripts/validate/links.py | 79 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index bb84aac8..2dfbf7db 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -1,9 +1,12 @@ # -*- coding: utf-8 -*- -import sys import re +import sys +import random from typing import List, Tuple +import requests + def find_links_in_text(text: str) -> List[str]: """Find links in a text and return a list of URLs.""" @@ -55,6 +58,80 @@ def check_duplicate_links(links: List[str]) -> Tuple[bool, List]: return (has_duplicate, duplicates) +def fake_user_agent() -> str: + """Faking user agent as some hosting services block not-whitelisted UA.""" + + user_agents = [ + 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko)', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36', + ] + + return random.choice(user_agents) + + +def get_host_from_link(link: str) -> str: + + host = link.split('://', 1)[1] + + # Remove routes, arguments and anchors + if '/' in host: + host = host.split('/', 1)[0] + + elif '?' in host: + host = host.split('?', 1)[0] + + elif '#' in host: + host = host.split('#', 1)[0] + + return host + + +def check_if_link_is_working(link: str) -> Tuple[bool, str]: + """Checks if a link is working. + + If an error is identified when the request for the link occurs, + the return will be a tuple with the first value True and the second + value a string containing the error message. + + If no errors are identified, the return will be a tuple with the + first value False and the second an empty string. + """ + + has_error = False + error_message = '' + + try: + resp = requests.get(link + '/', timeout=25, headers={ + 'User-Agent': fake_user_agent(), + 'host': get_host_from_link(link) + }) + + code = resp.status_code + if code >= 400: + has_error = True + error_message = f'ERR:CLT: {code} : {link}' + + except (TimeoutError, requests.exceptions.ConnectTimeout): + has_error = True + error_message = f'ERR:TMO: {link}' + + except requests.exceptions.SSLError as error: + has_error = True + error_message = f'ERR:SSL: {error} : {link}' + + except requests.exceptions.TooManyRedirects as error: + has_error = True + error_message = f'ERR:TMR: {error} : {link}' + + except Exception as error: + has_error = True + error_message = f'ERR:UKN: {error} : {link}' + + return (has_error, error_message) + + if __name__ == '__main__': num_args = len(sys.argv) From 95ee79818f70180085e6b97256ccb9c23d2db28c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 00:58:54 -0300 Subject: [PATCH 063/315] Remove whitespaces --- scripts/validate/links.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 2dfbf7db..ad73e608 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -90,7 +90,7 @@ def get_host_from_link(link: str) -> str: def check_if_link_is_working(link: str) -> Tuple[bool, str]: """Checks if a link is working. - + If an error is identified when the request for the link occurs, the return will be a tuple with the first value True and the second value a string containing the error message. @@ -116,11 +116,11 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: except (TimeoutError, requests.exceptions.ConnectTimeout): has_error = True error_message = f'ERR:TMO: {link}' - + except requests.exceptions.SSLError as error: has_error = True error_message = f'ERR:SSL: {error} : {link}' - + except requests.exceptions.TooManyRedirects as error: has_error = True error_message = f'ERR:TMR: {error} : {link}' @@ -128,7 +128,7 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: except Exception as error: has_error = True error_message = f'ERR:UKN: {error} : {link}' - + return (has_error, error_message) From 8650f7f979c769f5dc0e906e1f4d64da580783c7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 01:23:59 -0300 Subject: [PATCH 064/315] Make sure the link contains :// --- scripts/validate/links.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index ad73e608..5de8b334 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -73,7 +73,7 @@ def fake_user_agent() -> str: def get_host_from_link(link: str) -> str: - host = link.split('://', 1)[1] + host = link.split('://', 1)[1] if '://' in link else link # Remove routes, arguments and anchors if '/' in host: From ef8c4f04e56ac00c5bcf881b63d09313dc3a2214 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 01:26:39 -0300 Subject: [PATCH 065/315] Create basic test to get host from link --- scripts/tests/test_validate_links.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index c655f4af..c5a3fd4b 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -3,6 +3,7 @@ import unittest from validate.links import find_links_in_text +from validate.links import get_host_from_link class TestValidateLinks(unittest.TestCase): @@ -42,3 +43,25 @@ class TestValidateLinks(unittest.TestCase): find_links_in_text() find_links_in_text(1) find_links_in_text(True) + + def test_get_host_from_link(self): + links = [ + 'example.com', + 'https://example.com', + 'https://www.example.com', + 'https://www.example.com.br', + 'https://www.example.com/route', + 'https://www.example.com?p=1&q=2', + 'https://www.example.com#anchor' + ] + + for link in links: + host = get_host_from_link(link) + + with self.subTest(): + self.assertIsInstance(host, str) + + self.assertNotIn('://', host) + self.assertNotIn('/', host) + self.assertNotIn('?', host) + self.assertNotIn('#', host) From a707c4b89dc8229a8200becc7329b0352c893c67 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 01:30:08 -0300 Subject: [PATCH 066/315] Test get_host_from_link with invalid argument --- scripts/tests/test_validate_links.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index c5a3fd4b..a559f712 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -65,3 +65,6 @@ class TestValidateLinks(unittest.TestCase): self.assertNotIn('/', host) self.assertNotIn('?', host) self.assertNotIn('#', host) + + with self.assertRaises(TypeError): + get_host_from_link() From 978147ca3963896dbb2da0811075f360eef81f53 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 02:15:39 -0300 Subject: [PATCH 067/315] Check if a list of links are working --- scripts/validate/links.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 5de8b334..5cfb6e8d 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -132,6 +132,17 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: return (has_error, error_message) +def check_if_list_of_links_are_working(list_of_links: List[str]) -> List[str]: + error_messages = [] + for link in list_of_links: + has_error, error_message = check_if_link_is_working(link) + + if has_error: + error_messages.append(error_message) + + return error_messages + + if __name__ == '__main__': num_args = len(sys.argv) @@ -147,5 +158,14 @@ if __name__ == '__main__': if has_duplicate_link: print(f'Found duplicate links: {duplicates_links}') + sys.exit(1) else: print('No duplicate links.') + + print(f'Checking if {len(links)} links are working...') + + errors = check_if_list_of_links_are_working(links) + if errors: + for error_message in errors: + print(error_message) + sys.exit(1) From 8136aa9ed1c97aae2cc883934c7d2dc011bb746b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 19:20:31 -0300 Subject: [PATCH 068/315] Implementing the cloudflare protection check Related: - #2409 - #2960 --- scripts/validate/links.py | 61 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 5cfb6e8d..fde7bad3 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -6,6 +6,7 @@ import random from typing import List, Tuple import requests +from requests.models import Response def find_links_in_text(text: str) -> List[str]: @@ -88,6 +89,63 @@ def get_host_from_link(link: str) -> str: return host +def has_cloudflare_protection(resp: Response) -> bool: + """Checks if there is any cloudflare protection in the response. + + Cloudflare implements multiple network protections on a given link, + this script tries to detect if any of them exist in the response from request. + + Common protections have the following HTTP code as a response: + - 403: When host header is missing or incorrect (and more) + - 503: When DDOS protection exists + + See more about it at: + - https://support.cloudflare.com/hc/en-us/articles/115003014512-4xx-Client-Error + - https://support.cloudflare.com/hc/en-us/articles/115003011431-Troubleshooting-Cloudflare-5XX-errors + - https://www.cloudflare.com/ddos/ + - https://superuser.com/a/888526 + + Discussions in issues and pull requests: + - https://github.com/public-apis/public-apis/pull/2409 + - https://github.com/public-apis/public-apis/issues/2960 + """ + + code = resp.status_code + server = resp.headers.get('Server') or resp.headers.get('server') + cloudflare_flags = [ + '403 Forbidden', + 'cloudflare', + 'Cloudflare', + 'Security check', + 'Please Wait... | Cloudflare', + 'We are checking your browser...', + 'Please stand by, while we are checking your browser...', + 'Checking your browser before accessing', + 'This process is automatic.', + 'Your browser will redirect to your requested content shortly.', + 'Please allow up to 5 seconds', + 'DDoS protection by', + 'Ray ID:', + 'Cloudflare Ray ID:', + '_cf_chl', + '_cf_chl_opt', + '__cf_chl_rt_tk', + 'cf-spinner-please-wait', + 'cf-spinner-redirecting' + ] + + if code in [403, 503] and server == 'cloudflare': + html = resp.text + + flags_found = [flag in html for flag in cloudflare_flags] + any_flag_found = any(flags_found) + + if any_flag_found: + return True + + return False + + def check_if_link_is_working(link: str) -> Tuple[bool, str]: """Checks if a link is working. @@ -109,7 +167,8 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: }) code = resp.status_code - if code >= 400: + + if code >= 400 and not has_cloudflare_protection(resp): has_error = True error_message = f'ERR:CLT: {code} : {link}' From 8ac60e31aaf5520c93f8843b7c485039afc0ac5c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 19:25:08 -0300 Subject: [PATCH 069/315] Remove whitespaces --- scripts/validate/links.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index fde7bad3..a64cdde3 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -91,14 +91,14 @@ def get_host_from_link(link: str) -> str: def has_cloudflare_protection(resp: Response) -> bool: """Checks if there is any cloudflare protection in the response. - + Cloudflare implements multiple network protections on a given link, this script tries to detect if any of them exist in the response from request. Common protections have the following HTTP code as a response: - 403: When host header is missing or incorrect (and more) - 503: When DDOS protection exists - + See more about it at: - https://support.cloudflare.com/hc/en-us/articles/115003014512-4xx-Client-Error - https://support.cloudflare.com/hc/en-us/articles/115003011431-Troubleshooting-Cloudflare-5XX-errors From 4edd0d5f54a18cff6780e16dee1946574f98be4f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 12 Jan 2022 20:00:56 -0300 Subject: [PATCH 070/315] Create basic tests to has_cloudflare_protection --- scripts/tests/test_validate_links.py | 65 ++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index a559f712..73103661 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -4,10 +4,29 @@ import unittest from validate.links import find_links_in_text from validate.links import get_host_from_link +from validate.links import has_cloudflare_protection + + +class FakeResponse(): + def __init__(self, code: int, headers: dict, text: str) -> None: + self.status_code = code + self.headers = headers + self.text = text class TestValidateLinks(unittest.TestCase): + def setUp(self): + self.code_200 = 200 + self.code_403 = 403 + self.code_503 = 503 + + self.cloudflare_headers = {'Server': 'cloudflare'} + self.no_cloudflare_headers = {'Server': 'google'} + + self.text_with_cloudflare_flags = '403 Forbidden Cloudflare We are checking your browser...' + self.text_without_cloudflare_flags = 'Lorem Ipsum' + def test_find_link_in_text(self): text = """ # this is valid @@ -68,3 +87,49 @@ class TestValidateLinks(unittest.TestCase): with self.assertRaises(TypeError): get_host_from_link() + + def test_has_cloudflare_protection_with_code_403_and_503_in_response(self): + resp_with_cloudflare_protection_code_403 = FakeResponse( + code=self.code_403, + headers=self.cloudflare_headers, + text=self.text_with_cloudflare_flags + ) + + resp_with_cloudflare_protection_code_503 = FakeResponse( + code=self.code_503, + headers=self.cloudflare_headers, + text=self.text_with_cloudflare_flags + ) + + result1 = has_cloudflare_protection(resp_with_cloudflare_protection_code_403) + result2 = has_cloudflare_protection(resp_with_cloudflare_protection_code_503) + + self.assertTrue(result1) + self.assertTrue(result2) + + def test_has_cloudflare_protection_when_there_is_no_protection(self): + resp_without_cloudflare_protection1 = FakeResponse( + code=self.code_200, + headers=self.no_cloudflare_headers, + text=self.text_without_cloudflare_flags + ) + + resp_without_cloudflare_protection2 = FakeResponse( + code=self.code_403, + headers=self.no_cloudflare_headers, + text=self.text_without_cloudflare_flags + ) + + resp_without_cloudflare_protection3 = FakeResponse( + code=self.code_503, + headers=self.no_cloudflare_headers, + text=self.text_without_cloudflare_flags + ) + + result1 = has_cloudflare_protection(resp_without_cloudflare_protection1) + result2 = has_cloudflare_protection(resp_without_cloudflare_protection2) + result3 = has_cloudflare_protection(resp_without_cloudflare_protection3) + + self.assertFalse(result1) + self.assertFalse(result2) + self.assertFalse(result3) From 77d4034af61acb2c5ea0484f53d988291caae8d1 Mon Sep 17 00:00:00 2001 From: Kristian Kramer Date: Wed, 12 Jan 2022 19:07:07 -0700 Subject: [PATCH 071/315] Add Catboy API to Anime Category Update Catboy Api to Catboy --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8ac0b259..cca65987 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ API | Description | Auth | HTTPS | CORS | | [AnimeChan](https://github.com/RocktimSaikia/anime-chan) | Anime quotes (over 10k+) | No | Yes | No | | [AnimeFacts](https://chandan-02.github.io/anime-facts-rest-api/) | Anime Facts (over 100+) | No | Yes | Yes | | [AnimeNewsNetwork](https://www.animenewsnetwork.com/encyclopedia/api.php) | Anime industry news | No | Yes | Yes | +| [Catboy](https://catboys.com/api) | Neko images, funny GIFs & more | No | Yes | Yes | | [Danbooru Anime](https://danbooru.donmai.us/wiki_pages/help:api) | Thousands of anime artist database to find good anime art | `apiKey` | Yes | Yes | | [Jikan](https://jikan.moe) | Unofficial MyAnimeList API | No | Yes | Yes | | [Kitsu](https://kitsu.docs.apiary.io/) | Anime discovery platform | `OAuth` | Yes | Yes | From 50ad807e5c9ef953ea88b496f67e8fc4aff249ca Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 13 Jan 2022 16:23:01 -0300 Subject: [PATCH 072/315] Show number of links with a possible error --- scripts/validate/links.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index a64cdde3..b0adeca8 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -225,6 +225,11 @@ if __name__ == '__main__': errors = check_if_list_of_links_are_working(links) if errors: + + num_errors = len(errors) + print(f'Apparently {num_errors} links are not working properly. See in:') + for error_message in errors: print(error_message) + sys.exit(1) From b62683f96eac5c08f6b54ec437240c64c4122c16 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 13 Jan 2022 16:33:03 -0300 Subject: [PATCH 073/315] Show one duplicate link per line --- scripts/validate/links.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index b0adeca8..efa918ad 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -216,7 +216,10 @@ if __name__ == '__main__': has_duplicate_link, duplicates_links = check_duplicate_links(links) if has_duplicate_link: - print(f'Found duplicate links: {duplicates_links}') + print(f'Found duplicate links:') + for duplicate_link in duplicates_links: + print(duplicate_link) + sys.exit(1) else: print('No duplicate links.') From 1866c0d83a1e6fdbaa3a8dd73d9718bb5ef9df0b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 13 Jan 2022 16:45:14 -0300 Subject: [PATCH 074/315] Create basic test to fake_user_agent --- scripts/tests/test_validate_links.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index 73103661..a77950cb 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -3,6 +3,7 @@ import unittest from validate.links import find_links_in_text +from validate.links import fake_user_agent from validate.links import get_host_from_link from validate.links import has_cloudflare_protection @@ -63,6 +64,10 @@ class TestValidateLinks(unittest.TestCase): find_links_in_text(1) find_links_in_text(True) + def test_if_fake_user_agent_has_a_str_as_return(self): + user_agent = fake_user_agent() + self.assertIsInstance(user_agent, str) + def test_get_host_from_link(self): links = [ 'example.com', From 8d590690e83ee71bde898cfb5c936d710523b694 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 13 Jan 2022 17:14:13 -0300 Subject: [PATCH 075/315] Create basic test to check_duplicate_links --- scripts/tests/test_validate_links.py | 34 +++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_links.py b/scripts/tests/test_validate_links.py index a77950cb..64eae888 100644 --- a/scripts/tests/test_validate_links.py +++ b/scripts/tests/test_validate_links.py @@ -3,6 +3,7 @@ import unittest from validate.links import find_links_in_text +from validate.links import check_duplicate_links from validate.links import fake_user_agent from validate.links import get_host_from_link from validate.links import has_cloudflare_protection @@ -18,6 +19,18 @@ class FakeResponse(): class TestValidateLinks(unittest.TestCase): def setUp(self): + self.duplicate_links = [ + 'https://www.example.com', + 'https://www.example.com', + 'https://www.example.com', + 'https://www.anotherexample.com', + ] + self.no_duplicate_links = [ + 'https://www.firstexample.com', + 'https://www.secondexample.com', + 'https://www.anotherexample.com', + ] + self.code_200 = 200 self.code_403 = 403 self.code_503 = 503 @@ -63,7 +76,26 @@ class TestValidateLinks(unittest.TestCase): find_links_in_text() find_links_in_text(1) find_links_in_text(True) - + + def test_if_check_duplicate_links_has_the_correct_return(self): + result_1 = check_duplicate_links(self.duplicate_links) + result_2 = check_duplicate_links(self.no_duplicate_links) + + self.assertIsInstance(result_1, tuple) + self.assertIsInstance(result_2, tuple) + + has_duplicate_links, links = result_1 + no_duplicate_links, no_links = result_2 + + self.assertTrue(has_duplicate_links) + self.assertFalse(no_duplicate_links) + + self.assertIsInstance(links, list) + self.assertIsInstance(no_links, list) + + self.assertEqual(len(links), 2) + self.assertEqual(len(no_links), 0) + def test_if_fake_user_agent_has_a_str_as_return(self): user_agent = fake_user_agent() self.assertIsInstance(user_agent, str) From 8c28be1497a3f64722b7627109b123767afef21f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 13 Jan 2022 17:49:11 -0300 Subject: [PATCH 076/315] Create start_* functions to start checkers --- scripts/validate/links.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index efa918ad..d6d47b00 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -202,14 +202,7 @@ def check_if_list_of_links_are_working(list_of_links: List[str]) -> List[str]: return error_messages -if __name__ == '__main__': - num_args = len(sys.argv) - - if num_args < 2: - print('No .md file passed') - sys.exit(1) - - links = find_links_in_file(sys.argv[1]) +def start_duplicate_links_checker(links: List[str]) -> None: print('Checking for duplicate links...') @@ -217,6 +210,7 @@ if __name__ == '__main__': if has_duplicate_link: print(f'Found duplicate links:') + for duplicate_link in duplicates_links: print(duplicate_link) @@ -224,6 +218,9 @@ if __name__ == '__main__': else: print('No duplicate links.') + +def start_links_working_checker(links: List[str]) -> None: + print(f'Checking if {len(links)} links are working...') errors = check_if_list_of_links_are_working(links) @@ -236,3 +233,23 @@ if __name__ == '__main__': print(error_message) sys.exit(1) + + +def main(filename: str) -> None: + + links = find_links_in_file(filename) + + start_duplicate_links_checker(links) + start_links_working_checker(links) + + +if __name__ == '__main__': + num_args = len(sys.argv) + + if num_args < 2: + print('No .md file passed') + sys.exit(1) + + filename = sys.argv[1] + + main(filename) From a553dd5909199a70ee8b7d41f5136ef56dfabd38 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 15 Jan 2022 17:12:44 -0300 Subject: [PATCH 077/315] Mapped RequestException Exceptions --- scripts/validate/links.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index d6d47b00..5d57416f 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -184,7 +184,7 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: has_error = True error_message = f'ERR:TMR: {error} : {link}' - except Exception as error: + except (Exception, requests.exceptions.RequestException) as error: has_error = True error_message = f'ERR:UKN: {error} : {link}' From ae7ac0058690872469b5c450e811b7303e180f18 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 15 Jan 2022 17:40:32 -0300 Subject: [PATCH 078/315] Mapped network problem (DNS failure, connection refused, etc) --- scripts/validate/links.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 5d57416f..90038684 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -172,14 +172,18 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: has_error = True error_message = f'ERR:CLT: {code} : {link}' - except (TimeoutError, requests.exceptions.ConnectTimeout): - has_error = True - error_message = f'ERR:TMO: {link}' - except requests.exceptions.SSLError as error: has_error = True error_message = f'ERR:SSL: {error} : {link}' + except requests.exceptions.ConnectionError as error: + has_error = True + error_message = f'ERR:CNT: {error} : {link}' + + except (TimeoutError, requests.exceptions.ConnectTimeout): + has_error = True + error_message = f'ERR:TMO: {link}' + except requests.exceptions.TooManyRedirects as error: has_error = True error_message = f'ERR:TMR: {error} : {link}' From f3146c9e246c404395d39e0fad872ded04d8a684 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 15 Jan 2022 19:24:35 -0300 Subject: [PATCH 079/315] Get content from index 0 if Index section does not exist --- scripts/validate/links.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index 90038684..e727f03d 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -29,6 +29,8 @@ def find_links_in_file(filename: str) -> List[str]: with open(filename, mode='r', encoding='utf-8') as file: readme = file.read() index_section = readme.find('## Index') + if index_section == -1: + index_section = 0 content = readme[index_section:] links = find_links_in_text(content) From 1360d618cf6bee302925a95f3e75f54b369456ee Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 15 Jan 2022 19:29:13 -0300 Subject: [PATCH 080/315] Create format.py file --- scripts/validate/format.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 scripts/validate/format.py diff --git a/scripts/validate/format.py b/scripts/validate/format.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/scripts/validate/format.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- From c659e65677c1737c72093d0f7cc9e374ae353293 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 15 Jan 2022 20:35:02 -0300 Subject: [PATCH 081/315] Set constants --- scripts/validate/format.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 40a96afc..b3e06d53 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -1 +1,25 @@ # -*- coding: utf-8 -*- + +import re + + +anchor = '###' +min_entries_per_section = 3 +auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'User-Agent', 'No'] +punctuation = ['.', '?', '!'] +https_keys = ['Yes', 'No'] +cors_keys = ['Yes', 'No', 'Unknown'] + +index_title = 0 +index_desc = 1 +index_auth = 2 +index_https = 3 +index_cors = 4 +index_link = 5 +num_segments = 5 + +errors = [] +title_links = [] +anchor_re = re.compile(anchor + '\s(.+)') +section_title_re = re.compile('\*\s\[(.*)\]') +link_re = re.compile('\[(.+)\]\((http.*)\)') From 2501df6b93171ab28e73ef5e9fc003fc8db0797d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 01:08:49 -0300 Subject: [PATCH 082/315] Create a error message generator --- scripts/validate/format.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index b3e06d53..0cc66fc9 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -23,3 +23,8 @@ title_links = [] anchor_re = re.compile(anchor + '\s(.+)') section_title_re = re.compile('\*\s\[(.*)\]') link_re = re.compile('\[(.+)\]\((http.*)\)') + + +def error_message(line_number: int, message: str) -> str: + line = line_number + 1 + return f'(L{line:03d}) {message}' From 6bfe284191bc08f21358d7f23a0d4e4b34f98df2 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 02:53:25 -0300 Subject: [PATCH 083/315] Get categories content and check alphabetical order --- scripts/validate/format.py | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 0cc66fc9..1f0c96aa 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import re +from typing import List, Tuple, Dict anchor = '###' @@ -24,7 +25,53 @@ anchor_re = re.compile(anchor + '\s(.+)') section_title_re = re.compile('\*\s\[(.*)\]') link_re = re.compile('\[(.+)\]\((http.*)\)') +# Type aliases +APIList = List[str] +Categories = Dict[str, APIList] +CategoriesLineNumber = Dict[str, int] + def error_message(line_number: int, message: str) -> str: line = line_number + 1 return f'(L{line:03d}) {message}' + + +def get_categories_content(contents: List[str]) -> Tuple[Categories, CategoriesLineNumber]: + + categories = {} + category_line_num = {} + + for line_num, line_content in enumerate(contents): + + if line_content.startswith(anchor): + category = line_content.split(anchor)[1].strip() + categories[category] = [] + category_line_num[category] = line_num + continue + + if not line_content.startswith('|') or line_content.startswith('|---'): + continue + + raw_title = [ + raw_content.strip() for raw_content in line_content.split('|')[1:-1] + ][0] + + title_match = link_re.match(raw_title) + if title_match: + title = title_match.group(1).upper() + categories[category].append(title) + + return (categories, category_line_num) + + +def check_alphabetical_order(lines: List[str]) -> None: + + categories, category_line_num = get_categories_content(contents=lines) + + for category, api_list in categories.items(): + if sorted(api_list) != api_list: + message = error_message( + category_line_num[category], + f'{category} category is not alphabetical order' + ) + errors.append(message) From de1b6f59d1b72ac56c32761d5927ccf8cd31b42e Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 19:59:59 -0300 Subject: [PATCH 084/315] Check markdown file format --- scripts/validate/format.py | 164 +++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 1f0c96aa..2a7e7822 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -75,3 +75,167 @@ def check_alphabetical_order(lines: List[str]) -> None: f'{category} category is not alphabetical order' ) errors.append(message) + + +def check_title(line_num: int, raw_title: str) -> List[str]: + + err_msgs = [] + + title_match = link_re.match(raw_title) + + # url should be wrapped in "[TITLE](LINK)" Markdown syntax + if not title_match: + err_msg = error_message(line_num, 'Title syntax should be "[TITLE](LINK)"') + err_msgs.append(err_msg) + else: + # do not allow "... API" in the entry title + title = title_match.group(1) + if title.upper().endswith(' API'): + err_msg = error_message(line_num, 'Title should not end with "... API". Every entry is an API here!') + err_msgs.append(err_msg) + + return err_msgs + + +def check_description(line_num: int, description: str) -> List[str]: + + err_msgs = [] + + first_char = description[0] + if first_char.upper() != first_char: + err_msg = error_message(line_num, 'first character of description is not capitalized') + err_msgs.append(err_msg) + + last_char = description[-1] + if last_char in punctuation: + err_msg = error_message(line_num, f'description should not end with {last_char}') + err_msgs.append(err_msg) + + desc_length = len(description) + if desc_length > 100: + err_msg = error_message(line_num, f'description should not exceed 100 characters (currently {desc_length})') + err_msgs.append(err_msg) + + return err_msgs + + +def check_auth(line_num: int, auth: str) -> List[str]: + + err_msgs = [] + + backtick = '`' + if auth != 'No' and (not auth.startswith(backtick) or not auth.endswith(backtick)): + err_msg = error_message(line_num, 'auth value is not enclosed with `backticks`') + err_msgs.append(err_msg) + + if auth.replace(backtick, '') not in auth_keys: + err_msg = error_message(line_num, f'{auth} is not a valid Auth option') + err_msgs.append(err_msg) + + return err_msgs + + +def check_https(line_num: int, https: str) -> List[str]: + + err_msgs = [] + + if https not in https_keys: + err_msg = error_message(line_num, f'{https} is not a valid HTTPS option') + err_msgs.append(err_msg) + + return err_msgs + + +def check_cors(line_num: int, cors: str) -> List[str]: + + err_msgs = [] + + if cors not in cors_keys: + err_msg = error_message(line_num, f'{cors} is not a valid CORS option') + err_msgs.append(err_msg) + + return err_msgs + + +def check_entry(line_num: int, segments: List[str]) -> List[str]: + + raw_title = segments[index_title] + description = segments[index_desc] + auth = segments[index_auth] + https = segments[index_https] + cors = segments[index_cors] + + title_err_msgs = check_title(line_num, raw_title) + desc_err_msgs = check_description(line_num, description) + auth_err_msgs = check_auth(line_num, auth) + https_err_msgs = check_https(line_num, https) + cors_err_msgs = check_cors(line_num, cors) + + err_msgs = [ + *title_err_msgs, + *desc_err_msgs, + *auth_err_msgs, + *https_err_msgs, + *cors_err_msgs + ] + + return err_msgs + + +def check_file_format(filename: str) -> None: + + with open(filename, mode='r', encoding='utf-8') as file: + lines = list(line.rstrip() for line in file) + + check_alphabetical_order(lines) + + num_in_category = min_entries_per_section + 1 + category = '' + category_line = 0 + + for line_num, line in enumerate(lines): + + section_title_match = section_title_re.match(line) + if section_title_match: + title_links.append(section_title_match.group(1)) + + # check each section for the minimum number of entries + if line.startswith(anchor): + category_match = anchor_re.match(line) + if category_match: + if category_match.group(1) not in title_links: + message = error_message(line_num, f'section header ({category_match.group(1)}) not added as a title link') + errors.append(message) + else: + message = error_message(line_num, 'section header is not formatted correctly') + errors.append(message) + + if num_in_category < min_entries_per_section: + message = error_message(category_line, f'{category} section does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') + errors.append(message) + + category = line.split(' ')[1] + category_line = line_num + num_in_category = 0 + continue + + # skips lines that we do not care about + if not line.startswith('|') or line.startswith('|---'): + continue + + num_in_category += 1 + segments = line.split('|')[1:-1] + if len(segments) < num_segments: + message = error_message(line_num, f'entry does not have all the required sections (have {len(segments)}, need {num_segments})') + errors.append(message) + continue + + for segment in segments: + # every line segment should start and end with exactly 1 space + if len(segment) - len(segment.lstrip()) != 1 or len(segment) - len(segment.rstrip()) != 1: + message = error_message(line_num, 'each segment must start and end with exactly 1 space') + errors.append(message) + + segments = [segment.strip() for segment in segments] + entry_err_msgs = check_entry(line_num, segments) + errors.extend(entry_err_msgs) From a935a05d6a34c810baa54f39a80174965119e105 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 22:41:33 -0300 Subject: [PATCH 085/315] Change section -> category --- scripts/validate/format.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 2a7e7822..b8e5193f 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -22,7 +22,7 @@ num_segments = 5 errors = [] title_links = [] anchor_re = re.compile(anchor + '\s(.+)') -section_title_re = re.compile('\*\s\[(.*)\]') +category_title_in_index_re = re.compile('\*\s\[(.*)\]') link_re = re.compile('\[(.+)\]\((http.*)\)') # Type aliases @@ -195,23 +195,23 @@ def check_file_format(filename: str) -> None: for line_num, line in enumerate(lines): - section_title_match = section_title_re.match(line) - if section_title_match: - title_links.append(section_title_match.group(1)) + category_title_match = category_title_in_index_re.match(line) + if category_title_match: + title_links.append(category_title_match.group(1)) - # check each section for the minimum number of entries + # check each category for the minimum number of entries if line.startswith(anchor): category_match = anchor_re.match(line) if category_match: if category_match.group(1) not in title_links: - message = error_message(line_num, f'section header ({category_match.group(1)}) not added as a title link') + message = error_message(line_num, f'category header ({category_match.group(1)}) not added to Index section') errors.append(message) else: - message = error_message(line_num, 'section header is not formatted correctly') + message = error_message(line_num, 'category header is not formatted correctly') errors.append(message) if num_in_category < min_entries_per_section: - message = error_message(category_line, f'{category} section does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') + message = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') errors.append(message) category = line.split(' ')[1] From d578ba7a3211e3887398a4e7d38c9e9a42471a9c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 22:47:17 -0300 Subject: [PATCH 086/315] Change line -> line_content --- scripts/validate/format.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index b8e5193f..34e08f12 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -193,15 +193,15 @@ def check_file_format(filename: str) -> None: category = '' category_line = 0 - for line_num, line in enumerate(lines): + for line_num, line_content in enumerate(lines): - category_title_match = category_title_in_index_re.match(line) + category_title_match = category_title_in_index_re.match(line_content) if category_title_match: title_links.append(category_title_match.group(1)) # check each category for the minimum number of entries - if line.startswith(anchor): - category_match = anchor_re.match(line) + if line_content.startswith(anchor): + category_match = anchor_re.match(line_content) if category_match: if category_match.group(1) not in title_links: message = error_message(line_num, f'category header ({category_match.group(1)}) not added to Index section') @@ -214,17 +214,17 @@ def check_file_format(filename: str) -> None: message = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') errors.append(message) - category = line.split(' ')[1] + category = line_content.split(' ')[1] category_line = line_num num_in_category = 0 continue # skips lines that we do not care about - if not line.startswith('|') or line.startswith('|---'): + if not line_content.startswith('|') or line_content.startswith('|---'): continue num_in_category += 1 - segments = line.split('|')[1:-1] + segments = line_content.split('|')[1:-1] if len(segments) < num_segments: message = error_message(line_num, f'entry does not have all the required sections (have {len(segments)}, need {num_segments})') errors.append(message) From 57e288b5c96507addb148f898b80d4373083ff1e Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:11:34 -0300 Subject: [PATCH 087/315] Refactor check_alphabetical_order and check_file_format to exist return --- scripts/validate/format.py | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 34e08f12..6bcdd218 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -19,7 +19,6 @@ index_cors = 4 index_link = 5 num_segments = 5 -errors = [] title_links = [] anchor_re = re.compile(anchor + '\s(.+)') category_title_in_index_re = re.compile('\*\s\[(.*)\]') @@ -64,17 +63,21 @@ def get_categories_content(contents: List[str]) -> Tuple[Categories, CategoriesL return (categories, category_line_num) -def check_alphabetical_order(lines: List[str]) -> None: +def check_alphabetical_order(lines: List[str]) -> List[str]: + + err_msgs = [] categories, category_line_num = get_categories_content(contents=lines) for category, api_list in categories.items(): if sorted(api_list) != api_list: - message = error_message( + err_msg = error_message( category_line_num[category], f'{category} category is not alphabetical order' ) - errors.append(message) + err_msgs.append(err_msg) + + return err_msgs def check_title(line_num: int, raw_title: str) -> List[str]: @@ -182,12 +185,15 @@ def check_entry(line_num: int, segments: List[str]) -> List[str]: return err_msgs -def check_file_format(filename: str) -> None: +def check_file_format(filename: str) -> List[str]: + + err_msgs = [] with open(filename, mode='r', encoding='utf-8') as file: lines = list(line.rstrip() for line in file) - check_alphabetical_order(lines) + alphabetical_err_msgs = check_alphabetical_order(lines) + err_msgs.extend(alphabetical_err_msgs) num_in_category = min_entries_per_section + 1 category = '' @@ -204,15 +210,15 @@ def check_file_format(filename: str) -> None: category_match = anchor_re.match(line_content) if category_match: if category_match.group(1) not in title_links: - message = error_message(line_num, f'category header ({category_match.group(1)}) not added to Index section') - errors.append(message) + err_msg = error_message(line_num, f'category header ({category_match.group(1)}) not added to Index section') + err_msgs.append(err_msg) else: - message = error_message(line_num, 'category header is not formatted correctly') - errors.append(message) + err_msg = error_message(line_num, 'category header is not formatted correctly') + err_msgs.append(err_msg) if num_in_category < min_entries_per_section: - message = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') - errors.append(message) + err_msg = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') + err_msgs.append(err_msg) category = line_content.split(' ')[1] category_line = line_num @@ -226,16 +232,18 @@ def check_file_format(filename: str) -> None: num_in_category += 1 segments = line_content.split('|')[1:-1] if len(segments) < num_segments: - message = error_message(line_num, f'entry does not have all the required sections (have {len(segments)}, need {num_segments})') - errors.append(message) + err_msg = error_message(line_num, f'entry does not have all the required sections (have {len(segments)}, need {num_segments})') + err_msgs.append(err_msg) continue for segment in segments: # every line segment should start and end with exactly 1 space if len(segment) - len(segment.lstrip()) != 1 or len(segment) - len(segment.rstrip()) != 1: - message = error_message(line_num, 'each segment must start and end with exactly 1 space') - errors.append(message) + err_msg = error_message(line_num, 'each segment must start and end with exactly 1 space') + err_msgs.append(err_msg) segments = [segment.strip() for segment in segments] entry_err_msgs = check_entry(line_num, segments) - errors.extend(entry_err_msgs) + err_msgs.extend(entry_err_msgs) + + return err_msgs From f1cbf0144a5afff9489bcb23e148dadf9a00e415 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:18:06 -0300 Subject: [PATCH 088/315] Change title_links global to category_title_in_index local --- scripts/validate/format.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 6bcdd218..97a169e1 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -19,7 +19,6 @@ index_cors = 4 index_link = 5 num_segments = 5 -title_links = [] anchor_re = re.compile(anchor + '\s(.+)') category_title_in_index_re = re.compile('\*\s\[(.*)\]') link_re = re.compile('\[(.+)\]\((http.*)\)') @@ -188,6 +187,7 @@ def check_entry(line_num: int, segments: List[str]) -> List[str]: def check_file_format(filename: str) -> List[str]: err_msgs = [] + category_title_in_index = [] with open(filename, mode='r', encoding='utf-8') as file: lines = list(line.rstrip() for line in file) @@ -203,13 +203,13 @@ def check_file_format(filename: str) -> List[str]: category_title_match = category_title_in_index_re.match(line_content) if category_title_match: - title_links.append(category_title_match.group(1)) + category_title_in_index.append(category_title_match.group(1)) # check each category for the minimum number of entries if line_content.startswith(anchor): category_match = anchor_re.match(line_content) if category_match: - if category_match.group(1) not in title_links: + if category_match.group(1) not in category_title_in_index: err_msg = error_message(line_num, f'category header ({category_match.group(1)}) not added to Index section') err_msgs.append(err_msg) else: From bff7f5e0096ee7f665fe41f7439540296a9a77ac Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:20:43 -0300 Subject: [PATCH 089/315] Reorganize constants --- scripts/validate/format.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 97a169e1..89df6bee 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -5,7 +5,6 @@ from typing import List, Tuple, Dict anchor = '###' -min_entries_per_section = 3 auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'User-Agent', 'No'] punctuation = ['.', '?', '!'] https_keys = ['Yes', 'No'] @@ -17,7 +16,9 @@ index_auth = 2 index_https = 3 index_cors = 4 index_link = 5 + num_segments = 5 +min_entries_per_section = 3 anchor_re = re.compile(anchor + '\s(.+)') category_title_in_index_re = re.compile('\*\s\[(.*)\]') From 6bab1616abea2a5508996969120c5cf7fefad948 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:22:23 -0300 Subject: [PATCH 090/315] Remove index_link: unused variable --- scripts/validate/format.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 89df6bee..1a541902 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -15,7 +15,6 @@ index_desc = 1 index_auth = 2 index_https = 3 index_cors = 4 -index_link = 5 num_segments = 5 min_entries_per_section = 3 From d200415479a8888b90e941079d30a42b0b7b599b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:25:09 -0300 Subject: [PATCH 091/315] Change min_entries_per_section -> min_entries_per_category --- scripts/validate/format.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 1a541902..4db980a4 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -17,7 +17,7 @@ index_https = 3 index_cors = 4 num_segments = 5 -min_entries_per_section = 3 +min_entries_per_category = 3 anchor_re = re.compile(anchor + '\s(.+)') category_title_in_index_re = re.compile('\*\s\[(.*)\]') @@ -195,7 +195,7 @@ def check_file_format(filename: str) -> List[str]: alphabetical_err_msgs = check_alphabetical_order(lines) err_msgs.extend(alphabetical_err_msgs) - num_in_category = min_entries_per_section + 1 + num_in_category = min_entries_per_category + 1 category = '' category_line = 0 @@ -216,8 +216,8 @@ def check_file_format(filename: str) -> List[str]: err_msg = error_message(line_num, 'category header is not formatted correctly') err_msgs.append(err_msg) - if num_in_category < min_entries_per_section: - err_msg = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_section} entries (only has {num_in_category})') + if num_in_category < min_entries_per_category: + err_msg = error_message(category_line, f'{category} category does not have the minimum {min_entries_per_category} entries (only has {num_in_category})') err_msgs.append(err_msg) category = line_content.split(' ')[1] From 1d421d8856bcfe7f21ed16623c3e83738c23b59b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:29:55 -0300 Subject: [PATCH 092/315] Add max_description_length constant --- scripts/validate/format.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 4db980a4..6c8681e9 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -18,6 +18,7 @@ index_cors = 4 num_segments = 5 min_entries_per_category = 3 +max_description_length = 100 anchor_re = re.compile(anchor + '\s(.+)') category_title_in_index_re = re.compile('\*\s\[(.*)\]') @@ -114,7 +115,7 @@ def check_description(line_num: int, description: str) -> List[str]: err_msgs.append(err_msg) desc_length = len(description) - if desc_length > 100: + if desc_length > max_description_length: err_msg = error_message(line_num, f'description should not exceed 100 characters (currently {desc_length})') err_msgs.append(err_msg) From f447f7c76e330ce9ea203e93929ecfa8cca75113 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:38:14 -0300 Subject: [PATCH 093/315] Implement main function --- scripts/validate/format.py | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 6c8681e9..8f88a7e4 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import re +import sys from typing import List, Tuple, Dict @@ -185,14 +186,11 @@ def check_entry(line_num: int, segments: List[str]) -> List[str]: return err_msgs -def check_file_format(filename: str) -> List[str]: +def check_file_format(lines: List[str]) -> List[str]: err_msgs = [] category_title_in_index = [] - with open(filename, mode='r', encoding='utf-8') as file: - lines = list(line.rstrip() for line in file) - alphabetical_err_msgs = check_alphabetical_order(lines) err_msgs.extend(alphabetical_err_msgs) @@ -248,3 +246,29 @@ def check_file_format(filename: str) -> List[str]: err_msgs.extend(entry_err_msgs) return err_msgs + + +def main(filename: str) -> None: + + with open(filename, mode='r', encoding='utf-8') as file: + lines = list(line.rstrip() for line in file) + + file_format_err_msgs = check_file_format(lines) + + if file_format_err_msgs: + for err_msg in file_format_err_msgs: + print(err_msg) + sys.exit(1) + + +if __name__ == '__main__': + + num_args = len(sys.argv) + + if num_args < 2: + print('No .md file passed (file should contain Markdown table syntax)') + sys.exit(1) + + filename = sys.argv[1] + + main(filename) From 71167b27168379711ebd77147764f131169c8db7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:41:41 -0300 Subject: [PATCH 094/315] Use punctuation constant built-in --- scripts/validate/format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 8f88a7e4..c70a7756 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -2,12 +2,12 @@ import re import sys +from string import punctuation from typing import List, Tuple, Dict anchor = '###' auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'User-Agent', 'No'] -punctuation = ['.', '?', '!'] https_keys = ['Yes', 'No'] cors_keys = ['Yes', 'No', 'Unknown'] From e2482af4485a2f8f6da15a3cef7574473963ea45 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 16 Jan 2022 23:49:12 -0300 Subject: [PATCH 095/315] Add temporary replacement of punctuation --- scripts/validate/format.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index c70a7756..b22696d8 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -5,6 +5,9 @@ import sys from string import punctuation from typing import List, Tuple, Dict +# Temporary replacement +# The descriptions that contain () at the end must adapt to the new policy later +punctuation = punctuation.replace('()', '') anchor = '###' auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'User-Agent', 'No'] From d831102a5db20f21bec77c9563c37ca0980920f5 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 01:40:49 -0300 Subject: [PATCH 096/315] Create test case to validate format --- scripts/tests/test_validate_format.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 scripts/tests/test_validate_format.py diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py new file mode 100644 index 00000000..a66f703c --- /dev/null +++ b/scripts/tests/test_validate_format.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- + +import unittest + + +class TestValidadeFormat(unittest.TestCase): + ... From 40c5fa7a0c13f894444e846f81e9a846b890c236 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 02:13:34 -0300 Subject: [PATCH 097/315] Test error message return and return type --- scripts/tests/test_validate_format.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index a66f703c..824e426f 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -1,7 +1,32 @@ # -*- coding: utf-8 -*- +from email import message import unittest +from validate.format import error_message + class TestValidadeFormat(unittest.TestCase): - ... + + def test_error_message_return_and_return_type(self): + line_num_unity = 1 + line_num_ten = 10 + line_num_hundred = 100 + line_num_thousand = 1000 + + msg = 'This is a unit test' + + err_msg_unity = error_message(line_num_unity, msg) + err_msg_ten = error_message(line_num_ten, msg) + err_msg_hundred = error_message(line_num_hundred, msg) + err_msg_thousand = error_message(line_num_thousand, msg) + + self.assertIsInstance(err_msg_unity, str) + self.assertIsInstance(err_msg_ten, str) + self.assertIsInstance(err_msg_hundred, str) + self.assertIsInstance(err_msg_thousand, str) + + self.assertEqual(err_msg_unity, '(L002) This is a unit test') + self.assertEqual(err_msg_ten, '(L011) This is a unit test') + self.assertEqual(err_msg_hundred, '(L101) This is a unit test') + self.assertEqual(err_msg_thousand, '(L1001) This is a unit test') From 9d1bd19383ff34525d0e1344adccadb083e57f27 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 02:53:02 -0300 Subject: [PATCH 098/315] Create test to get_categories_content --- scripts/tests/test_validate_format.py | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 824e426f..4d32c80c 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -4,6 +4,7 @@ from email import message import unittest from validate.format import error_message +from validate.format import get_categories_content class TestValidadeFormat(unittest.TestCase): @@ -30,3 +31,32 @@ class TestValidadeFormat(unittest.TestCase): self.assertEqual(err_msg_ten, '(L011) This is a unit test') self.assertEqual(err_msg_hundred, '(L101) This is a unit test') self.assertEqual(err_msg_thousand, '(L1001) This is a unit test') + + def test_if_get_categories_content_return_correct_data_of_categories(self): + fake_contents = [ + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '', + '### B', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [BA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |' + ] + + result = get_categories_content(fake_contents) + self.assertIsInstance(result, tuple) + + categories, category_line_num = result + self.assertIsInstance(categories, dict) + self.assertIsInstance(category_line_num, dict) + + expected_result = ({'A': ['AA', 'AB'], 'B': ['BA', 'BB']}, {'A': 0, 'B': 6}) + + for res, ex_res in zip(result, expected_result): + + with self.subTest(): + self.assertEqual(res, ex_res) From b68d653a108967f350e8a1349d4c7652b88d9899 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 02:53:35 -0300 Subject: [PATCH 099/315] Remove whitespace --- scripts/tests/test_validate_format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 4d32c80c..417b3e5d 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -53,7 +53,7 @@ class TestValidadeFormat(unittest.TestCase): categories, category_line_num = result self.assertIsInstance(categories, dict) self.assertIsInstance(category_line_num, dict) - + expected_result = ({'A': ['AA', 'AB'], 'B': ['BA', 'BB']}, {'A': 0, 'B': 6}) for res, ex_res in zip(result, expected_result): From b42c3054646d44069e9e8c6c0d149f5e07f08611 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 03:19:14 -0300 Subject: [PATCH 100/315] Create tests to check_alphabetical_order --- scripts/tests/test_validate_format.py | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 417b3e5d..47881d42 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -5,6 +5,7 @@ import unittest from validate.format import error_message from validate.format import get_categories_content +from validate.format import check_alphabetical_order class TestValidadeFormat(unittest.TestCase): @@ -60,3 +61,52 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): self.assertEqual(res, ex_res) + + def test_if_check_alphabetical_order_return_correct_msg_error(self): + correct_lines = [ + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '', + '### B', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [BA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |' + ] + + incorrect_lines = [ + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '', + '### B', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [BB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |' + ] + + + err_msgs_1 = check_alphabetical_order(correct_lines) + err_msgs_2 = check_alphabetical_order(incorrect_lines) + + self.assertIsInstance(err_msgs_1, list) + self.assertIsInstance(err_msgs_2, list) + + self.assertEqual(len(err_msgs_1), 0) + self.assertEqual(len(err_msgs_2), 2) + + expected_err_msgs = [ + '(L001) A category is not alphabetical order', + '(L007) B category is not alphabetical order' + ] + + for err_msg, ex_err_msg in zip(err_msgs_2, expected_err_msgs): + + with self.subTest(): + self.assertEqual(err_msg, ex_err_msg) From 22e22b3ce27a15f3121336d79fdb956a6c5bd993 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 03:55:55 -0300 Subject: [PATCH 101/315] Create tests to check_title --- scripts/tests/test_validate_format.py | 54 ++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 47881d42..a4cb1803 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -from email import message import unittest from validate.format import error_message from validate.format import get_categories_content from validate.format import check_alphabetical_order +from validate.format import check_title class TestValidadeFormat(unittest.TestCase): @@ -110,3 +110,55 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): self.assertEqual(err_msg, ex_err_msg) + + def test_check_title_return_type(self): + raw_title_1 = '[A](https://www.ex.com)' + raw_title_2 = '[A(https://www.ex.com)' + raw_title_3 = '[A API](https://www.ex.com)' + + result_1 = check_title(0, raw_title_1) + result_2 = check_title(0, raw_title_2) + result_3 = check_title(0, raw_title_3) + + self.assertIsInstance(result_1, list) + self.assertIsInstance(result_2, list) + self.assertIsInstance(result_3, list) + + err_msg_1 = result_2[0] + err_msg_2 = result_3[0] + + self.assertIsInstance(err_msg_1, str) + self.assertIsInstance(err_msg_2, str) + + def test_check_title_with_correct_title(self): + raw_title = '[A](https://www.ex.com)' + + err_msgs = check_title(0, raw_title) + + self.assertEqual(len(err_msgs), 0) + + self.assertEqual(err_msgs, []) + + def test_check_title_with_markdown_syntax_incorrect(self): + raw_title = '[A(https://www.ex.com)' + + err_msgs = check_title(0, raw_title) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = '(L001) Title syntax should be "[TITLE](LINK)"' + + self.assertEqual(err_msg, expected_err_msg) + + def test_check_title_with_api_at_the_end_of_the_title(self): + raw_title = '[A API](https://www.ex.com)' + + err_msgs = check_title(0, raw_title) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = '(L001) Title should not end with "... API". Every entry is an API here!' + + self.assertEqual(err_msg, expected_err_msg) From 9f0174fd96b5900be3053afc0137fe65dee02cdd Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 04:27:58 -0300 Subject: [PATCH 102/315] Fix error message of max description length --- scripts/validate/format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index b22696d8..2d1f90cb 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -120,7 +120,7 @@ def check_description(line_num: int, description: str) -> List[str]: desc_length = len(description) if desc_length > max_description_length: - err_msg = error_message(line_num, f'description should not exceed 100 characters (currently {desc_length})') + err_msg = error_message(line_num, f'description should not exceed {max_description_length} characters (currently {desc_length})') err_msgs.append(err_msg) return err_msgs From 0843afeda1f78ce86f7fef7fa78e10746df39d44 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 04:35:52 -0300 Subject: [PATCH 103/315] Create tests to check_description --- scripts/tests/test_validate_format.py | 76 +++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index a4cb1803..c69d2bcf 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -6,6 +6,7 @@ from validate.format import error_message from validate.format import get_categories_content from validate.format import check_alphabetical_order from validate.format import check_title +from validate.format import check_description, max_description_length class TestValidadeFormat(unittest.TestCase): @@ -162,3 +163,78 @@ class TestValidadeFormat(unittest.TestCase): expected_err_msg = '(L001) Title should not end with "... API". Every entry is an API here!' self.assertEqual(err_msg, expected_err_msg) + + def test_checK_description_return_type(self): + desc_1 = 'This is a fake description' + desc_2 = 'this is a fake description' + desc_3 = 'This is a fake description!' + desc_4 = 'This is a fake descriptionThis is a fake descriptionThis is a fake descriptionThis is a fake description' + + result_1 = check_title(0, desc_1) + result_2 = check_title(0, desc_2) + result_3 = check_title(0, desc_3) + result_4 = check_title(0, desc_4) + + self.assertIsInstance(result_1, list) + self.assertIsInstance(result_2, list) + self.assertIsInstance(result_3, list) + self.assertIsInstance(result_4, list) + + err_msg_1 = result_2[0] + err_msg_2 = result_3[0] + err_msg_3 = result_4[0] + + self.assertIsInstance(err_msg_1, str) + self.assertIsInstance(err_msg_2, str) + self.assertIsInstance(err_msg_3, str) + + def test_check_description_with_correct_description(self): + desc = 'This is a fake description' + + err_msgs = check_description(0, desc) + + self.assertEqual(len(err_msgs), 0) + + self.assertEqual(err_msgs, []) + + def test_check_description_with_first_char_is_not_capitalized(self): + desc = 'this is a fake description' + + err_msgs = check_description(0, desc) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = '(L001) first character of description is not capitalized' + + self.assertEqual(err_msg, expected_err_msg) + + def test_check_description_with_punctuation_in_the_end(self): + base_desc = 'This is a fake description' + punctuation = r"""!"#$%&'*+,-./:;<=>?@[\]^_`{|}~""" + desc_with_punc = [base_desc + punc for punc in punctuation] + + for desc in desc_with_punc: + + with self.subTest(): + err_msgs = check_description(0, desc) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = f'(L001) description should not end with {desc[-1]}' + + self.assertEqual(err_msg, expected_err_msg) + + def test_check_description_that_exceeds_the_character_limit(self): + long_desc = 'Desc' * max_description_length + long_desc_length = len(long_desc) + + err_msgs = check_description(0, long_desc) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = f'(L001) description should not exceed {max_description_length} characters (currently {long_desc_length})' + + self.assertEqual(err_msg, expected_err_msg) From 6ba6c4d1a6180deea07fde94515acf43de741e2f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 05:39:07 -0300 Subject: [PATCH 104/315] Create tests to check_auth --- scripts/tests/test_validate_format.py | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index c69d2bcf..d076f035 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -7,6 +7,7 @@ from validate.format import get_categories_content from validate.format import check_alphabetical_order from validate.format import check_title from validate.format import check_description, max_description_length +from validate.format import check_auth, auth_keys class TestValidadeFormat(unittest.TestCase): @@ -238,3 +239,75 @@ class TestValidadeFormat(unittest.TestCase): expected_err_msg = f'(L001) description should not exceed {max_description_length} characters (currently {long_desc_length})' self.assertEqual(err_msg, expected_err_msg) + + def test_check_auth_return_type(self): + auth_with_backtick = [f'`{auth}`' for auth in auth_keys if auth != 'No'] + auth_with_backtick.append('No') + auth_without_backtick = [auth for auth in auth_keys if auth != 'No'] + auth_invalid = ['Yes', 'yes', 'no', 'random', 'Unknown'] + + for auth in auth_with_backtick: + with self.subTest(): + result = check_auth(0, auth) + self.assertIsInstance(result, list) + + for auth in auth_without_backtick: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(result, list) + err_msg = err_msgs[0] + self.assertIsInstance(err_msg, str) + + for auth in auth_invalid: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(result, list) + err_msg = err_msgs[0] + self.assertIsInstance(err_msg, str) + + def test_check_auth_with_correct_auth(self): + auth_valid = [f'`{auth}`' for auth in auth_keys if auth != 'No'] + auth_valid.append('No') + + for auth in auth_valid: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 0) + + self.assertEqual(err_msgs, []) + + def test_check_auth_without_backtick(self): + auth_without_backtick = [auth for auth in auth_keys if auth != 'No'] + + for auth in auth_without_backtick: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = '(L001) auth value is not enclosed with `backticks`' + + self.assertEqual(err_msg, expected_err_msg) + + def test_check_auth_with_invalid_auth(self): + auth_invalid = ['Yes', 'yes', 'no', 'random', 'Unknown'] + + for auth in auth_invalid: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 2) + + err_msg_1 = err_msgs[0] + err_msg_2 = err_msgs[1] + + expected_err_msg_1 = f'(L001) auth value is not enclosed with `backticks`' + expected_err_msg_2 = f'(L001) {auth} is not a valid Auth option' + + self.assertEqual(err_msg_1, expected_err_msg_1) + self.assertEqual(err_msg_2, expected_err_msg_2) From 347cd46036a387ece3eeb5ffe63dcf1d3564ab2e Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 05:55:01 -0300 Subject: [PATCH 105/315] Create tests to check_https --- scripts/tests/test_validate_format.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index d076f035..ed4f0d6c 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -8,6 +8,7 @@ from validate.format import check_alphabetical_order from validate.format import check_title from validate.format import check_description, max_description_length from validate.format import check_auth, auth_keys +from validate.format import check_https, https_keys class TestValidadeFormat(unittest.TestCase): @@ -311,3 +312,29 @@ class TestValidadeFormat(unittest.TestCase): self.assertEqual(err_msg_1, expected_err_msg_1) self.assertEqual(err_msg_2, expected_err_msg_2) + + def test_check_https_with_valid_https(self): + for https in https_keys: + with self.subTest(): + err_msgs = check_https(0, https) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 0) + + self.assertEqual(err_msgs, []) + + def test_check_https_with_invalid_https(self): + invalid_https_keys = ['yes', 'no', 'Unknown', 'https', 'http'] + + for https in invalid_https_keys: + with self.subTest(): + err_msgs = check_https(0, https) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = f'(L001) {https} is not a valid HTTPS option' + + self.assertIsInstance(err_msg, str) + self.assertEqual(err_msg, expected_err_msg) From d04c02a7d96f8507b5e1abd7c9e22c8c7714c8cf Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 05:59:17 -0300 Subject: [PATCH 106/315] Create tests to check_cors --- scripts/tests/test_validate_format.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index ed4f0d6c..53bf7868 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -9,6 +9,7 @@ from validate.format import check_title from validate.format import check_description, max_description_length from validate.format import check_auth, auth_keys from validate.format import check_https, https_keys +from validate.format import check_cors, cors_keys class TestValidadeFormat(unittest.TestCase): @@ -338,3 +339,29 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) + + def test_check_cors_with_valid_cors(self): + for cors in cors_keys: + with self.subTest(): + err_msgs = check_cors(0, cors) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 0) + + self.assertEqual(err_msgs, []) + + def test_check_cors_with_invalid_cors(self): + invalid_cors_keys = ['yes', 'no', 'unknown', 'cors'] + + for cors in invalid_cors_keys: + with self.subTest(): + err_msgs = check_cors(0, cors) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = f'(L001) {cors} is not a valid CORS option' + + self.assertIsInstance(err_msg, str) + self.assertEqual(err_msg, expected_err_msg) From 229b77a41301a28398c08f9fa51b172c32a7f360 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 06:05:15 -0300 Subject: [PATCH 107/315] Fix tests of check_title --- scripts/tests/test_validate_format.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 53bf7868..94d5973a 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -114,33 +114,14 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): self.assertEqual(err_msg, ex_err_msg) - - def test_check_title_return_type(self): - raw_title_1 = '[A](https://www.ex.com)' - raw_title_2 = '[A(https://www.ex.com)' - raw_title_3 = '[A API](https://www.ex.com)' - - result_1 = check_title(0, raw_title_1) - result_2 = check_title(0, raw_title_2) - result_3 = check_title(0, raw_title_3) - - self.assertIsInstance(result_1, list) - self.assertIsInstance(result_2, list) - self.assertIsInstance(result_3, list) - - err_msg_1 = result_2[0] - err_msg_2 = result_3[0] - - self.assertIsInstance(err_msg_1, str) - self.assertIsInstance(err_msg_2, str) def test_check_title_with_correct_title(self): raw_title = '[A](https://www.ex.com)' err_msgs = check_title(0, raw_title) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 0) - self.assertEqual(err_msgs, []) def test_check_title_with_markdown_syntax_incorrect(self): @@ -148,6 +129,7 @@ class TestValidadeFormat(unittest.TestCase): err_msgs = check_title(0, raw_title) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] @@ -159,7 +141,8 @@ class TestValidadeFormat(unittest.TestCase): raw_title = '[A API](https://www.ex.com)' err_msgs = check_title(0, raw_title) - + + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] From 720c2fdc8fc129fba205d2a05c4196ddb9368de6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 06:10:16 -0300 Subject: [PATCH 108/315] Fix tests of check_description --- scripts/tests/test_validate_format.py | 31 ++++++--------------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 94d5973a..e5506614 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -150,35 +150,12 @@ class TestValidadeFormat(unittest.TestCase): self.assertEqual(err_msg, expected_err_msg) - def test_checK_description_return_type(self): - desc_1 = 'This is a fake description' - desc_2 = 'this is a fake description' - desc_3 = 'This is a fake description!' - desc_4 = 'This is a fake descriptionThis is a fake descriptionThis is a fake descriptionThis is a fake description' - - result_1 = check_title(0, desc_1) - result_2 = check_title(0, desc_2) - result_3 = check_title(0, desc_3) - result_4 = check_title(0, desc_4) - - self.assertIsInstance(result_1, list) - self.assertIsInstance(result_2, list) - self.assertIsInstance(result_3, list) - self.assertIsInstance(result_4, list) - - err_msg_1 = result_2[0] - err_msg_2 = result_3[0] - err_msg_3 = result_4[0] - - self.assertIsInstance(err_msg_1, str) - self.assertIsInstance(err_msg_2, str) - self.assertIsInstance(err_msg_3, str) - def test_check_description_with_correct_description(self): desc = 'This is a fake description' err_msgs = check_description(0, desc) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 0) self.assertEqual(err_msgs, []) @@ -188,11 +165,13 @@ class TestValidadeFormat(unittest.TestCase): err_msgs = check_description(0, desc) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] expected_err_msg = '(L001) first character of description is not capitalized' + self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) def test_check_description_with_punctuation_in_the_end(self): @@ -205,11 +184,13 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_description(0, desc) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] expected_err_msg = f'(L001) description should not end with {desc[-1]}' + self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) def test_check_description_that_exceeds_the_character_limit(self): @@ -218,11 +199,13 @@ class TestValidadeFormat(unittest.TestCase): err_msgs = check_description(0, long_desc) + self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] expected_err_msg = f'(L001) description should not exceed {max_description_length} characters (currently {long_desc_length})' + self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) def test_check_auth_return_type(self): From e3f51ae6c26a9b2cf88b18e5594eea5a8cec0575 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 06:13:58 -0300 Subject: [PATCH 109/315] Fix tests of check_auth --- scripts/tests/test_validate_format.py | 28 +++------------------------ 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index e5506614..fd634afe 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -208,31 +208,6 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) - def test_check_auth_return_type(self): - auth_with_backtick = [f'`{auth}`' for auth in auth_keys if auth != 'No'] - auth_with_backtick.append('No') - auth_without_backtick = [auth for auth in auth_keys if auth != 'No'] - auth_invalid = ['Yes', 'yes', 'no', 'random', 'Unknown'] - - for auth in auth_with_backtick: - with self.subTest(): - result = check_auth(0, auth) - self.assertIsInstance(result, list) - - for auth in auth_without_backtick: - with self.subTest(): - err_msgs = check_auth(0, auth) - self.assertIsInstance(result, list) - err_msg = err_msgs[0] - self.assertIsInstance(err_msg, str) - - for auth in auth_invalid: - with self.subTest(): - err_msgs = check_auth(0, auth) - self.assertIsInstance(result, list) - err_msg = err_msgs[0] - self.assertIsInstance(err_msg, str) - def test_check_auth_with_correct_auth(self): auth_valid = [f'`{auth}`' for auth in auth_keys if auth != 'No'] auth_valid.append('No') @@ -259,6 +234,7 @@ class TestValidadeFormat(unittest.TestCase): err_msg = err_msgs[0] expected_err_msg = '(L001) auth value is not enclosed with `backticks`' + self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) def test_check_auth_with_invalid_auth(self): @@ -277,6 +253,8 @@ class TestValidadeFormat(unittest.TestCase): expected_err_msg_1 = f'(L001) auth value is not enclosed with `backticks`' expected_err_msg_2 = f'(L001) {auth} is not a valid Auth option' + self.assertIsInstance(err_msg_1, str) + self.assertIsInstance(err_msg_2, str) self.assertEqual(err_msg_1, expected_err_msg_1) self.assertEqual(err_msg_2, expected_err_msg_2) From 89e254c1412bfcf590fc63935c03e1c1d34bfd14 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 06:16:23 -0300 Subject: [PATCH 110/315] Fix test title of check_auth --- scripts/tests/test_validate_format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index fd634afe..81d28b87 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -208,7 +208,7 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) - def test_check_auth_with_correct_auth(self): + def test_check_auth_with_valid_auth(self): auth_valid = [f'`{auth}`' for auth in auth_keys if auth != 'No'] auth_valid.append('No') From ad92d5c400e61195873742b9a2cd9cabc90d5d60 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 06:19:41 -0300 Subject: [PATCH 111/315] Remove whitespaces --- scripts/tests/test_validate_format.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 81d28b87..d3faf423 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -230,7 +230,7 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 1) - + err_msg = err_msgs[0] expected_err_msg = '(L001) auth value is not enclosed with `backticks`' @@ -246,7 +246,7 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 2) - + err_msg_1 = err_msgs[0] err_msg_2 = err_msgs[1] From 54787556381dc79628dc026d2015c26614375806 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 14:57:21 -0300 Subject: [PATCH 112/315] Test to check_auth with invalid auth with and without backtick --- scripts/tests/test_validate_format.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index d3faf423..5821246a 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -238,9 +238,10 @@ class TestValidadeFormat(unittest.TestCase): self.assertEqual(err_msg, expected_err_msg) def test_check_auth_with_invalid_auth(self): - auth_invalid = ['Yes', 'yes', 'no', 'random', 'Unknown'] + auth_invalid_without_backtick = ['Yes', 'yes', 'no', 'random', 'Unknown'] + auth_invalid_with_backtick = ['`Yes`', '`yes`', '`no`', '`random`', '`Unknown`'] - for auth in auth_invalid: + for auth in auth_invalid_without_backtick: with self.subTest(): err_msgs = check_auth(0, auth) self.assertIsInstance(err_msgs, list) @@ -258,6 +259,19 @@ class TestValidadeFormat(unittest.TestCase): self.assertEqual(err_msg_1, expected_err_msg_1) self.assertEqual(err_msg_2, expected_err_msg_2) + for auth in auth_invalid_with_backtick: + with self.subTest(): + err_msgs = check_auth(0, auth) + self.assertIsInstance(err_msgs, list) + + self.assertEqual(len(err_msgs), 1) + + err_msg = err_msgs[0] + expected_err_msg = f'(L001) {auth} is not a valid Auth option' + + self.assertIsInstance(err_msg, str) + self.assertEqual(err_msg, expected_err_msg) + def test_check_https_with_valid_https(self): for https in https_keys: with self.subTest(): From eeaa7c073e6097fed589532563134b72fbca2098 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 15:19:36 -0300 Subject: [PATCH 113/315] Create tests to check_entry --- scripts/tests/test_validate_format.py | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 5821246a..c0ed621b 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -10,6 +10,7 @@ from validate.format import check_description, max_description_length from validate.format import check_auth, auth_keys from validate.format import check_https, https_keys from validate.format import check_cors, cors_keys +from validate.format import check_entry class TestValidadeFormat(unittest.TestCase): @@ -323,3 +324,33 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msg, str) self.assertEqual(err_msg, expected_err_msg) + + def test_check_entry_with_correct_segments(self): + correct_segments = ['[A](https://www.ex.com)', 'Desc', '`apiKey`', 'Yes', 'Yes'] + + err_msgs = check_entry(0, correct_segments) + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 0) + self.assertEqual(err_msgs, []) + + def test_check_entry_with_incorrect_segments(self): + incorrect_segments = ['[A API](https://www.ex.com)', 'desc.', 'yes', 'yes', 'yes'] + + err_msgs = check_entry(0, incorrect_segments) + expected_err_msgs = [ + '(L001) Title should not end with "... API". Every entry is an API here!', + '(L001) first character of description is not capitalized', + '(L001) description should not end with .', + '(L001) auth value is not enclosed with `backticks`', + '(L001) yes is not a valid Auth option', + '(L001) yes is not a valid HTTPS option', + '(L001) yes is not a valid CORS option' + ] + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 7) + for err_msg in err_msgs: + with self.subTest(): + self.assertIsInstance(err_msg, str) + self.assertEqual(err_msgs, expected_err_msgs) From e0468d13cb612dba6573863e36280d9ca827fea0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 15:21:48 -0300 Subject: [PATCH 114/315] Remove unnecessary whitespace --- scripts/tests/test_validate_format.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index c0ed621b..906676b4 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -158,7 +158,6 @@ class TestValidadeFormat(unittest.TestCase): self.assertIsInstance(err_msgs, list) self.assertEqual(len(err_msgs), 0) - self.assertEqual(err_msgs, []) def test_check_description_with_first_char_is_not_capitalized(self): @@ -217,9 +216,7 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_auth(0, auth) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 0) - self.assertEqual(err_msgs, []) def test_check_auth_without_backtick(self): @@ -229,7 +226,6 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_auth(0, auth) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] @@ -246,7 +242,6 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_auth(0, auth) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 2) err_msg_1 = err_msgs[0] @@ -264,7 +259,6 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_auth(0, auth) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] @@ -278,9 +272,7 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_https(0, https) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 0) - self.assertEqual(err_msgs, []) def test_check_https_with_invalid_https(self): @@ -290,7 +282,6 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_https(0, https) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] @@ -304,9 +295,7 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_cors(0, cors) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 0) - self.assertEqual(err_msgs, []) def test_check_cors_with_invalid_cors(self): @@ -316,7 +305,6 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): err_msgs = check_cors(0, cors) self.assertIsInstance(err_msgs, list) - self.assertEqual(len(err_msgs), 1) err_msg = err_msgs[0] From 7d9eac49202db40f11bb7f20f3aafc4b4eec0667 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 16:07:21 -0300 Subject: [PATCH 115/315] Change sections -> columns in error message --- scripts/validate/format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/validate/format.py b/scripts/validate/format.py index 2d1f90cb..092595dc 100644 --- a/scripts/validate/format.py +++ b/scripts/validate/format.py @@ -234,7 +234,7 @@ def check_file_format(lines: List[str]) -> List[str]: num_in_category += 1 segments = line_content.split('|')[1:-1] if len(segments) < num_segments: - err_msg = error_message(line_num, f'entry does not have all the required sections (have {len(segments)}, need {num_segments})') + err_msg = error_message(line_num, f'entry does not have all the required columns (have {len(segments)}, need {num_segments})') err_msgs.append(err_msg) continue From bc02fa517f1f91a7f97bdfde775451b3d7eef840 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 16:19:39 -0300 Subject: [PATCH 116/315] Create tests to check_file_format --- scripts/tests/test_validate_format.py | 122 ++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/scripts/tests/test_validate_format.py b/scripts/tests/test_validate_format.py index 906676b4..7cf55604 100644 --- a/scripts/tests/test_validate_format.py +++ b/scripts/tests/test_validate_format.py @@ -11,6 +11,7 @@ from validate.format import check_auth, auth_keys from validate.format import check_https, https_keys from validate.format import check_cors, cors_keys from validate.format import check_entry +from validate.format import check_file_format, min_entries_per_category, num_segments class TestValidadeFormat(unittest.TestCase): @@ -342,3 +343,124 @@ class TestValidadeFormat(unittest.TestCase): with self.subTest(): self.assertIsInstance(err_msg, str) self.assertEqual(err_msgs, expected_err_msgs) + + def test_check_file_format_with_correct_format(self): + correct_format = [ + '## Index', + '* [A](#a)', + '* [B](#b)', + '', + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '', + '### B', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [BA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |' + ] + + err_msgs = check_file_format(lines=correct_format) + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 0) + self.assertEqual(err_msgs, []) + + def test_check_file_format_with_category_header_not_added_to_index(self): + incorrect_format = [ + '## Index', + '', + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + ] + + err_msgs = check_file_format(lines=incorrect_format) + expected_err_msg = '(L003) category header (A) not added to Index section' + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 1) + err_msg = err_msgs[0] + self.assertEqual(err_msg, expected_err_msg) + + def test_check_file_format_with_category_without_min_entries(self): + incorrect_format = [ + '## Index', + '* [A](#a)', + '* [B](#b)', + '', + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '', + '### B', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [BA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [BC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |' + ] + + category_with_err = 'A' + num_in_category = 1 + + err_msgs = check_file_format(lines=incorrect_format) + expected_err_msg = f'(L005) {category_with_err} category does not have the minimum {min_entries_per_category} entries (only has {num_in_category})' + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 1) + err_msg = err_msgs[0] + self.assertEqual(err_msg, expected_err_msg) + + def test_check_file_format_entry_without_all_necessary_columns(self): + incorrect_format = [ + '## Index', + '* [A](#a)', + '', + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AB](https://www.ex.com) | Desc | `apiKey` |', # missing https and cors + '| [AC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + ] + + current_segments_num = 3 + + err_msgs = check_file_format(lines=incorrect_format) + expected_err_msg = f'(L008) entry does not have all the required columns (have {current_segments_num}, need {num_segments})' + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 1) + err_msg = err_msgs[0] + self.assertEqual(err_msg, expected_err_msg) + + def test_check_file_format_without_1_space_between_the_segments(self): + incorrect_format = [ + '## Index', + '* [A](#a)', + '', + '### A', + 'API | Description | Auth | HTTPS | CORS |', + '|---|---|---|---|---|', + '| [AA](https://www.ex.com) | Desc |`apiKey`| Yes | Yes |', # space between segment of auth column missing + '| [AB](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + '| [AC](https://www.ex.com) | Desc | `apiKey` | Yes | Yes |', + ] + + err_msgs = check_file_format(lines=incorrect_format) + expected_err_msg = f'(L007) each segment must start and end with exactly 1 space' + + self.assertIsInstance(err_msgs, list) + self.assertEqual(len(err_msgs), 1) + err_msg = err_msgs[0] + self.assertEqual(err_msg, expected_err_msg) From 9bb225ef3dba4b6713eeca94574b3b6827b36f01 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 18:18:39 -0300 Subject: [PATCH 117/315] Create new workflow to run test of push and pull --- .github/workflows/test.yml | 29 ----------- .github/workflows/test_of_push_and_pull.yml | 33 ++++++++++++ scripts/github_pull_request.sh | 57 +++++++++++++++++++++ 3 files changed, 90 insertions(+), 29 deletions(-) delete mode 100644 .github/workflows/test.yml create mode 100644 .github/workflows/test_of_push_and_pull.yml create mode 100644 scripts/github_pull_request.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 65e5f699..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: "Run tests" - -on: - schedule: - - cron: '0 0 * * *' - push: - branches: - - master - pull_request: - branches: - - master - -env: - FORMAT_FILE: README.md - -jobs: - test: - name: 'Validate README.md' - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Validate Markdown format - run: build/validate_format.py ${FORMAT_FILE} - - - name: Validate pull request changes - run: build/github-pull.sh ${{ github.repository }} ${{ github.event.pull_request.number }} ${FORMAT_FILE} - if: github.event_name == 'pull_request' diff --git a/.github/workflows/test_of_push_and_pull.yml b/.github/workflows/test_of_push_and_pull.yml new file mode 100644 index 00000000..32bdc912 --- /dev/null +++ b/.github/workflows/test_of_push_and_pull.yml @@ -0,0 +1,33 @@ +name: "Tests of push & pull" + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +env: + FILENAME: README.md + +jobs: + tests: + name: 'Validate README.md' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + + - name: Install dependencies + run: python -m pip install -r scripts/requirements.txt + + - name: Validate Markdown format + run: python scripts/validate/format.py ${FILENAME} + + - name: Validate pull request changes + run: scripts/github_pull_request.sh ${{ github.repository }} ${{ github.event.pull_request.number }} ${FILENAME} + if: github.event_name == 'pull_request' diff --git a/scripts/github_pull_request.sh b/scripts/github_pull_request.sh new file mode 100644 index 00000000..7dd7fa0f --- /dev/null +++ b/scripts/github_pull_request.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -e + +# Argument validation +if [ $# -ne 3 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Assign variables +GITHUB_REPOSITORY="$1" +GITHUB_PULL_REQUEST="$2" +FILENAME="$3" + +# Move to root of project +cd "$GITHUB_WORKSPACE" + +# Determine files +FILENAME="$( realpath "${FILENAME}" )" + +# Skip if build number could not be determined +if [ -z "$GITHUB_REPOSITORY" -o -z "$GITHUB_PULL_REQUEST" ]; then + echo "No pull request and/or repository is provided" + exit 1 +fi + +# Pull changes on PR +echo "running on Pull Request #$GITHUB_PULL_REQUEST" + +# Trick the URL validator python script into not seeing this as a URL +DUMMY_SCHEME="https" +DIFF_URL="$DUMMY_SCHEME://patch-diff.githubusercontent.com/raw/$GITHUB_REPOSITORY/pull/$GITHUB_PULL_REQUEST.diff" +curl -L "$DIFF_URL" -o diff.txt + +# Construct diff +echo "------- BEGIN DIFF -------" +cat diff.txt +echo "-------- END DIFF --------" +cat diff.txt | egrep "\+" > additions.txt + +echo "------ BEGIN ADDITIONS -----" +cat additions.txt +echo "------- END ADDITIONS ------" +LINK_FILE=additions.txt + +# Validate links +echo "Running link validation on additions..." +python scripts/validate/links.py "$LINK_FILE" + +# Vebosity +if [[ $? != 0 ]]; then + echo "link validation failed on additions!" + exit 1 +else + echo "link validation passed on additions!" +fi From 9e790e5b467fa3bc0f661a62d45ce2fcbfedf3a3 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 18:23:39 -0300 Subject: [PATCH 118/315] Remove old scripts --- build/github-pull.sh | 57 ------------- build/requirements.txt | 2 - build/validate_format.py | 168 --------------------------------------- build/validate_links.py | 100 ----------------------- 4 files changed, 327 deletions(-) delete mode 100755 build/github-pull.sh delete mode 100644 build/requirements.txt delete mode 100755 build/validate_format.py delete mode 100755 build/validate_links.py diff --git a/build/github-pull.sh b/build/github-pull.sh deleted file mode 100755 index 4c5c3a4b..00000000 --- a/build/github-pull.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Argument validation -if [ $# -ne 3 ]; then - echo "Usage: $0 " - exit 1 -fi - -# Assign variables -GITHUB_REPOSITORY="$1" -GITHUB_PULL_REQUEST="$2" -FORMAT_FILE="$3" - -# Move to root of project -cd "$GITHUB_WORKSPACE" - -# Determine files -FORMAT_FILE="$( realpath "${FORMAT_FILE}" )" - -# Skip if build number could not be determined -if [ -z "$GITHUB_REPOSITORY" -o -z "$GITHUB_PULL_REQUEST" ]; then - echo "No pull request and/or repository is provided" - exit 1 -fi - -# Pull changes on PR -echo "running on Pull Request #$GITHUB_PULL_REQUEST" - -# Trick the URL validator python script into not seeing this as a URL -DUMMY_SCHEME="https" -DIFF_URL="$DUMMY_SCHEME://patch-diff.githubusercontent.com/raw/$GITHUB_REPOSITORY/pull/$GITHUB_PULL_REQUEST.diff" -curl -L -o diff.txt "$DIFF_URL" - -# Construct diff -echo "------- BEGIN DIFF -------" -cat diff.txt -echo "-------- END DIFF --------" -cat diff.txt | egrep "\+" > additions.txt - -echo "------ BEGIN ADDITIONS -----" -cat additions.txt -echo "------- END ADDITIONS ------" -LINK_FILE=additions.txt - -# Validate links -echo "Running link validation..." -./build/validate_links.py "$LINK_FILE" - -# Vebosity -if [[ $? != 0 ]]; then - echo "link validation failed!" - exit 1 -else - echo "link validation passed!" -fi diff --git a/build/requirements.txt b/build/requirements.txt deleted file mode 100644 index ebed23a8..00000000 --- a/build/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -flake8>=3.5.0 -httplib2==0.19.0 diff --git a/build/validate_format.py b/build/validate_format.py deleted file mode 100755 index 4610f379..00000000 --- a/build/validate_format.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python3 - -import re -import sys - -anchor = '###' -min_entries_per_section = 3 -auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'No', 'User-Agent'] -punctuation = ['.', '?', '!'] -https_keys = ['Yes', 'No'] -cors_keys = ['Yes', 'No', 'Unknown'] - -index_title = 0 -index_desc = 1 -index_auth = 2 -index_https = 3 -index_cors = 4 -index_link = 5 -num_segments = 5 - -errors = [] -title_links = [] -anchor_re = re.compile(anchor + '\s(.+)') -section_title_re = re.compile('\*\s\[(.*)\]') -link_re = re.compile('\[(.+)\]\((http.*)\)') - - -def add_error(line_num, message): - """adds an error to the dynamic error list""" - err = '(L{:03d}) {}'.format(line_num + 1, message) - errors.append(err) - - -def check_alphabetical(lines): - """ - checks if all entries per section are in alphabetical order based in entry title - """ - sections = {} - section_line_num = {} - for line_num, line in enumerate(lines): - if line.startswith(anchor): - category = line.split(anchor)[1].strip() - sections[category] = [] - section_line_num[category] = line_num - continue - if not line.startswith('|') or line.startswith('|---'): - continue - raw_title = [x.strip() for x in line.split('|')[1:-1]][0] - title_re_match = link_re.match(raw_title) - if title_re_match: - sections[category].append(title_re_match.group(1).upper()) - - for category, entries in sections.items(): - if sorted(entries) != entries: - add_error(section_line_num[category], "{} section is not in alphabetical order".format(category)) - - -def check_entry(line_num, segments): - # START Title - raw_title = segments[index_title] - title_re_match = link_re.match(raw_title) - # url should be wrapped in '[TITLE](LINK)' Markdown syntax - if not title_re_match: - add_error(line_num, 'Title syntax should be "[TITLE](LINK)"') - else: - # do not allow "... API" in the entry title - title = title_re_match.group(1) - if title.upper().endswith(' API'): - add_error(line_num, 'Title should not end with "... API". Every entry is an API here!') - # END Title - # START Description - # first character should be capitalized - char = segments[index_desc][0] - if char.upper() != char: - add_error(line_num, "first character of description is not capitalized") - # last character should not punctuation - char = segments[index_desc][-1] - if char in punctuation: - add_error(line_num, "description should not end with {}".format(char)) - desc_length = len(segments[index_desc]) - if desc_length > 100: - add_error(line_num, "description should not exceed 100 characters (currently {})".format(desc_length)) - # END Description - # START Auth - # values should conform to valid options only - auth = segments[index_auth] - if auth != 'No' and (not auth.startswith('`') or not auth.endswith('`')): - add_error(line_num, "auth value is not enclosed with `backticks`") - if auth.replace('`', '') not in auth_keys: - add_error(line_num, "{} is not a valid Auth option".format(auth)) - # END Auth - # START HTTPS - # values should conform to valid options only - https = segments[index_https] - if https not in https_keys: - add_error(line_num, "{} is not a valid HTTPS option".format(https)) - # END HTTPS - # START CORS - # values should conform to valid options only - cors = segments[index_cors] - if cors not in cors_keys: - add_error(line_num, "{} is not a valid CORS option".format(cors)) - # END CORS - - -def check_format(filename): - """ - validates that each line is formatted correctly, - appending to error list as needed - """ - with open(filename) as fp: - lines = list(line.rstrip() for line in fp) - check_alphabetical(lines) - # START Check Entries - num_in_category = min_entries_per_section + 1 - category = "" - category_line = 0 - for line_num, line in enumerate(lines): - if section_title_re.match(line): - title_links.append(section_title_re.match(line).group(1)) - # check each section for the minimum number of entries - if line.startswith(anchor): - match = anchor_re.match(line) - if match: - if match.group(1) not in title_links: - add_error(line_num, "section header ({}) not added as a title link".format(match.group(1))) - else: - add_error(line_num, "section header is not formatted correctly") - if num_in_category < min_entries_per_section: - add_error(category_line, "{} section does not have the minimum {} entries (only has {})".format( - category, min_entries_per_section, num_in_category)) - category = line.split(' ')[1] - category_line = line_num - num_in_category = 0 - continue - # skips lines that we do not care about - if not line.startswith('|') or line.startswith('|---'): - continue - num_in_category += 1 - segments = line.split('|')[1:-1] - if len(segments) < num_segments: - add_error(line_num, "entry does not have all the required sections (have {}, need {})".format( - len(segments), num_segments)) - continue - # START Global - for segment in segments: - # every line segment should start and end with exactly 1 space - if len(segment) - len(segment.lstrip()) != 1 or len(segment) - len(segment.rstrip()) != 1: - add_error(line_num, "each segment must start and end with exactly 1 space") - # END Global - segments = [seg.strip() for seg in segments] - check_entry(line_num, segments) - # END Check Entries - - -def main(): - if len(sys.argv) < 2: - print("No file passed (file should contain Markdown table syntax)") - sys.exit(1) - check_format(sys.argv[1]) - if len(errors) > 0: - for err in errors: - print(err) - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/build/validate_links.py b/build/validate_links.py deleted file mode 100755 index c0331d4d..00000000 --- a/build/validate_links.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python3 - -import httplib2 -import re -import socket -import sys - - -def parse_links(filename): - """Returns a list of URLs from text file""" - with open(filename, mode='r', encoding='utf-8') as fp: - readme = fp.read() - index_section = readme.find('## Index') - content = readme[index_section:] - - raw_links = re.findall( - '((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'\".,<>?«»“”‘’]))', - content) - - links = [ - str(raw_link[0]).rstrip('/') for raw_link in raw_links - ] - - return links - -def dup_links(links): - """Check for duplicated links""" - print(f'Checking for duplicated links...') - hasError = False - seen = {} - dupes = [] - - for link in links: - if link not in seen: - seen[link] = 1 - else: - if seen[link] == 1: - dupes.append(link) - - if not dupes: - print(f"No duplicate links") - else: - print(f"Found duplicate links: {dupes}") - hasError = True - return hasError - -def validate_links(links): - """Checks each entry in JSON file for live link""" - print(f'Validating {len(links)} links...') - hasError = False - for link in links: - h = httplib2.Http(disable_ssl_certificate_validation=True, timeout=25) - try: - # fetching host name, removing leading www - host = link.split('//', 1)[1].split('/', 1)[0] - if host[:3] == 'www': - host = host[4:] - - resp = h.request(link + "/", headers={ - # Faking user agent as some hosting services block not-whitelisted UA - 'User-Agent': 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36', - # setting host because Cloudflare returns 403 asking for captcha if host is missing - 'host': host - }) - code = int(resp[0]['status']) - # Checking status code errors - if (code >= 400): - hasError = True - print(f"ERR:CLT:{code} : {link}") - except TimeoutError: - hasError = True - print(f"ERR:TMO: {link}") - except socket.error as socketerror: - hasError = True - print(f"ERR:SOC: {socketerror} : {link}") - except Exception as e: - hasError = True - # Ignore some exceptions which are not actually errors. - # The list below should be extended with other exceptions in the future if needed - if (-1 != str(e).find("[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)")): - print(f"ERR:SSL: {e} : {link}") - elif (-1 != str(e).find("Content purported to be compressed with gzip but failed to decompress.")): - print(f"ERR:GZP: {e} : {link}") - elif (-1 != str(e).find("Unable to find the server at")): - print(f"ERR:SRV: {e} : {link}") - else: - print(f"ERR:UKN: {e} : {link}") - return hasError - -if __name__ == "__main__": - num_args = len(sys.argv) - if num_args < 2: - print("No .md file passed") - sys.exit(1) - links = parse_links(sys.argv[1]) - hasError = dup_links(links) - if not hasError: - hasError = validate_links(links) - if hasError: - sys.exit(1) From 75e1d2e44f25282149603efce84132e65ce89ab0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 18:51:08 -0300 Subject: [PATCH 119/315] Update validate_links action --- .github/workflows/validate_links.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/validate_links.yml b/.github/workflows/validate_links.yml index 92afb843..229a60b0 100644 --- a/.github/workflows/validate_links.yml +++ b/.github/workflows/validate_links.yml @@ -3,20 +3,25 @@ name: "Validate links" on: schedule: - cron: '0 0 * * *' - push: - branches: - - master env: FORMAT_FILE: README.md jobs: - test: - name: 'Validate links' + validate_links: + name: 'Check all links are working' runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + + - name: Install dependencies + run: python -m pip install -r scripts/requirements.txt + - name: Validate all links from README.md - run: build/validate_links.py ${FORMAT_FILE} + run: python scripts/validate/links.py ${FORMAT_FILE} From be086f293fa3af3b57b74bdfbf93e1799a342693 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 18:55:21 -0300 Subject: [PATCH 120/315] Update name section in workflow --- .github/workflows/test_of_push_and_pull.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_of_push_and_pull.yml b/.github/workflows/test_of_push_and_pull.yml index 32bdc912..29798b9c 100644 --- a/.github/workflows/test_of_push_and_pull.yml +++ b/.github/workflows/test_of_push_and_pull.yml @@ -11,7 +11,7 @@ env: jobs: tests: - name: 'Validate README.md' + name: 'Validate README.md changes' runs-on: ubuntu-latest steps: - name: Checkout repository From 46279792f282abfd39d4fac07e1fc43a27240eb4 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 19:14:39 -0300 Subject: [PATCH 121/315] Create test_of_validate_package action --- .../workflows/test_of_validate_package.yml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/test_of_validate_package.yml diff --git a/.github/workflows/test_of_validate_package.yml b/.github/workflows/test_of_validate_package.yml new file mode 100644 index 00000000..700a3035 --- /dev/null +++ b/.github/workflows/test_of_validate_package.yml @@ -0,0 +1,26 @@ +name: "Tests of validate package" + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + unittest: + name: 'Run tests of validate package' + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + + - name: Run Unittest + run: | + cd scripts + python -m unittest discover tests/ --verbose From ff31b266ab67b6f16826abf8ea7d9a9aec164bbb Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 19:24:45 -0300 Subject: [PATCH 122/315] Add format and links in validate scope --- scripts/validate/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/validate/__init__.py b/scripts/validate/__init__.py index 40a96afc..4287dcc8 100644 --- a/scripts/validate/__init__.py +++ b/scripts/validate/__init__.py @@ -1 +1,4 @@ # -*- coding: utf-8 -*- + +from validate import format +from validate import links From 3a08c1518f9ec510bdc5ce7428bf3fc8f81049ed Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 19:27:14 -0300 Subject: [PATCH 123/315] Change FORMAT_FILE -> FILENAME in validate_links action --- .github/workflows/validate_links.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_links.yml b/.github/workflows/validate_links.yml index 229a60b0..4f14df1c 100644 --- a/.github/workflows/validate_links.yml +++ b/.github/workflows/validate_links.yml @@ -5,7 +5,7 @@ on: - cron: '0 0 * * *' env: - FORMAT_FILE: README.md + FILENAME: README.md jobs: validate_links: @@ -24,4 +24,4 @@ jobs: run: python -m pip install -r scripts/requirements.txt - name: Validate all links from README.md - run: python scripts/validate/links.py ${FORMAT_FILE} + run: python scripts/validate/links.py ${FILENAME} From 08ba4e64582a77a267c6aa30826ae6a2ba90b47c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 20:04:31 -0300 Subject: [PATCH 124/315] Create README.md to scripts directory --- scripts/README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 scripts/README.md diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000..951c91d2 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,45 @@ +# Public APIs Scripts + +This directory contains all validation and testing scripts used by Public APIs. + +```bash +scripts +│ github_pull_request.sh # used to validate changes of a pull request +│ requirements.txt # contains dependencies of validate package +│ +├───tests # contains all unit tests from the validate package +│ test_validate_format.py +│ test_validate_links.py +│ +└───validate # validate package + format.py + links.py +``` + +## Running Tests + +To run all tests it is necessary to change to the scripts directory: + +```bash +$ cd scripts +``` + +then run: + +```bash +$ python -m unittest discover tests/ --verbose +``` + +To run only the format tests, run: + +```bash +$ python -m unittest discover tests/ --verbose --pattern "test_validate_format.py" +``` + +To run only the links tests, run: + +```bash +$ python -m unittest discover tests/ --verbose --pattern "test_validate_links.py" +``` + +*Note that it is necessary to have [python](https://www.python.org/) installed.* From 1c3e4eba3784a28a74de185d5af2b7072e2f18b3 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 20:18:54 -0300 Subject: [PATCH 125/315] Create run validations section --- scripts/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/README.md b/scripts/README.md index 951c91d2..3bcacdc8 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -16,6 +16,20 @@ scripts links.py ``` +## Run validations + +To run format validation on the `README.md` file, being in the root directory of public-apis, run: + +```bash +$ python scripts/validate/format.py README.md +``` + +To run link validation on the `README.md` file, being in the root directory of public-apis, run: + +```bash +$ python scripts/validate/links.py README.md +``` + ## Running Tests To run all tests it is necessary to change to the scripts directory: From fb70084377dc05dc54532ea6a7f3835573d4d15f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 17 Jan 2022 20:25:30 -0300 Subject: [PATCH 126/315] Create install dependencies section --- scripts/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/README.md b/scripts/README.md index 3bcacdc8..eae70ff9 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -16,6 +16,16 @@ scripts links.py ``` +## Install dependencies + +You must have [python](https://www.python.org/) installed to use these scripts. + +it is also necessary to install the validation package dependencies, use [pip package manager](https://pypi.org/project/pip/) for this: + +```bash +$ python -m pip install -r scripts/requirements.txt +``` + ## Run validations To run format validation on the `README.md` file, being in the root directory of public-apis, run: @@ -55,5 +65,3 @@ To run only the links tests, run: ```bash $ python -m unittest discover tests/ --verbose --pattern "test_validate_links.py" ``` - -*Note that it is necessary to have [python](https://www.python.org/) installed.* From 4bc90a81ccf327f94b2ef813d572a7778b628bdc Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 18 Jan 2022 02:06:21 -0300 Subject: [PATCH 127/315] Add possibility to run duplicate link check only Changes: - It is now possible to only check for duplicate links (without checking if the links are working) - Check for duplicate links when a push occurs - Update the scripts documentation accordingly --- .github/workflows/test_of_push_and_pull.yml | 4 ++++ scripts/README.md | 8 ++++++++ scripts/validate/links.py | 17 ++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_of_push_and_pull.yml b/.github/workflows/test_of_push_and_pull.yml index 29798b9c..4ee1316f 100644 --- a/.github/workflows/test_of_push_and_pull.yml +++ b/.github/workflows/test_of_push_and_pull.yml @@ -31,3 +31,7 @@ jobs: - name: Validate pull request changes run: scripts/github_pull_request.sh ${{ github.repository }} ${{ github.event.pull_request.number }} ${FILENAME} if: github.event_name == 'pull_request' + + - name: Checking if push changes are duplicated + run: python scripts/validate/links.py ${FILENAME} --only_duplicate_links_checker + if: github.event_name == 'push' diff --git a/scripts/README.md b/scripts/README.md index eae70ff9..2e926a37 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -40,6 +40,14 @@ To run link validation on the `README.md` file, being in the root directory of p $ python scripts/validate/links.py README.md ``` +As there are many links to check, this process can take some time. If your goal is not to check if the links are working, you can only check for duplicate links. Run: + +```bash +$ python scripts/validate/links.py README.md -odlc +``` + +*`-odlc` is an abbreviation of `--only_duplicate_links_checker`* + ## Running Tests To run all tests it is necessary to change to the scripts directory: diff --git a/scripts/validate/links.py b/scripts/validate/links.py index e727f03d..a5172b8b 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -241,21 +241,32 @@ def start_links_working_checker(links: List[str]) -> None: sys.exit(1) -def main(filename: str) -> None: +def main(filename: str, only_duplicate_links_checker: bool) -> None: links = find_links_in_file(filename) start_duplicate_links_checker(links) - start_links_working_checker(links) + + if not only_duplicate_links_checker: + start_links_working_checker(links) if __name__ == '__main__': num_args = len(sys.argv) + only_duplicate_links_checker = False if num_args < 2: print('No .md file passed') sys.exit(1) + elif num_args == 3: + third_arg = sys.argv[2].lower() + + if third_arg == '-odlc' or third_arg == '--only_duplicate_links_checker': + only_duplicate_links_checker = True + else: + print(f'Third invalid argument. Usage: python {__file__} [-odlc | --only_duplicate_links_checker]') + sys.exit(1) filename = sys.argv[1] - main(filename) + main(filename, only_duplicate_links_checker) From 434c9fc292abf74b8aeca5c85200b3f77f38a20e Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 18 Jan 2022 03:10:27 -0300 Subject: [PATCH 128/315] Install dependencies in action --- .github/workflows/test_of_validate_package.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test_of_validate_package.yml b/.github/workflows/test_of_validate_package.yml index 700a3035..c41c886c 100644 --- a/.github/workflows/test_of_validate_package.yml +++ b/.github/workflows/test_of_validate_package.yml @@ -19,6 +19,9 @@ jobs: uses: actions/setup-python@v2 with: python-version: '3.8' + + - name: Install dependencies + run: python -m pip install -r scripts/requirements.txt - name: Run Unittest run: | From 183a8ece0631c3193b628a67fef890aa4587d256 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 18 Jan 2022 03:16:11 -0300 Subject: [PATCH 129/315] Fix yaml syntax --- .github/workflows/test_of_validate_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_of_validate_package.yml b/.github/workflows/test_of_validate_package.yml index c41c886c..f739df81 100644 --- a/.github/workflows/test_of_validate_package.yml +++ b/.github/workflows/test_of_validate_package.yml @@ -21,7 +21,7 @@ jobs: python-version: '3.8' - name: Install dependencies - run: python -m pip install -r scripts/requirements.txt + run: python -m pip install -r scripts/requirements.txt - name: Run Unittest run: | From 6d4e269f126567e466b0ad9f7395448742aaf313 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 18 Jan 2022 03:30:13 -0300 Subject: [PATCH 130/315] Modify execute permission --- scripts/github_pull_request.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/github_pull_request.sh diff --git a/scripts/github_pull_request.sh b/scripts/github_pull_request.sh old mode 100644 new mode 100755 From 6a2bd223aff50b1c12e9c33da56f468517984305 Mon Sep 17 00:00:00 2001 From: lewis1994lp <42843221+lewis1994lp@users.noreply.github.com> Date: Tue, 18 Jan 2022 23:09:35 +0000 Subject: [PATCH 131/315] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cca65987..2a77498c 100644 --- a/README.md +++ b/README.md @@ -1683,6 +1683,7 @@ API | Description | Auth | HTTPS | CORS | | [Shrtcode](https://shrtco.de/docs) | URl Shortener with multiple Domains | No | Yes | Yes | | [Shrtlnk](https://shrtlnk.dev/developer) | Simple and efficient short link creation | `apiKey` | Yes | Yes | | [TinyURL](https://tinyurl.com/app/dev) | Shorten long URLs | `apiKey` | Yes | No | +| [UrlBae](https://urlbae.com/developers) | Simple and efficient short link creation | `apiKey` | Yes | Yes | | [Zero Width Shortener](https://docs.zws.im) | Shortens URLs using spaces that have zero width, making them invisible to humans | No | Yes | Unknown | **[⬆ Back to Index](#index)** From af5ac7bc83895e285c6c515b1344a4b3ea77abea Mon Sep 17 00:00:00 2001 From: array-in-a-matrix Date: Wed, 19 Jan 2022 18:04:30 -0500 Subject: [PATCH 132/315] Add Imgbb API to Cloud Storage & File Sharing --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cca65987..fb581113 100644 --- a/README.md +++ b/README.md @@ -323,6 +323,7 @@ API | Description | Auth | HTTPS | CORS | | [File.io](https://www.file.io) | Super simple file sharing, convenient, anonymous and secure | No | Yes | Unknown | | [GoFile](https://gofile.io/api) | Unlimited size file uploads for free | `apiKey` | Yes | Unknown | | [Google Drive](https://developers.google.com/drive/) | File Sharing and Storage | `OAuth` | Yes | Unknown | +| [Imgbb](https://api.imgbb.com/) | Simple and quick private image sharing | `apiKey` | Yes | Unknown | | [OneDrive](https://dev.onedrive.com/) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [Pantry](https://getpantry.cloud/) | Free JSON storage for small projects | No | Yes | Yes | | [Pastebin](https://pastebin.com/doc_api) | Plain Text Storage | `apiKey` | Yes | Unknown | From 4466d95df649d332d8c55f232b9dffc60f3f0a74 Mon Sep 17 00:00:00 2001 From: Francisco Pessano <76450203+FranP-code@users.noreply.github.com> Date: Wed, 19 Jan 2022 22:56:39 -0300 Subject: [PATCH 133/315] Add Times Adder to Science & Math (#3009) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cca65987..e6dcc22a 100644 --- a/README.md +++ b/README.md @@ -1374,6 +1374,7 @@ API | Description | Auth | HTTPS | CORS | | [SpaceX](https://github.com/r-spacex/SpaceX-API) | Company, vehicle, launchpad and launch data | No | Yes | No | | [SpaceX](https://api.spacex.land/graphql/) | GraphQL, Company, Ships, launchpad and launch data | No | Yes | Unknown | | [Sunrise and Sunset](https://sunrise-sunset.org/api) | Sunset and sunrise times for a given latitude and longitude | No | Yes | No | +| [Times Adder](https://github.com/FranP-code/API-Times-Adder) | With this API you can add each of the times introduced in the array sended | No | Yes | No | | [TLE](https://tle.ivanstanojevic.me/#/docs) | Satellite information | No | Yes | No | | [USGS Earthquake Hazards Program](https://earthquake.usgs.gov/fdsnws/event/1/) | Earthquakes data real-time | No | Yes | No | | [USGS Water Services](https://waterservices.usgs.gov/) | Water quality and level info for rivers and lakes | No | Yes | No | From 2267ce7a831bf41ac6c8754cb95a7dc68b0b57db Mon Sep 17 00:00:00 2001 From: Akhil V <65052071+aakhilv@users.noreply.github.com> Date: Wed, 19 Jan 2022 20:05:06 -0600 Subject: [PATCH 134/315] Add Fun Fact to Entertainment (#3010) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e6dcc22a..3c7f487d 100644 --- a/README.md +++ b/README.md @@ -653,6 +653,7 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [chucknorris.io](https://api.chucknorris.io) | JSON API for hand curated Chuck Norris jokes | No | Yes | Unknown | | [Excuser](https://excuser.herokuapp.com/) | Get random excuses for various situations | No | Yes | Unknown | +| [Fun Fact](https://ffa.aakhilv.me) | A simple HTTPS api that can randomly select and return a fact from the FFA database | No | Yes | Yes | | [Imgflip](https://imgflip.com/api) | Gets an array of popular memes | No | Yes | Unknown | | [Meme Maker](https://mememaker.github.io/API/) | REST API for create your own meme | No | Yes | Unknown | | [NaMoMemes](https://github.com/theIYD/NaMoMemes) | Memes on Narendra Modi | No | Yes | Unknown | From e11b6c769131d87ebac041351f2b75280021e3a5 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Thu, 20 Jan 2022 04:26:26 -0300 Subject: [PATCH 135/315] Remove Apple Music (#3016) resolve #3016 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 928b5ec6..717c0ff5 100644 --- a/README.md +++ b/README.md @@ -1145,7 +1145,6 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [7digital](https://docs.7digital.com/reference) | Api of Music store 7digital | `OAuth` | Yes | Unknown | | [AI Mastering](https://aimastering.com/api_docs/) | Automated Music Mastering | `apiKey` | Yes | Yes | -| [Apple Music](https://developer.apple.com/documentation/applemusicapi/) | Official API of the music streaming site Apple Music | `apiKey` | Yes | Unknown | | [Audiomack](https://www.audiomack.com/data-api/docs) | Api of the streaming music hub Audiomack | `OAuth` | Yes | Unknown | | [Bandcamp](https://bandcamp.com/developer) | API of Music store Bandcamp | `OAuth` | Yes | Unknown | | [Bandsintown](https://app.swaggerhub.com/apis/Bandsintown/PublicAPI/3.0.0) | Music Events | No | Yes | Unknown | From 4e1aae2a7d4188d3c29df0f620508da7edc905c0 Mon Sep 17 00:00:00 2001 From: YOGESHWARAN R Date: Thu, 20 Jan 2022 20:45:19 +0530 Subject: [PATCH 136/315] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 717c0ff5..d6ceb207 100644 --- a/README.md +++ b/README.md @@ -1744,6 +1744,7 @@ API | Description | Auth | HTTPS | CORS | | [Utelly](https://rapidapi.com/utelly/api/utelly) | Movies, Series and TV shows Recommendations | `apiKey` | Yes | Unknown | | [Vimeo](https://developer.vimeo.com/) | Vimeo Developer API | `OAuth` | Yes | Unknown | | [Watchmode](https://api.watchmode.com/) | API for finding out the streaming availability of movies & shows | `apiKey` | Yes | Unknown | +| [Web Series Quotes Generator](https://github.com/yogeshwaran01/web-series-quotes) | API generates various Web Series Quote Images | No | Yes | Yes | | [YouTube](https://developers.google.com/youtube/) | Add YouTube functionality to your sites and apps | `OAuth` | Yes | Unknown | **[⬆ Back to Index](#index)** From a7c675d6d74f2915b2fe03d93799f1c58d046af3 Mon Sep 17 00:00:00 2001 From: Elizabeth Adeotun Adegbaju Date: Thu, 20 Jan 2022 23:00:05 +0100 Subject: [PATCH 137/315] Add RemoteCalc to Science & Math (#3012) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d6ceb207..0ca36a22 100644 --- a/README.md +++ b/README.md @@ -1370,6 +1370,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Science Framework](https://developer.osf.io) | Repository and archive for study designs, research materials, data, manuscripts, etc | No | Yes | Unknown | | [Purple Air](https://www2.purpleair.com/) | Real Time Air Quality Monitoring | No | Yes | Unknown | | [Quadratic Solver](https://quadratic-solver-api.herokuapp.com/) | A Quadratic Solver | No | Yes | Yes | +| [Remote Calc](https://www.github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | | [Satellite Passes](https://satellites.fly.dev) | Query next satellite passes above you | No | Yes | No | | [SHARE](https://share.osf.io/api/v2/) | A free, open, dataset about research and scholarly activities | No | Yes | No | | [SpaceX](https://github.com/r-spacex/SpaceX-API) | Company, vehicle, launchpad and launch data | No | Yes | No | From f6cf504e0d85ca9732b7bb353fb35d4e7b24d37a Mon Sep 17 00:00:00 2001 From: Alex Zender <1499446+alexzender@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:51:43 +0100 Subject: [PATCH 138/315] Add DynaPictures API to Development --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0ca36a22..8865fedf 100644 --- a/README.md +++ b/README.md @@ -483,6 +483,7 @@ API | Description | Auth | HTTPS | CORS | | [Docker Hub](https://docs.docker.com/docker-hub/api/latest/) | Interact with Docker Hub | `apiKey` | Yes | Yes | | [DomainDb Info](https://api.domainsdb.info/) | Domain name search to find all domains containing particular words/phrases/etc | No | Yes | Unknown | | [Duply](https://duply.co/docs#getting-started-api) | Dynamic Image creation API | `apiKey` | Yes | Yes | +| [DynaPictures](https://dynapictures.com/docs/) | Image Generation API | `apiKey` | Yes | Yes | | [ExtendsClass JSON Storage](https://extendsclass.com/json-storage.html) | A simple JSON store API | No | Yes | Yes | | [Form2Channel](https://form2channel.com/) | Send static html form submissions to Google Sheets, Email, Slack or Telegram | No | Yes | Yes | | [GeekFlare](https://apidocs.geekflare.com/docs/geekflare-api) | Provide numerous capabilities for important testing and monitoring methods for websites | `apiKey` | Yes | Unknown | From a39b4e26805e18b14a8834eba0ecc4f367b35ca3 Mon Sep 17 00:00:00 2001 From: Nithin Gonthina <53264083+nithinhacks@users.noreply.github.com> Date: Sat, 22 Jan 2022 21:26:59 +0530 Subject: [PATCH 139/315] Add KONTESTS API to Programming --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0ca36a22..d3b0f0f0 100644 --- a/README.md +++ b/README.md @@ -1342,6 +1342,7 @@ API | Description | Auth | HTTPS | CORS | | [Codeforces](https://codeforces.com/apiHelp) | Get access to Codeforces data | `apiKey` | Yes | Unknown | | [Hackerearth](https://www.hackerearth.com/docs/wiki/developers/v4/) | For compiling and running code in several languages | `apiKey` | Yes | Unknown | | [Judge0 CE](https://ce.judge0.com/) | Online code execution system | `apiKey` | Yes | Unknown | +| [KONTESTS](https://kontests.net/api) | For upcoming and ongoing competitive coding contests | No | Yes | Unknown | **[⬆ Back to Index](#index)** ### Science & Math From 7a3ed5d234ae2141abe16a7fa2bed5f90188fd36 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:07:08 -0300 Subject: [PATCH 140/315] Move Gyazo to Cloud Storage & File Sharing Move Gyazo from Photography to Cloud Storage & File Sharing and improve description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 278663da..ca23b575 100644 --- a/README.md +++ b/README.md @@ -323,6 +323,7 @@ API | Description | Auth | HTTPS | CORS | | [File.io](https://www.file.io) | Super simple file sharing, convenient, anonymous and secure | No | Yes | Unknown | | [GoFile](https://gofile.io/api) | Unlimited size file uploads for free | `apiKey` | Yes | Unknown | | [Google Drive](https://developers.google.com/drive/) | File Sharing and Storage | `OAuth` | Yes | Unknown | +| [Gyazo](https://gyazo.com/api/docs) | Save & Share screen captures instantly | `apiKey` | Yes | Unknown | | [Imgbb](https://api.imgbb.com/) | Simple and quick private image sharing | `apiKey` | Yes | Unknown | | [OneDrive](https://dev.onedrive.com/) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [Pantry](https://getpantry.cloud/) | Free JSON storage for small projects | No | Yes | Yes | @@ -1318,7 +1319,6 @@ API | Description | Auth | HTTPS | CORS | | [Gfycat](https://developers.gfycat.com/api/) | Jiffier GIFs | `OAuth` | Yes | Unknown | | [Giphy](https://developers.giphy.com/docs/) | Get all your gifs | `apiKey` | Yes | Unknown | | [Google Photos](https://developers.google.com/photos) | Integrate Google Photos with your apps or devices | `OAuth` | Yes | Unknown | -| [Gyazo](https://gyazo.com/api/docs) | Upload images | `apiKey` | Yes | Unknown | | [Imgur](https://apidocs.imgur.com/) | Images | `OAuth` | Yes | Unknown | | [Imsea](https://imsea.herokuapp.com/) | Free image search | No | Yes | Unknown | | [Lorem Picsum](https://picsum.photos/) | Images from Unsplash | No | Yes | Unknown | From 66d1558bf731bdfe54b10938caedb5ce27a6d8fc Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:20:26 -0300 Subject: [PATCH 141/315] Move Duply and DynaPictures to Photography Move Duply and DynaPictures from development to Photography and improve description --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ca23b575..5021fcf5 100644 --- a/README.md +++ b/README.md @@ -483,8 +483,6 @@ API | Description | Auth | HTTPS | CORS | | [DigitalOcean Status](https://status.digitalocean.com/api) | Status of all DigitalOcean services | No | Yes | Unknown | | [Docker Hub](https://docs.docker.com/docker-hub/api/latest/) | Interact with Docker Hub | `apiKey` | Yes | Yes | | [DomainDb Info](https://api.domainsdb.info/) | Domain name search to find all domains containing particular words/phrases/etc | No | Yes | Unknown | -| [Duply](https://duply.co/docs#getting-started-api) | Dynamic Image creation API | `apiKey` | Yes | Yes | -| [DynaPictures](https://dynapictures.com/docs/) | Image Generation API | `apiKey` | Yes | Yes | | [ExtendsClass JSON Storage](https://extendsclass.com/json-storage.html) | A simple JSON store API | No | Yes | Yes | | [Form2Channel](https://form2channel.com/) | Send static html form submissions to Google Sheets, Email, Slack or Telegram | No | Yes | Yes | | [GeekFlare](https://apidocs.geekflare.com/docs/geekflare-api) | Provide numerous capabilities for important testing and monitoring methods for websites | `apiKey` | Yes | Unknown | @@ -1314,6 +1312,8 @@ API | Description | Auth | HTTPS | CORS | | [Bruzu](https://docs.bruzu.com) | Image generation with query string | `apiKey` | Yes | Yes | | [CheetahO](https://cheetaho.com/docs/getting-started/) | Photo optimization and resize | `apiKey` | Yes | Unknown | | [Dagpi](https://dagpi.xyz) | Image manipulation and processing | `apiKey` | Yes | Unknown | +| [Duply](https://duply.co/docs#getting-started-api) | Generate, Edit, Scale and Manage Images and Videos Smarter & Faster | `apiKey` | Yes | Yes | +| [DynaPictures](https://dynapictures.com/docs/) | Generate Hundreds of Personalized Images in Minutes | `apiKey` | Yes | Yes | | [Flickr](https://www.flickr.com/services/api/) | Flickr Services | `OAuth` | Yes | Unknown | | [Getty Images](http://developers.gettyimages.com/en/) | Build applications using the world's most powerful imagery | `OAuth` | Yes | Unknown | | [Gfycat](https://developers.gfycat.com/api/) | Jiffier GIFs | `OAuth` | Yes | Unknown | From dbda9c2ef55cfcb42a6e3f6efc7b27d552e885fb Mon Sep 17 00:00:00 2001 From: Blue edge <54899800+blueedgetechno@users.noreply.github.com> Date: Tue, 25 Jan 2022 21:39:51 +0530 Subject: [PATCH 142/315] Added WeatherReactApi --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5021fcf5..aeb20219 100644 --- a/README.md +++ b/README.md @@ -1785,6 +1785,7 @@ API | Description | Auth | HTTPS | CORS | | [weather-api](https://github.com/robertoduessmann/weather-api) | A RESTful free API to check the weather | No | Yes | No | | [WeatherAPI](https://www.weatherapi.com/) | Weather API with other stuff like Astronomy and Geolocation API | `apiKey` | Yes | Yes | | [Weatherbit](https://www.weatherbit.io/api) | Weather | `apiKey` | Yes | Unknown | +| [WeatherReactApi](https://github.com/iamsainikhil/weather-react-api) | Serverless API functions to fetch weather data | No | Yes | No | | [Yandex.Weather](https://yandex.com/dev/weather/) | Assesses weather condition in specific locations | `apiKey` | Yes | No | **[⬆ Back to Index](#index)** From 5014d7800905a5d50dbeecba9905c09389de1bc7 Mon Sep 17 00:00:00 2001 From: Haneen Mahdin Date: Wed, 26 Jan 2022 17:01:52 +0530 Subject: [PATCH 143/315] Add Hashable API to Security --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5021fcf5..2abd32cb 100644 --- a/README.md +++ b/README.md @@ -1408,6 +1408,7 @@ API | Description | Auth | HTTPS | CORS | | [GitGuardian](https://api.gitguardian.com/doc) | Scan files for secrets (API Keys, database credentials) | `apiKey` | Yes | No | | [GreyNoise](https://docs.greynoise.io/reference/get_v3-community-ip) | Query IPs in the GreyNoise dataset and retrieve a subset of the full IP context data | `apiKey` | Yes | Unknown | | [HackerOne](https://api.hackerone.com/) | The industry’s first hacker API that helps increase productivity towards creative bug bounty hunting | `apiKey` | Yes | Unknown | +| [Hashable](https://hashable.space/pages/api/) | A REST API to access high level cryptographic functions and methods | No | Yes | Yes | | [HaveIBeenPwned](https://haveibeenpwned.com/API/v3) | Passwords which have previously been exposed in data breaches | `apiKey` | Yes | Unknown | | [Intelligence X](https://github.com/IntelligenceX/SDK/blob/master/Intelligence%20X%20API.pdf) | Perform OSINT via Intelligence X | `apiKey` | Yes | Unknown | | [LoginRadius](https://www.loginradius.com/docs/) | Managed User Authentication Service | `apiKey` | Yes | Yes | From 5942d2665b08c94d16d52b91a6e38df8ea9dae29 Mon Sep 17 00:00:00 2001 From: Stephan Klinger Date: Fri, 28 Jan 2022 17:03:47 +0100 Subject: [PATCH 144/315] Remove skyscanner link does not work. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5021fcf5..9d3a829f 100644 --- a/README.md +++ b/README.md @@ -1625,7 +1625,6 @@ API | Description | Auth | HTTPS | CORS | | [REFUGE Restrooms](https://www.refugerestrooms.org/api/docs/#!/restrooms) | Provides safe restroom access for transgender, intersex and gender nonconforming individuals | No | Yes | Unknown | | [Sabre for Developers](https://developer.sabre.com/guides/travel-agency/quickstart/getting-started-in-travel) | Travel Search - Limited usage | `apiKey` | Yes | Unknown | | [Schiphol Airport](https://developer.schiphol.nl/) | Schiphol | `apiKey` | Yes | Unknown | -| [Skyscanner](https://rapidapi.com/skyscanner/api/skyscanner-flight-search) | Search for flights & get flight prices from Skyscanner’s database | `apiKey` | Yes | Unknown | | [Tankerkoenig](https://creativecommons.tankerkoenig.de/swagger/) | German realtime gas/diesel prices | `apiKey` | Yes | Yes | | [TransitLand](https://transit.land/documentation/datastore/api-endpoints.html) | Transit Aggregation | No | Yes | Unknown | | [Transport for Atlanta, US](http://www.itsmarta.com/app-developer-resources.aspx) | Marta | No | No | Unknown | From 405e69ff2ccfe712a63d0ef56366930083104dc6 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Fri, 28 Jan 2022 11:04:50 -0800 Subject: [PATCH 145/315] Add Mintlify to programming API section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5021fcf5..45a17b22 100644 --- a/README.md +++ b/README.md @@ -1344,6 +1344,7 @@ API | Description | Auth | HTTPS | CORS | | [Hackerearth](https://www.hackerearth.com/docs/wiki/developers/v4/) | For compiling and running code in several languages | `apiKey` | Yes | Unknown | | [Judge0 CE](https://ce.judge0.com/) | Online code execution system | `apiKey` | Yes | Unknown | | [KONTESTS](https://kontests.net/api) | For upcoming and ongoing competitive coding contests | No | Yes | Unknown | +| [Mintlify](https://docs.mintlify.com) | For programmatically generating documentation for code | `apiKey` | Yes | Yes | **[⬆ Back to Index](#index)** ### Science & Math From f534b5b9279d92772c0bc1c4af16bcb4de90f009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Szyma=C5=84ski?= Date: Sat, 29 Jan 2022 02:34:47 +0100 Subject: [PATCH 146/315] Add transport.rest to Transportation (#3033) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 81f67bb5..31d5d82e 100644 --- a/README.md +++ b/README.md @@ -1663,6 +1663,7 @@ API | Description | Auth | HTTPS | CORS | | [Transport for United States](http://www.nextbus.com/xmlFeedDocs/NextBusXMLFeed.pdf) | NextBus API | No | No | Unknown | | [Transport for Vancouver, Canada](https://developer.translink.ca/) | TransLink | `OAuth` | Yes | Unknown | | [Transport for Washington, US](https://developer.wmata.com/) | Washington Metro transport API | `OAuth` | Yes | Unknown | +| [transport.rest](https://transport.rest) | Community maintained, developer-friendly public transport API | No | Yes | Yes | | [Tripadvisor](https://developer-tripadvisor.com/home/) | Rating content for a hotel, restaurant, attraction or destination | `apiKey` | Yes | Unknown | | [Uber](https://developer.uber.com/products) | Uber ride requests and price estimation | `OAuth` | Yes | Yes | | [Velib metropolis, Paris, France](https://www.velib-metropole.fr/donnees-open-data-gbfs-du-service-velib-metropole) | Velib Open Data API | No | Yes | No | From 547ce8b6e874692b71af49c3dfe2888e7d58f0db Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Fri, 28 Jan 2022 22:59:53 -0300 Subject: [PATCH 147/315] Remove Goodreads (#3027) resolve #3027 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b546c7e3..92479392 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,6 @@ API | Description | Auth | HTTPS | CORS | | [British National Bibliography](http://bnb.data.bl.uk/) | Books | No | No | Unknown | | [Crossref Metadata Search](https://github.com/CrossRef/rest-api-doc) | Books & Articles Metadata | No | Yes | Unknown | | [Ganjoor](https://ganjgah.ir) | Classic Persian poetry works including access to related manuscripts, recitations and music tracks | `OAuth` | Yes | Yes | -| [Goodreads](https://www.goodreads.com/api) | Developers Access to Goodreads data | `apiKey` | Yes | Unknown | | [Google Books](https://developers.google.com/books/) | Books | `OAuth` | Yes | Unknown | | [GurbaniNow](https://github.com/GurbaniNow/api) | Fast and Accurate Gurbani RESTful API | No | Yes | Unknown | | [Gutendex](https://gutendex.com/) | Web-API for fetching data from Project Gutenberg Books Library | No | Yes | Unknown | From 2f8e0475ba4d990b60f3787700d499a85d86848f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Fri, 28 Jan 2022 23:14:16 -0300 Subject: [PATCH 148/315] Remove catAPI (#3028) resolve #3028 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 92479392..8940d02e 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,6 @@ API | Description | Auth | HTTPS | CORS | | [Axolotl](https://theaxolotlapi.netlify.app/) | Collection of axolotl pictures and facts | No | Yes | No | | [Cat Facts](https://alexwohlbruck.github.io/cat-facts/) | Daily cat facts | No | Yes | No | | [Cataas](https://cataas.com/) | Cat as a service (cats pictures and gifs) | No | Yes | No | -| [catAPI](https://thatcopy.pw/catapi) | Random pictures of cats | No | Yes | Yes | | [Cats](https://docs.thecatapi.com/) | Pictures of cats from Tumblr | `apiKey` | Yes | No | | [Dog Facts](https://dukengn.github.io/Dog-facts-API/) | Random dog facts | No | Yes | Yes | | [Dog Facts](https://kinduff.github.io/dog-api/) | Random facts of Dogs | No | Yes | Yes | From 549c6e5f078ffe3e6e6a017ca91c62b6170b0a86 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 30 Jan 2022 20:50:35 -0300 Subject: [PATCH 149/315] Add badge in head: Number of Categories --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 8940d02e..d9389afb 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ Validate links + + Number of Categories + Number of APIs From 1c08eed0528c407019817c4279dac67042665305 Mon Sep 17 00:00:00 2001 From: Denis Soldatov <33934960+dsoldatow@users.noreply.github.com> Date: Mon, 31 Jan 2022 07:47:49 +0700 Subject: [PATCH 150/315] Add Watchdata to Blockchain (#3030) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d9389afb..008115eb 100644 --- a/README.md +++ b/README.md @@ -233,6 +233,7 @@ API | Description | Auth | HTTPS | CORS | | [Steem](https://developers.steem.io/) | Blockchain-based blogging and social media website | No | No | No | | [The Graph](https://thegraph.com) | Indexing protocol for querying networks like Ethereum with GraphQL | `apiKey` | Yes | Unknown | | [Walltime](https://walltime.info/api.html) | To retrieve Walltime's market info | No | Yes | Unknown | +| [Watchdata](https://docs.watchdata.io) | Provide simple and reliable API access to Ethereum blockchain | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** ### Books From 47641f2ebe98fe6c5b4125cdaa3f737dc17929ae Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Sun, 30 Jan 2022 21:54:50 -0300 Subject: [PATCH 151/315] Remove Public APIs This API is in the header of the README.md file --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 008115eb..6f60eac6 100644 --- a/README.md +++ b/README.md @@ -545,7 +545,6 @@ API | Description | Auth | HTTPS | CORS | | [Plino](https://plino.herokuapp.com/) | An intelligent spam filtering system | No | Yes | No | | [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | -| [Public APIs](https://github.com/davemachado/public-api) | A collective list of free JSON APIs for use in web development | No | Yes | Unknown | | [Pusher Beams](https://pusher.com/beams) | Push notifications for Android & iOS | `apiKey` | Yes | Unknown | | [QR code](http://qrtag.net/api/) | Create an easy to read QR code and URL shortener | No | Yes | Yes | | [QR code](http://goqr.me/api/) | Generate and decode / read QR code graphics | No | Yes | Unknown | From 7d85dccbe76264964ba18366081a35228e906437 Mon Sep 17 00:00:00 2001 From: speedyshreya Date: Thu, 27 Jan 2022 19:21:09 +0530 Subject: [PATCH 152/315] Added missing whitespace after | --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5021fcf5..662acb86 100644 --- a/README.md +++ b/README.md @@ -653,6 +653,7 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [chucknorris.io](https://api.chucknorris.io) | JSON API for hand curated Chuck Norris jokes | No | Yes | Unknown | +| [Corporate Buzz Words](https://github.com/sameerkumar18/corporate-bs-generator-api) | REST API for Corporate Buzz Words | No | Yes | Yes | | [Excuser](https://excuser.herokuapp.com/) | Get random excuses for various situations | No | Yes | Unknown | | [Fun Fact](https://ffa.aakhilv.me) | A simple HTTPS api that can randomly select and return a fact from the FFA database | No | Yes | Yes | | [Imgflip](https://imgflip.com/api) | Gets an array of popular memes | No | Yes | Unknown | From 0322756b490069048b9512de72638dd12b0fd497 Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Sat, 29 Jan 2022 16:08:09 +0000 Subject: [PATCH 153/315] Add GraphQL Pokemon API --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6f60eac6..6cbb75e9 100644 --- a/README.md +++ b/README.md @@ -812,6 +812,7 @@ API | Description | Auth | HTTPS | CORS | | [Geek-Jokes](https://github.com/sameerkumar18/geek-joke-api) | Fetch a random geeky/programming related joke for use in all sorts of applications | No | Yes | Yes | | [Genshin Impact](https://genshin.dev) | Genshin Impact game data | No | Yes | Yes | | [Giant Bomb](https://www.giantbomb.com/api/documentation) | Video Games | `apiKey` | Yes | Unknown | +| [GraphQL Pokemon](https://github.com/favware/graphql-pokemon) | GraphQL powered Pokemon API. Supports generations 1 through 8 | No | Yes | Yes | | [Guild Wars 2](https://wiki.guildwars2.com/wiki/API:Main) | Guild Wars 2 Game Information | `apiKey` | Yes | Unknown | | [GW2Spidy](https://github.com/rubensayshi/gw2spidy/wiki) | GW2Spidy API, Items data on the Guild Wars 2 Trade Market | No | Yes | Unknown | | [Halo](https://developer.haloapi.com/) | Halo 5 and Halo Wars 2 Information | `apiKey` | Yes | Unknown | From 34b275598d88b5d006c46eda0dddac765a107e3d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 1 Feb 2022 10:58:34 -0300 Subject: [PATCH 154/315] Add oyyi to Development (#3022) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e3a5c934..23d734cb 100644 --- a/README.md +++ b/README.md @@ -541,6 +541,7 @@ API | Description | Auth | HTTPS | CORS | | [OOPSpam](https://oopspam.com/) | Multiple spam filtering service | No | Yes | Yes | | [Open Page Rank](https://www.domcop.com/openpagerank/) | API for calculating and comparing metrics of different websites using Page Rank algorithm | `apiKey` | Yes | Unknown | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | +| [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Unknown | | [PageCDN](https://pagecdn.com/docs/public-api) | Public API for javascript, css and font libraries on PageCDN | `apiKey` | Yes | Yes | | [Plino](https://plino.herokuapp.com/) | An intelligent spam filtering system | No | Yes | No | | [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | From fc175231f45a2d2035b22a4043bcfc990ca49417 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 1 Feb 2022 18:32:38 +0100 Subject: [PATCH 155/315] Add ProxyKingdom API to Development --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 23d734cb..114e9ff8 100644 --- a/README.md +++ b/README.md @@ -546,6 +546,7 @@ API | Description | Auth | HTTPS | CORS | | [Plino](https://plino.herokuapp.com/) | An intelligent spam filtering system | No | Yes | No | | [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | +| [ProxyKingdom](https://proxykingdom.com) | Rotating Proxy API that produces a working proxy on every request | `apiKey` | Yes | Yes | | [Pusher Beams](https://pusher.com/beams) | Push notifications for Android & iOS | `apiKey` | Yes | Unknown | | [QR code](http://qrtag.net/api/) | Create an easy to read QR code and URL shortener | No | Yes | Yes | | [QR code](http://goqr.me/api/) | Generate and decode / read QR code graphics | No | Yes | Unknown | From a270848a5af24a57eafdb096fd45f3fdeba77510 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:40:50 -0300 Subject: [PATCH 156/315] Upd oyyi: CORS from Unknown to Yes (#3022) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23d734cb..077e6d32 100644 --- a/README.md +++ b/README.md @@ -541,7 +541,7 @@ API | Description | Auth | HTTPS | CORS | | [OOPSpam](https://oopspam.com/) | Multiple spam filtering service | No | Yes | Yes | | [Open Page Rank](https://www.domcop.com/openpagerank/) | API for calculating and comparing metrics of different websites using Page Rank algorithm | `apiKey` | Yes | Unknown | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | -| [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Unknown | +| [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Yes | | [PageCDN](https://pagecdn.com/docs/public-api) | Public API for javascript, css and font libraries on PageCDN | `apiKey` | Yes | Yes | | [Plino](https://plino.herokuapp.com/) | An intelligent spam filtering system | No | Yes | No | | [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | From 53eff6b1ebf9f38124f1ad598b5e14f5a8599006 Mon Sep 17 00:00:00 2001 From: William Faircloth Date: Tue, 1 Feb 2022 15:50:14 -0500 Subject: [PATCH 157/315] Add OceanFacts to Math & Science (#3039) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 077e6d32..376407cf 100644 --- a/README.md +++ b/README.md @@ -1373,6 +1373,7 @@ API | Description | Auth | HTTPS | CORS | | [Noctua](https://api.noctuasky.com/api/v1/swaggerdoc/) | REST API used to access NoctuaSky features | No | Yes | Unknown | | [Numbers](https://math.tools/api/numbers/) | Number of the day, random number, number facts and anything else you want to do with numbers | `apiKey` | Yes | No | | [Numbers](http://numbersapi.com) | Facts about numbers | No | No | No | +| [Ocean Facts](https://oceanfacts.herokuapp.com/) | Facts pertaining to the physical science of Oceanography | No | Yes | Unknown | | [Open Notify](http://open-notify.org/Open-Notify-API/) | ISS astronauts, current location, etc | No | No | No | | [Open Science Framework](https://developer.osf.io) | Repository and archive for study designs, research materials, data, manuscripts, etc | No | Yes | Unknown | | [Purple Air](https://www2.purpleair.com/) | Real Time Air Quality Monitoring | No | Yes | Unknown | From 529882c66f825cdae804f944decc6ed9f8ac2dfc Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 1 Feb 2022 20:26:22 -0300 Subject: [PATCH 158/315] Add section for sponsors in README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 4d1bc9c4..433ad5bf 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,14 @@ --- + + +--- + ## Index * [Animals](#animals) From 181b4b814cddb2a0ebbece2f78d6c7da32cf2dda Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 1 Feb 2022 21:40:25 -0300 Subject: [PATCH 159/315] Create a assets/sponsors_logo directory and add M3O logo --- .github/assets/sponsors_logo/m3o_logo_black.png | Bin 0 -> 4702 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/assets/sponsors_logo/m3o_logo_black.png diff --git a/.github/assets/sponsors_logo/m3o_logo_black.png b/.github/assets/sponsors_logo/m3o_logo_black.png new file mode 100644 index 0000000000000000000000000000000000000000..c133215275b2c0cab375e292cd560962939f2f48 GIT binary patch literal 4702 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 GB>WFl3C{um literal 0 HcmV?d00001 From a8f39762bbf96b786a99eddc9fc8445007742608 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Tue, 1 Feb 2022 21:46:14 -0300 Subject: [PATCH 160/315] Add M3O as a sponsor (#1932) --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 433ad5bf..1f6595ae 100644 --- a/README.md +++ b/README.md @@ -53,16 +53,32 @@ Collective APIs +
+ --- +
+ +
+ --- +
+ ## Index * [Animals](#animals) From da3dabe7846a4b31e11b43e7cedec3a006ee4911 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Wed, 2 Feb 2022 04:14:23 -0300 Subject: [PATCH 161/315] Add slogan and description to M3O sponsor (#1932) ref 1: https://github.com/public-apis/public-apis/issues/1932#issuecomment-1027413074 ref 2: https://github.com/public-apis/public-apis/issues/1932#issuecomment-1027617827 --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1f6595ae..458d3bf7 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,12 @@
M3O Logo
+
+

The fastest way to integrate APIs into any product

+
+
+ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience. +

From 505560f5f2d15b4e3ec695a7bf4fec56600b2ccf Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Wed, 2 Feb 2022 10:32:08 +0000 Subject: [PATCH 162/315] Add dark mode m3o logo --- .github/assets/sponsors_logo/m3o_logo_white.png | Bin 0 -> 4965 bytes README.md | 13 ++++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .github/assets/sponsors_logo/m3o_logo_white.png diff --git a/.github/assets/sponsors_logo/m3o_logo_white.png b/.github/assets/sponsors_logo/m3o_logo_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1da481437b460cfaf57c522503297cdc10610c GIT binary patch literal 4965 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 y>8#6@(oCwj!PXB}

Special thanks to:

- +

@@ -76,6 +76,17 @@ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience. + +
+ M3O Logo +
+
+

The fastest way to integrate APIs into any product

+
+
+ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience. +
+

From 027242c22a407640e3c8224ef7bade747246ff57 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Thu, 3 Feb 2022 10:01:19 +0330 Subject: [PATCH 163/315] Update Ganjoor API url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 688e0bae..5b1cf945 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ API | Description | Auth | HTTPS | CORS | | [Bible-api](https://bible-api.com/) | Free Bible API with multiple languages | No | Yes | Yes | | [British National Bibliography](http://bnb.data.bl.uk/) | Books | No | No | Unknown | | [Crossref Metadata Search](https://github.com/CrossRef/rest-api-doc) | Books & Articles Metadata | No | Yes | Unknown | -| [Ganjoor](https://ganjgah.ir) | Classic Persian poetry works including access to related manuscripts, recitations and music tracks | `OAuth` | Yes | Yes | +| [Ganjoor](https://api.ganjoor.net) | Classic Persian poetry works including access to related manuscripts, recitations and music tracks | `OAuth` | Yes | Yes | | [Google Books](https://developers.google.com/books/) | Books | `OAuth` | Yes | Unknown | | [GurbaniNow](https://github.com/GurbaniNow/api) | Fast and Accurate Gurbani RESTful API | No | Yes | Unknown | | [Gutendex](https://gutendex.com/) | Web-API for fetching data from Project Gutenberg Books Library | No | Yes | Unknown | From 54af3f859137f23ba4e9cf60f1f3bf693a3d65b9 Mon Sep 17 00:00:00 2001 From: Himanshu Bharti <48318060+Himanshu9271@users.noreply.github.com> Date: Thu, 3 Feb 2022 16:41:57 +0530 Subject: [PATCH 164/315] Update README.md moved | [aztro](https://aztro.sameerkumar.website/) | Daily horoscope info for yesterday, today, and tomorrow | No | Yes | Unknown | from Science and Math to Social --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 688e0bae..01aa9b81 100644 --- a/README.md +++ b/README.md @@ -1398,7 +1398,6 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [arcsecond.io](https://api.arcsecond.io/) | Multiple astronomy data sources | No | Yes | Unknown | | [arXiv](https://arxiv.org/help/api/user-manual) | Curated research-sharing platform: physics, mathematics, quantitative finance, and economics | No | Yes | Unknown | -| [aztro](https://aztro.sameerkumar.website/) | Daily horoscope info for yesterday, today, and tomorrow | No | Yes | Unknown | | [CORE](https://core.ac.uk/services#api) | Access the world's Open Access research papers | `apiKey` | Yes | Unknown | | [GBIF](https://www.gbif.org/developer/summary) | Global Biodiversity Information Facility | No | Yes | Yes | | [iDigBio](https://github.com/idigbio/idigbio-search-api/wiki) | Access millions of museum specimens from organizations around the world | No | Yes | Unknown | @@ -1502,6 +1501,7 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [4chan](https://github.com/4chan/4chan-API) | Simple image-based bulletin board dedicated to a variety of topics | No | Yes | Yes | | [Ayrshare](https://www.ayrshare.com) | Social media APIs to post, get analytics, and manage multiple users social media accounts | `apiKey` | Yes | Yes | +| [aztro](https://aztro.sameerkumar.website/) | Daily horoscope info for yesterday, today, and tomorrow | No | Yes | Unknown | | [Blogger](https://developers.google.com/blogger/) | The Blogger APIs allows client applications to view and update Blogger content | `OAuth` | Yes | Unknown | | [Cisco Spark](https://developer.ciscospark.com) | Team Collaboration Software | `OAuth` | Yes | Unknown | | [Dangerous Discord Database](https://discord.riverside.rocks/docs/index.php) | Database of malicious Discord accounts | `apiKey` | Yes | Unknown | From 9e0c2f83e53f26071b0bbebd9f9a843de69eb3e1 Mon Sep 17 00:00:00 2001 From: restyler Date: Fri, 4 Feb 2022 18:08:28 +0400 Subject: [PATCH 165/315] Add ScrapeNinja to Development --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 688e0bae..4d2f4347 100644 --- a/README.md +++ b/README.md @@ -598,6 +598,7 @@ API | Description | Auth | HTTPS | CORS | | [ReqRes](https://reqres.in/ ) | A hosted REST-API ready to respond to your AJAX requests | No | Yes | Unknown | | [RSS feed to JSON](https://rss-to-json-serverless-api.vercel.app) | Returns RSS feed in JSON format using feed URL | No | Yes | Yes | | [SavePage.io](https://www.savepage.io) | A free, RESTful API used to screenshot any desktop, or mobile website | `apiKey` | Yes | Yes | +| [ScrapeNinja](https://scrapeninja.net) | Scraping API with Chrome fingerprint and residential proxies | `apiKey` | Yes | Unknown | | [ScraperApi](https://www.scraperapi.com) | Easily build scalable web scrapers | `apiKey` | Yes | Unknown | | [scraperBox](https://scraperbox.com/) | Undetectable web scraping API | `apiKey` | Yes | Yes | | [scrapestack](https://scrapestack.com/) | Real-time, Scalable Proxy & Web Scraping REST API | `apiKey` | Yes | Unknown | From bfc6a52ac03ccd5037dbb67c3c4c5785a8454d6f Mon Sep 17 00:00:00 2001 From: Gerwert Date: Sun, 6 Feb 2022 08:06:01 +0100 Subject: [PATCH 166/315] Changed 'Wuhan Coronavirus' to 'Covid-19' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 688e0bae..91963771 100644 --- a/README.md +++ b/README.md @@ -1102,7 +1102,7 @@ API | Description | Auth | HTTPS | CORS | ### Health API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Coronavirus](https://pipedream.com/@pravin/http-api-for-latest-wuhan-coronavirus-data-2019-ncov-p_G6CLVM/readme) | HTTP API for Latest Wuhan Coronavirus Data | No | Yes | Unknown | +| [Coronavirus](https://pipedream.com/@pravin/http-api-for-latest-wuhan-coronavirus-data-2019-ncov-p_G6CLVM/readme) | HTTP API for Latest Covid-19 Data | No | Yes | Unknown | | [Coronavirus in the UK](https://coronavirus.data.gov.uk/details/developers-guide) | UK Government coronavirus data, including deaths and cases by region | No | Yes | Unknown | | [Covid Tracking Project](https://covidtracking.com/data/api/version-2) | Covid-19 data for the US | No | Yes | No | | [Covid-19](https://covid19api.com/) | Covid 19 spread, infection and recovery | No | Yes | Yes | From f8ab85074d99665d6d0a98c3c29124924190d0e0 Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 7 Feb 2022 01:09:04 -0600 Subject: [PATCH 167/315] Add Postali to Geocoding (#3047) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f02f5d19..09652f28 100644 --- a/README.md +++ b/README.md @@ -983,6 +983,7 @@ API | Description | Auth | HTTPS | CORS | | [OpenStreetMap](http://wiki.openstreetmap.org/wiki/API) | Navigation, geolocation and geographical data | `OAuth` | No | Unknown | | [Pinball Map](https://pinballmap.com/api/v1/docs) | A crowdsourced map of public pinball machines | No | Yes | Yes | | [positionstack](https://positionstack.com/) | Forward & Reverse Batch Geocoding REST API | `apiKey` | Yes | Unknown | +| [Postali](https://postali.app/api) | Mexico Zip Codes API | No | Yes | Yes | | [PostcodeData.nl](http://api.postcodedata.nl/v1/postcode/?postcode=1211EP&streetnumber=60&ref=domeinnaam.nl&type=json) | Provide geolocation data based on postcode for Dutch addresses | No | No | Unknown | | [Postcodes.io](https://postcodes.io) | Postcode lookup & Geolocation for the UK | No | Yes | Yes | | [Queimadas INPE](https://queimadas.dgi.inpe.br/queimadas/dados-abertos) | Access to heat focus data (probable wildfire) | No | Yes | Unknown | From 7b6640dc9470aafeebc121c66e4f2d1d6e2836e5 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 04:23:52 -0300 Subject: [PATCH 168/315] Add OpenAPIHub to Development (#3037) PR inactive resolve #3037 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 09652f28..4fd54563 100644 --- a/README.md +++ b/README.md @@ -581,6 +581,7 @@ API | Description | Auth | HTTPS | CORS | | [OneSignal](https://documentation.onesignal.com/docs/onesignal-api) | Self-serve customer engagement solution for Push Notifications, Email, SMS & In-App | `apiKey` | Yes | Unknown | | [OOPSpam](https://oopspam.com/) | Multiple spam filtering service | No | Yes | Yes | | [Open Page Rank](https://www.domcop.com/openpagerank/) | API for calculating and comparing metrics of different websites using Page Rank algorithm | `apiKey` | Yes | Unknown | +| [OpenAPIHub](https://hub.openapihub.com/) | The All-in-one API Platform | `X-Mashape-Key` | Yes | Unknown | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | | [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Yes | | [PageCDN](https://pagecdn.com/docs/public-api) | Public API for javascript, css and font libraries on PageCDN | `apiKey` | Yes | Yes | From 51b4166a96b2283e963126a1e151ae7acb579162 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 05:18:49 -0300 Subject: [PATCH 169/315] Add workflow_dispatch event This makes it possible to run the script to validate all links manually, via a button on the GitHub Actions panel. This will be useful for testing and when you need to run validation right away. --- .github/workflows/validate_links.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/validate_links.yml b/.github/workflows/validate_links.yml index 4f14df1c..33fef088 100644 --- a/.github/workflows/validate_links.yml +++ b/.github/workflows/validate_links.yml @@ -1,6 +1,7 @@ name: "Validate links" on: + workflow_dispatch: schedule: - cron: '0 0 * * *' From c2bdd9e5fc4f00807254d9d2123e985dce555a3c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 07:09:01 -0300 Subject: [PATCH 170/315] Fix false negative http code 404 in verification Some links when they were being checked returned the http code 404, but the links were working correctly. This was happening because before the request the link was concatenated with the / character at the end, making it a different link from the original. If the original link didn't have a path that is accessed by / at the end, it would return a 404 error. This behavior made it a false negative. --- scripts/validate/links.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/validate/links.py b/scripts/validate/links.py index a5172b8b..9f808871 100644 --- a/scripts/validate/links.py +++ b/scripts/validate/links.py @@ -17,7 +17,7 @@ def find_links_in_text(text: str) -> List[str]: raw_links = re.findall(link_pattern, text) links = [ - str(raw_link[0]).rstrip('/') for raw_link in raw_links + str(raw_link[0]) for raw_link in raw_links ] return links @@ -49,6 +49,7 @@ def check_duplicate_links(links: List[str]) -> Tuple[bool, List]: has_duplicate = False for link in links: + link = link.rstrip('/') if link not in seen: seen[link] = 1 else: @@ -163,7 +164,7 @@ def check_if_link_is_working(link: str) -> Tuple[bool, str]: error_message = '' try: - resp = requests.get(link + '/', timeout=25, headers={ + resp = requests.get(link, timeout=25, headers={ 'User-Agent': fake_user_agent(), 'host': get_host_from_link(link) }) From 6ccc312ef116894f6c23538b79ef524305b4302f Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 07:51:41 -0300 Subject: [PATCH 171/315] Remove RandomCat, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4fd54563..0771d553 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,6 @@ API | Description | Auth | HTTPS | CORS | | [PlaceBear](https://placebear.com/) | Placeholder bear pictures | No | Yes | Yes | | [PlaceDog](https://place.dog) | Placeholder Dog pictures | No | Yes | Yes | | [PlaceKitten](https://placekitten.com/) | Placeholder Kitten pictures | No | Yes | Yes | -| [RandomCat](https://aws.random.cat) | Random pictures of cats | No | Yes | Yes | | [RandomDog](https://random.dog/woof.json) | Random pictures of dogs | No | Yes | Yes | | [RandomDuck](https://random-d.uk/api) | Random pictures of ducks | No | Yes | No | | [RandomFox](https://randomfox.ca/floof/) | Random pictures of foxes | No | Yes | No | From c909c258d3e15e36280313336f54636011e50611 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 07:59:15 -0300 Subject: [PATCH 172/315] Remove LibGen, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0771d553..3ab6f50c 100644 --- a/README.md +++ b/README.md @@ -290,7 +290,6 @@ API | Description | Auth | HTTPS | CORS | | [Google Books](https://developers.google.com/books/) | Books | `OAuth` | Yes | Unknown | | [GurbaniNow](https://github.com/GurbaniNow/api) | Fast and Accurate Gurbani RESTful API | No | Yes | Unknown | | [Gutendex](https://gutendex.com/) | Web-API for fetching data from Project Gutenberg Books Library | No | Yes | Unknown | -| [LibGen](https://garbage.world/posts/libgen/) | Library Genesis search engine | No | No | Unknown | | [Open Library](https://openlibrary.org/developers/api) | Books, book covers and related data | No | Yes | No | | [Penguin Publishing](http://www.penguinrandomhouse.biz/webservices/rest/) | Books, book covers and related data | No | Yes | Yes | | [PoetryDB](https://github.com/thundercomb/poetrydb#readme) | Enables you to get instant data from our vast poetry collection | No | Yes | Yes | From 76fe37eada020950ce66fd0e30d633c4cb945df7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:04:54 -0300 Subject: [PATCH 173/315] Update Apache Superset: new path on link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ab6f50c..22dcf0cf 100644 --- a/README.md +++ b/README.md @@ -306,7 +306,7 @@ API | Description | Auth | HTTPS | CORS | ### Business API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Apache Superset](https://superset.apache.org/docs/rest-api) | API to manage your BI dashboards and data sources on Superset | `apiKey` | Yes | Yes | +| [Apache Superset](https://superset.apache.org/docs/api) | API to manage your BI dashboards and data sources on Superset | `apiKey` | Yes | Yes | | [Charity Search](http://charityapi.orghunter.com/) | Non-profit charity data | `apiKey` | No | Unknown | | [Clearbit Logo](https://clearbit.com/docs#logo-api) | Search for company logos and embed them in your projects | `apiKey` | Yes | Unknown | | [Domainsdb.info](https://domainsdb.info/) | Registered Domain Names Search | No | Yes | No | From c52951f7384ab9038805beefec387129d05af015 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:08:11 -0300 Subject: [PATCH 174/315] Update Freelancer: new path on link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 22dcf0cf..a208186a 100644 --- a/README.md +++ b/README.md @@ -310,7 +310,7 @@ API | Description | Auth | HTTPS | CORS | | [Charity Search](http://charityapi.orghunter.com/) | Non-profit charity data | `apiKey` | No | Unknown | | [Clearbit Logo](https://clearbit.com/docs#logo-api) | Search for company logos and embed them in your projects | `apiKey` | Yes | Unknown | | [Domainsdb.info](https://domainsdb.info/) | Registered Domain Names Search | No | Yes | No | -| [Freelancer](https://developers.freelancer.com/docs) | Hire freelancers to get work done | `OAuth` | Yes | Unknown | +| [Freelancer](https://developers.freelancer.com) | Hire freelancers to get work done | `OAuth` | Yes | Unknown | | [Gmail](https://developers.google.com/gmail/api/) | Flexible, RESTful access to the user's inbox | `OAuth` | Yes | Unknown | | [Google Analytics](https://developers.google.com/analytics/) | Collect, configure and analyze your data to reach the right audience | `OAuth` | Yes | Unknown | | [Instatus](https://instatus.com/help/api) | Post to and update maintenance and incidents on your status page through an HTTP REST API | `apiKey` | Yes | Unknown | From c907ae3712199799228d7a359187f3680e7470ea Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:19:25 -0300 Subject: [PATCH 175/315] Update markerapi, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a208186a..cdf5a190 100644 --- a/README.md +++ b/README.md @@ -316,7 +316,7 @@ API | Description | Auth | HTTPS | CORS | | [Instatus](https://instatus.com/help/api) | Post to and update maintenance and incidents on your status page through an HTTP REST API | `apiKey` | Yes | Unknown | | [Mailchimp](https://mailchimp.com/developer/) | Send marketing campaigns and transactional mails | `apiKey` | Yes | Unknown | | [mailjet](https://www.mailjet.com/) | Marketing email can be sent and mail templates made in MJML or HTML can be sent using API | `apiKey` | Yes | Unknown | -| [markerapi](http://www.markerapi.com/) | Trademark Search | No | No | Unknown | +| [markerapi](https://markerapi.com) | Trademark Search | No | No | Unknown | | [ORB Intelligence](https://api.orb-intelligence.com/docs/) | Company lookup | `apiKey` | Yes | Unknown | | [Redash](https://redash.io/help/user-guide/integrations-and-api/api) | Access your queries and dashboards on Redash | `apiKey` | Yes | Yes | | [Smartsheet](https://smartsheet.redoc.ly/) | Allows you to programmatically access and Smartsheet data and account information | `OAuth` | Yes | No | From b5a2193843ce5697954ef97c62de11d3270c8df0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:23:01 -0300 Subject: [PATCH 176/315] Remove Megavangelical, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index cdf5a190..a60d3edf 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,6 @@ API | Description | Auth | HTTPS | CORS | | [Hebrew Calendar](https://www.hebcal.com/home/developer-apis) | Convert between Gregorian and Hebrew, fetch Shabbat and Holiday times, etc | No | No | Unknown | | [Holidays](https://holidayapi.com/) | Historical data regarding holidays | `apiKey` | Yes | Unknown | | [LectServe](http://www.lectserve.com) | Protestant liturgical calendar | No | No | Unknown | -| [Megavangelical](https://megavangelicals.com/sundays.json) | A (satirical) Evangelical liturgical calendar | No | Yes | Yes | | [Nager.Date](https://date.nager.at) | Public holidays for more than 90 countries | No | Yes | No | | [Namedays Calendar](https://nameday.abalin.net) | Provides namedays for multiple countries | No | Yes | Yes | | [Non-Working Days](https://github.com/gadael/icsdb) | Database of ICS files for non working days | No | Yes | Unknown | From 2b91891ba29ab103e4f629278bfb602c16e01033 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:25:45 -0300 Subject: [PATCH 177/315] Update OneDrive: new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a60d3edf..183a53b5 100644 --- a/README.md +++ b/README.md @@ -365,7 +365,7 @@ API | Description | Auth | HTTPS | CORS | | [Google Drive](https://developers.google.com/drive/) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [Gyazo](https://gyazo.com/api/docs) | Save & Share screen captures instantly | `apiKey` | Yes | Unknown | | [Imgbb](https://api.imgbb.com/) | Simple and quick private image sharing | `apiKey` | Yes | Unknown | -| [OneDrive](https://dev.onedrive.com/) | File Sharing and Storage | `OAuth` | Yes | Unknown | +| [OneDrive](https://developer.microsoft.com/onedrive) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [Pantry](https://getpantry.cloud/) | Free JSON storage for small projects | No | Yes | Yes | | [Pastebin](https://pastebin.com/doc_api) | Plain Text Storage | `apiKey` | Yes | Unknown | | [Pinata](https://docs.pinata.cloud/) | IPFS Pinning Services API | `apiKey` | Yes | Unknown | From 72316707ba955fc3a1aa9086a775e338b97351e1 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:35:34 -0300 Subject: [PATCH 178/315] Update Codeship, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 183a53b5..291e3000 100644 --- a/README.md +++ b/README.md @@ -382,7 +382,7 @@ API | Description | Auth | HTTPS | CORS | | [Bitrise](https://api-docs.bitrise.io/) | Build tool and processes integrations to create efficient development pipelines | `apiKey` | Yes | Unknown | | [Buddy](https://buddy.works/docs/api/getting-started/overview) | The fastest continuous integration and continuous delivery platform | `OAuth` | Yes | Unknown | | [CircleCI](https://circleci.com/docs/api/v1-reference/) | Automate the software development process using continuous integration and continuous delivery | `apiKey` | Yes | Unknown | -| [Codeship](https://apidocs.codeship.com/) | Codeship is a Continuous Integration Platform in the cloud | `apiKey` | Yes | Unknown | +| [Codeship](https://docs.cloudbees.com/docs/cloudbees-codeship/latest/api-overview/) | Codeship is a Continuous Integration Platform in the cloud | `apiKey` | Yes | Unknown | | [Travis CI](https://docs.travis-ci.com/api/) | Sync your GitHub projects with Travis CI to test your code in minutes | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** From 7038bb12e188e527b81b06c31126b986053b0f5a Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:41:59 -0300 Subject: [PATCH 179/315] Update Bittrex, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 291e3000..156a359a 100644 --- a/README.md +++ b/README.md @@ -399,7 +399,7 @@ API | Description | Auth | HTTPS | CORS | | [BitcoinCharts](https://bitcoincharts.com/about/exchanges/) | Financial and Technical Data related to the Bitcoin Network | No | Yes | Unknown | | [Bitfinex](https://docs.bitfinex.com/docs) | Cryptocurrency Trading Platform | `apiKey` | Yes | Unknown | | [Bitmex](https://www.bitmex.com/app/apiOverview) | Real-Time Cryptocurrency derivatives trading platform based in Hong Kong | `apiKey` | Yes | Unknown | -| [Bittrex](https://bittrex.com/Home/Api) | Next Generation Crypto Trading Platform | `apiKey` | Yes | Unknown | +| [Bittrex](https://bittrex.github.io/api/v3) | Next Generation Crypto Trading Platform | `apiKey` | Yes | Unknown | | [Block](https://www.block.io/docs/basic) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | | [Blockchain](https://www.blockchain.com/api) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | | [BlockFacts](https://blockfacts.io/) | Real-time crypto data from multiple exchanges via a single unified API, and much more | `apiKey` | Yes | Unknown | From f2801d26ffbabff72aa73ef6f3bce3a09c56ff65 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:44:04 -0300 Subject: [PATCH 180/315] Update Block, new link] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 156a359a..9fdce4c9 100644 --- a/README.md +++ b/README.md @@ -400,7 +400,7 @@ API | Description | Auth | HTTPS | CORS | | [Bitfinex](https://docs.bitfinex.com/docs) | Cryptocurrency Trading Platform | `apiKey` | Yes | Unknown | | [Bitmex](https://www.bitmex.com/app/apiOverview) | Real-Time Cryptocurrency derivatives trading platform based in Hong Kong | `apiKey` | Yes | Unknown | | [Bittrex](https://bittrex.github.io/api/v3) | Next Generation Crypto Trading Platform | `apiKey` | Yes | Unknown | -| [Block](https://www.block.io/docs/basic) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | +| [Block](https://block.io/docs/basic) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | | [Blockchain](https://www.blockchain.com/api) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | | [BlockFacts](https://blockfacts.io/) | Real-time crypto data from multiple exchanges via a single unified API, and much more | `apiKey` | Yes | Unknown | | [blockfrost Cardano](https://blockfrost.io/) | Interaction with the Cardano mainnet and several testnets | `apiKey` | Yes | Unknown | From 0068952e54e84af225bd866d74e290b31a760b36 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:47:21 -0300 Subject: [PATCH 181/315] Remove BlockFacts, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 9fdce4c9..e45126cf 100644 --- a/README.md +++ b/README.md @@ -402,7 +402,6 @@ API | Description | Auth | HTTPS | CORS | | [Bittrex](https://bittrex.github.io/api/v3) | Next Generation Crypto Trading Platform | `apiKey` | Yes | Unknown | | [Block](https://block.io/docs/basic) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | | [Blockchain](https://www.blockchain.com/api) | Bitcoin Payment, Wallet & Transaction Data | `apiKey` | Yes | Unknown | -| [BlockFacts](https://blockfacts.io/) | Real-time crypto data from multiple exchanges via a single unified API, and much more | `apiKey` | Yes | Unknown | | [blockfrost Cardano](https://blockfrost.io/) | Interaction with the Cardano mainnet and several testnets | `apiKey` | Yes | Unknown | | [Brave NewCoin](https://bravenewcoin.com/developers) | Real-time and historic crypto data from more than 200+ exchanges | `apiKey` | Yes | Unknown | | [BtcTurk](https://docs.btcturk.com/) | Real-time cryptocurrency data, graphs and API that allows buy&sell | `apiKey` | Yes | Yes | From a2856c295a307e2515d5c38b4b696451634add01 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:49:17 -0300 Subject: [PATCH 182/315] Update CryptAPI, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e45126cf..1a7261a8 100644 --- a/README.md +++ b/README.md @@ -421,7 +421,7 @@ API | Description | Auth | HTTPS | CORS | | [CoinRanking](https://developers.coinranking.com/api/documentation) | Live Cryptocurrency data | `apiKey` | Yes | Unknown | | [Coinremitter](https://coinremitter.com/docs) | Cryptocurrencies Payment & Prices | `apiKey` | Yes | Unknown | | [CoinStats](https://documenter.getpostman.com/view/5734027/RzZ6Hzr3?version=latest) | Crypto Tracker | No | Yes | Unknown | -| [CryptAPI](https://cryptapi.io/docs/) | Cryptocurrency Payment Processor | No | Yes | Unknown | +| [CryptAPI](https://docs.cryptapi.io/) | Cryptocurrency Payment Processor | No | Yes | Unknown | | [CryptingUp](https://www.cryptingup.com/apidoc/#introduction) | Cryptocurrency data | No | Yes | Unknown | | [CryptoCompare](https://www.cryptocompare.com/api#) | Cryptocurrencies Comparison | No | Yes | Unknown | | [CryptoMarket](https://developers.cryptomkt.com) | Cryptocurrencies Trading platform | `apiKey` | Yes | Yes | From 8f87e70fb5c2c0de97b6fd8ce4ede24c0d9fa3f7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:51:49 -0300 Subject: [PATCH 183/315] Update CryptoMarket, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a7261a8..0ba566f0 100644 --- a/README.md +++ b/README.md @@ -424,7 +424,7 @@ API | Description | Auth | HTTPS | CORS | | [CryptAPI](https://docs.cryptapi.io/) | Cryptocurrency Payment Processor | No | Yes | Unknown | | [CryptingUp](https://www.cryptingup.com/apidoc/#introduction) | Cryptocurrency data | No | Yes | Unknown | | [CryptoCompare](https://www.cryptocompare.com/api#) | Cryptocurrencies Comparison | No | Yes | Unknown | -| [CryptoMarket](https://developers.cryptomkt.com) | Cryptocurrencies Trading platform | `apiKey` | Yes | Yes | +| [CryptoMarket](https://api.exchange.cryptomkt.com/) | Cryptocurrencies Trading platform | `apiKey` | Yes | Yes | | [Cryptonator](https://www.cryptonator.com/api/) | Cryptocurrencies Exchange Rates | No | Yes | Unknown | | [CryptoTradingAPI](https://www.cryptotradingapi.io/) | Crypto Prices & Technical Indicators | `apiKey` | Yes | Unknown | | [dYdX](https://docs.dydx.exchange/) | Decentralized cryptocurrency exchange | `apiKey` | Yes | Unknown | From 4679612c76f783976d58007062f1fd9a3fcf39c0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:53:22 -0300 Subject: [PATCH 184/315] Remove CryptoTradingAPI, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0ba566f0..0bc0107b 100644 --- a/README.md +++ b/README.md @@ -426,7 +426,6 @@ API | Description | Auth | HTTPS | CORS | | [CryptoCompare](https://www.cryptocompare.com/api#) | Cryptocurrencies Comparison | No | Yes | Unknown | | [CryptoMarket](https://api.exchange.cryptomkt.com/) | Cryptocurrencies Trading platform | `apiKey` | Yes | Yes | | [Cryptonator](https://www.cryptonator.com/api/) | Cryptocurrencies Exchange Rates | No | Yes | Unknown | -| [CryptoTradingAPI](https://www.cryptotradingapi.io/) | Crypto Prices & Technical Indicators | `apiKey` | Yes | Unknown | | [dYdX](https://docs.dydx.exchange/) | Decentralized cryptocurrency exchange | `apiKey` | Yes | Unknown | | [Ethplorer](https://github.com/EverexIO/Ethplorer/wiki/Ethplorer-API) | Ethereum tokens, balances, addresses, history of transactions, contracts, and custom structures | `apiKey` | Yes | Unknown | | [EXMO](https://documenter.getpostman.com/view/10287440/SzYXWKPi) | Cryptocurrencies exchange based in UK | `apiKey` | Yes | Unknown | From 12a13a7dac2074fa47099ca3fc091e3ab6816206 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 08:58:35 -0300 Subject: [PATCH 185/315] Update MercadoBitcoin, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bc0107b..740a646a 100644 --- a/README.md +++ b/README.md @@ -439,7 +439,7 @@ API | Description | Auth | HTTPS | CORS | | [KuCoin](https://docs.kucoin.com/) | Cryptocurrency Trading Platform | `apiKey` | Yes | Unknown | | [Localbitcoins](https://localbitcoins.com/api-docs/) | P2P platform to buy and sell Bitcoins | No | Yes | Unknown | | [Mempool](https://mempool.space/api) | Bitcoin API Service focusing on the transaction fee | No | Yes | No | -| [MercadoBitcoin](https://www.mercadobitcoin.net/api-doc/) | Brazilian Cryptocurrency Information | No | Yes | Unknown | +| [MercadoBitcoin](https://www.mercadobitcoin.com.br/api-doc/) | Brazilian Cryptocurrency Information | No | Yes | Unknown | | [Messari](https://messari.io/api) | Provides API endpoints for thousands of crypto assets | No | Yes | Unknown | | [Nexchange](https://nexchange2.docs.apiary.io/) | Automated cryptocurrency exchange service | No | No | Yes | | [Nomics](https://nomics.com/docs/) | Historical and realtime cryptocurrency prices and market data | `apiKey` | Yes | Yes | From 126bead53fbb803fbb3548993cdad945562f0353 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:01:51 -0300 Subject: [PATCH 186/315] Update Poloniex, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 740a646a..a6d01a03 100644 --- a/README.md +++ b/README.md @@ -445,7 +445,7 @@ API | Description | Auth | HTTPS | CORS | | [Nomics](https://nomics.com/docs/) | Historical and realtime cryptocurrency prices and market data | `apiKey` | Yes | Yes | | [NovaDax](https://doc.novadax.com/en-US/#introduction) | NovaDAX API to access all market data, trading management endpoints | `apiKey` | Yes | Unknown | | [OKEx](https://www.okex.com/docs/) | Cryptocurrency exchange based in Seychelles | `apiKey` | Yes | Unknown | -| [Poloniex](https://poloniex.com/support/api/) | US based digital asset exchange | `apiKey` | Yes | Unknown | +| [Poloniex](https://docs.poloniex.com) | US based digital asset exchange | `apiKey` | Yes | Unknown | | [Solana JSON RPC](https://docs.solana.com/developing/clients/jsonrpc-api) | Provides various endpoints to interact with the Solana Blockchain | No | Yes | Unknown | | [Technical Analysis](https://technical-analysis-api.com) | Cryptocurrency prices and technical analysis | `apiKey` | Yes | No | | [VALR](https://docs.valr.com/) | Cryptocurrency Exchange based in South Africa | `apiKey` | Yes | Unknown | From 196c7bd3c216590f3b02a8c4b21fddf9e4fbb1a1 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:03:00 -0300 Subject: [PATCH 187/315] Remove Wazirx, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a6d01a03..1d40523c 100644 --- a/README.md +++ b/README.md @@ -449,7 +449,6 @@ API | Description | Auth | HTTPS | CORS | | [Solana JSON RPC](https://docs.solana.com/developing/clients/jsonrpc-api) | Provides various endpoints to interact with the Solana Blockchain | No | Yes | Unknown | | [Technical Analysis](https://technical-analysis-api.com) | Cryptocurrency prices and technical analysis | `apiKey` | Yes | No | | [VALR](https://docs.valr.com/) | Cryptocurrency Exchange based in South Africa | `apiKey` | Yes | Unknown | -| [Wazirx](https://wazirx.github.io/) | Cryptocurrencies Exchange | `apiKey` | Yes | Unknown | | [WorldCoinIndex](https://www.worldcoinindex.com/apiservice) | Cryptocurrencies Prices | `apiKey` | Yes | Unknown | | [ZMOK](https://zmok.io) | Ethereum JSON RPC API and Web3 provider | No | Yes | Unknown | From 69a4960b67c75b21d6bb9e3c69f281dde6aa419c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:05:50 -0300 Subject: [PATCH 188/315] Update US Autocomplete, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d40523c..cb64805f 100644 --- a/README.md +++ b/README.md @@ -481,7 +481,7 @@ API | Description | Auth | HTTPS | CORS | | [Lob.com](https://lob.com/) | US Address Verification | `apiKey` | Yes | Unknown | | [Postman Echo](https://www.postman-echo.com) | Test api server to receive and return value from HTTP method | No | Yes | Unknown | | [PurgoMalum](http://www.purgomalum.com) | Content validator against profanity & obscenity | No | No | Unknown | -| [US Autocomplete](https://smartystreets.com/docs/cloud/us-autocomplete-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | +| [US Autocomplete](https://www.smarty.com/docs/cloud/us-autocomplete-pro-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | | [US Extract](https://smartystreets.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | | [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | From 506fa13f732675a998828c7850ae1288f477ab88 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:08:04 -0300 Subject: [PATCH 189/315] Update US Extract, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb64805f..9e2a6110 100644 --- a/README.md +++ b/README.md @@ -482,7 +482,7 @@ API | Description | Auth | HTTPS | CORS | | [Postman Echo](https://www.postman-echo.com) | Test api server to receive and return value from HTTP method | No | Yes | Unknown | | [PurgoMalum](http://www.purgomalum.com) | Content validator against profanity & obscenity | No | No | Unknown | | [US Autocomplete](https://www.smarty.com/docs/cloud/us-autocomplete-pro-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | -| [US Extract](https://smartystreets.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | +| [US Extract](https://www.smarty.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | | [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | From 749ba9c421765462bd795760011c1c408421b9fd Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:09:42 -0300 Subject: [PATCH 190/315] Update US Street Address, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e2a6110..df8963d6 100644 --- a/README.md +++ b/README.md @@ -483,7 +483,7 @@ API | Description | Auth | HTTPS | CORS | | [PurgoMalum](http://www.purgomalum.com) | Content validator against profanity & obscenity | No | No | Unknown | | [US Autocomplete](https://www.smarty.com/docs/cloud/us-autocomplete-pro-api) | Enter address data quickly with real-time address suggestions | `apiKey` | Yes | Yes | | [US Extract](https://www.smarty.com/products/apis/us-extract-api) | Extract postal addresses from any text including emails | `apiKey` | Yes | Yes | -| [US Street Address](https://smartystreets.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | +| [US Street Address](https://www.smarty.com/docs/cloud/us-street-api) | Validate and append data for any US postal address | `apiKey` | Yes | Yes | | [vatlayer](https://vatlayer.com/documentation) | VAT number validation | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** From 6b4b2b0a0a3738db6fd00265b339ca246403b328 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:13:27 -0300 Subject: [PATCH 191/315] Remove OOPSpam, it's not free --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index df8963d6..7d16cf30 100644 --- a/README.md +++ b/README.md @@ -573,7 +573,6 @@ API | Description | Auth | HTTPS | CORS | | [NetworkCalc](https://networkcalc.com/api/docs) | Network calculators, including subnets, DNS, binary, and security tools | No | Yes | Yes | | [npm Registry](https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md) | Query information about your favorite Node.js libraries programatically | No | Yes | Unknown | | [OneSignal](https://documentation.onesignal.com/docs/onesignal-api) | Self-serve customer engagement solution for Push Notifications, Email, SMS & In-App | `apiKey` | Yes | Unknown | -| [OOPSpam](https://oopspam.com/) | Multiple spam filtering service | No | Yes | Yes | | [Open Page Rank](https://www.domcop.com/openpagerank/) | API for calculating and comparing metrics of different websites using Page Rank algorithm | `apiKey` | Yes | Unknown | | [OpenAPIHub](https://hub.openapihub.com/) | The All-in-one API Platform | `X-Mashape-Key` | Yes | Unknown | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | From edb0e773424cd617c262ad5f14b4fce96ca74830 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:15:06 -0300 Subject: [PATCH 192/315] Remove Plino, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7d16cf30..fc5141eb 100644 --- a/README.md +++ b/README.md @@ -578,7 +578,6 @@ API | Description | Auth | HTTPS | CORS | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | | [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Yes | | [PageCDN](https://pagecdn.com/docs/public-api) | Public API for javascript, css and font libraries on PageCDN | `apiKey` | Yes | Yes | -| [Plino](https://plino.herokuapp.com/) | An intelligent spam filtering system | No | Yes | No | | [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | | [ProxyKingdom](https://proxykingdom.com) | Rotating Proxy API that produces a working proxy on every request | `apiKey` | Yes | Yes | From 31169e7064edaf4698f30ed6263c59b692bc4e20 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:19:05 -0300 Subject: [PATCH 193/315] Update Postman, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fc5141eb..7601c271 100644 --- a/README.md +++ b/README.md @@ -578,7 +578,7 @@ API | Description | Auth | HTTPS | CORS | | [OpenGraphr](https://opengraphr.com/docs/1.0/overview) | Really simple API to retrieve Open Graph data from an URL | `apiKey` | Yes | Unknown | | [oyyi](https://oyyi.xyz/docs/1.0) | API for Fake Data, image/video conversion, optimization, pdf optimization and thumbnail generation | No | Yes | Yes | | [PageCDN](https://pagecdn.com/docs/public-api) | Public API for javascript, css and font libraries on PageCDN | `apiKey` | Yes | Yes | -| [Postman](https://docs.api.getpostman.com/) | Tool for testing APIs | `apiKey` | Yes | Unknown | +| [Postman](https://www.postman.com/postman/workspace/postman-public-workspace/documentation/12959542-c8142d51-e97c-46b6-bd77-52bb66712c9a) | Tool for testing APIs | `apiKey` | Yes | Unknown | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | | [ProxyKingdom](https://proxykingdom.com) | Rotating Proxy API that produces a working proxy on every request | `apiKey` | Yes | Yes | | [Pusher Beams](https://pusher.com/beams) | Push notifications for Android & iOS | `apiKey` | Yes | Unknown | From 516d4cfa67d5903d8053f278f4fe7acb6e395a67 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:21:25 -0300 Subject: [PATCH 194/315] Update QR Code, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7601c271..c249f868 100644 --- a/README.md +++ b/README.md @@ -582,7 +582,7 @@ API | Description | Auth | HTTPS | CORS | | [ProxyCrawl](https://proxycrawl.com) | Scraping and crawling anticaptcha service | `apiKey` | Yes | Unknown | | [ProxyKingdom](https://proxykingdom.com) | Rotating Proxy API that produces a working proxy on every request | `apiKey` | Yes | Yes | | [Pusher Beams](https://pusher.com/beams) | Push notifications for Android & iOS | `apiKey` | Yes | Unknown | -| [QR code](http://qrtag.net/api/) | Create an easy to read QR code and URL shortener | No | Yes | Yes | +| [QR code](https://www.qrtag.net/api/) | Create an easy to read QR code and URL shortener | No | Yes | Yes | | [QR code](http://goqr.me/api/) | Generate and decode / read QR code graphics | No | Yes | Unknown | | [Qrcode Monkey](https://www.qrcode-monkey.com/qr-code-api-with-logo/) | Integrate custom and unique looking QR codes into your system or workflow | No | Yes | Unknown | | [QuickChart](https://quickchart.io/) | Generate chart and graph images | No | Yes | Yes | From 0b4e10cad2f6fe624565f210952d3254101f4c3d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:26:57 -0300 Subject: [PATCH 195/315] Update Sheetsu, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c249f868..bbe282db 100644 --- a/README.md +++ b/README.md @@ -600,7 +600,7 @@ API | Description | Auth | HTTPS | CORS | | [ScreenshotAPI.net](https://screenshotapi.net/) | Create pixel-perfect website screenshots | `apiKey` | Yes | Yes | | [Serialif Color](https://color.serialif.com/) | Color conversion, complementary, grayscale and contrasted text | No | Yes | No | | [serpstack](https://serpstack.com/) | Real-Time & Accurate Google Search Results API | `apiKey` | Yes | Yes | -| [Sheetsu](https://docs.sheetsu.com/#welcome) | Easy google sheets integration | `apiKey` | Yes | Unknown | +| [Sheetsu](https://sheetsu.com/) | Easy google sheets integration | `apiKey` | Yes | Unknown | | [SHOUTCLOUD](http://shoutcloud.io/) | ALL-CAPS AS A SERVICE | No | No | Unknown | | [Sonar](https://github.com/Cgboal/SonarSearch) | Project Sonar DNS Enumeration API | No | Yes | Yes | | [SonarQube](https://sonarcloud.io/web_api) | SonarQube REST APIs to detect bugs, code smells & security vulnerabilities | `OAuth` | Yes | Unknown | From ad3b08abd5d82672ccaab7c255eb6805d9cae3c7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:28:58 -0300 Subject: [PATCH 196/315] Remove Trending-Github, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index bbe282db..44f7c70e 100644 --- a/README.md +++ b/README.md @@ -607,7 +607,6 @@ API | Description | Auth | HTTPS | CORS | | [StackExchange](https://api.stackexchange.com/) | Q&A forum for developers | `OAuth` | Yes | Unknown | | [Statically](https://statically.io/) | A free CDN for developers | No | Yes | Yes | | [Supportivekoala](https://developers.supportivekoala.com/) | Autogenerate images with template | `apiKey` | Yes | Yes | -| [Trending-Github](https://docs.trending-github.com) | Discover what is currently trending on github | No | Yes | Yes | | [Tyk](https://tyk.io/open-source/) | Api and service management platform | `apiKey` | Yes | Yes | | [Wandbox](https://github.com/melpon/wandbox/blob/master/kennel2/API.rst) | Code compiler supporting 35+ languages mentioned at wandbox.org | No | Yes | Unknown | | [WebScraping.AI](https://webscraping.ai/) | Web Scraping API with built-in proxies and JS rendering | `apiKey` | Yes | Yes | From b97d57444079355e1533eb47f98e1221bb999000 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:30:43 -0300 Subject: [PATCH 197/315] Update Wiktionary, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 44f7c70e..b84308b9 100644 --- a/README.md +++ b/README.md @@ -627,7 +627,7 @@ API | Description | Auth | HTTPS | CORS | | [OwlBot](https://owlbot.info/) | Definitions with example sentence and photo if available | `apiKey` | Yes | Yes | | [Oxford](https://developer.oxforddictionaries.com/) | Dictionary Data | `apiKey` | Yes | No | | [Synonyms](https://www.synonyms.com/synonyms_api.php) | Synonyms, thesaurus and antonyms information for any given word | `apiKey` | Yes | Unknown | -| [Wiktionary](https://wiktionary.org/w/api.php) | Collaborative dictionary data | No | Yes | Yes | +| [Wiktionary](https://en.wiktionary.org/w/api.php) | Collaborative dictionary data | No | Yes | Yes | | [Wordnik](https://developer.wordnik.com) | Dictionary Data | `apiKey` | Yes | Unknown | | [Words](https://www.wordsapi.com/docs/) | Definitions and synonyms for more than 150,000 words | `apiKey` | Yes | Unknown | From e25205de26a2f4b834600b590f57848f0dc506bf Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:33:51 -0300 Subject: [PATCH 198/315] Update Sendgrid, new linke --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b84308b9..48f3f0c2 100644 --- a/README.md +++ b/README.md @@ -681,7 +681,7 @@ API | Description | Auth | HTTPS | CORS | | [MailboxValidator](https://www.mailboxvalidator.com/api-email-free) | Validate email address to improve deliverability | `apiKey` | Yes | Unknown | | [MailCheck.ai](https://www.mailcheck.ai/#documentation) | Prevent users to sign up with temporary email addresses | No | Yes | Unknown | | [Mailtrap](https://mailtrap.docs.apiary.io/#) | A service for the safe testing of emails sent from the development and staging environments | `apiKey` | Yes | Unknown | -| [Sendgrid](https://sendgrid.com/docs/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | +| [Sendgrid](https://docs.sendgrid.com/api-reference/) | A cloud-based SMTP provider that allows you to send emails without having to maintain email servers | `apiKey` | Yes | Unknown | | [Sendinblue](https://developers.sendinblue.com/docs) | A service that provides solutions relating to marketing and/or transactional email and/or SMS | `apiKey` | Yes | Unknown | | [Verifier](https://verifier.meetchopra.com/docs#/) | Verifies that a given email is real | `apiKey` | Yes | Yes | From 494e5977b302c428c734b67c05803277c8b4c0c9 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:37:37 -0300 Subject: [PATCH 199/315] Remove Fun Fact, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 48f3f0c2..e7e605e5 100644 --- a/README.md +++ b/README.md @@ -692,7 +692,6 @@ API | Description | Auth | HTTPS | CORS | | [chucknorris.io](https://api.chucknorris.io) | JSON API for hand curated Chuck Norris jokes | No | Yes | Unknown | | [Corporate Buzz Words](https://github.com/sameerkumar18/corporate-bs-generator-api) | REST API for Corporate Buzz Words | No | Yes | Yes | | [Excuser](https://excuser.herokuapp.com/) | Get random excuses for various situations | No | Yes | Unknown | -| [Fun Fact](https://ffa.aakhilv.me) | A simple HTTPS api that can randomly select and return a fact from the FFA database | No | Yes | Yes | | [Imgflip](https://imgflip.com/api) | Gets an array of popular memes | No | Yes | Unknown | | [Meme Maker](https://mememaker.github.io/API/) | REST API for create your own meme | No | Yes | Unknown | | [NaMoMemes](https://github.com/theIYD/NaMoMemes) | Memes on Narendra Modi | No | Yes | Unknown | From 3a0badf0bc4ca158ac26a867ed5cc1fd3c44fdff Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:46:06 -0300 Subject: [PATCH 200/315] Update AirVisual, new link and name to IQAir --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7e605e5..781e4cd9 100644 --- a/README.md +++ b/README.md @@ -702,7 +702,6 @@ API | Description | Auth | HTTPS | CORS | ### Environment API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [AirVisual](https://airvisual.com/api) | Air quality and weather data | `apiKey` | Yes | Unknown | | [BreezoMeter Pollen](https://docs.breezometer.com/api-documentation/pollen-api/v2/) | Daily Forecast pollen conditions data for a specific location | `apiKey` | Yes | Unknown | | [Carbon Interface](https://docs.carboninterface.com/) | API to calculate carbon (C02) emissions estimates for common C02 emitting activities | `apiKey` | Yes | Yes | | [Climatiq](https://docs.climatiq.io) | Calculate the environmental footprint created by a broad range of emission-generating activities | `apiKey` | Yes | Yes | @@ -710,6 +709,7 @@ API | Description | Auth | HTTPS | CORS | | [CO2 Offset](https://co2offset.io/api.html) | API calculates and validates the carbon footprint | No | Yes | Unknown | | [Danish data service Energi](https://www.energidataservice.dk/) | Open energy data from Energinet to society | No | Yes | Unknown | | [GrünstromIndex](https://www.corrently.de/hintergrund/gruenstromindex/index.html) | Green Power Index for Germany (Grünstromindex/GSI) | No | No | Yes | +| [IQAir](https://www.iqair.com/air-pollution-data-api) | Air quality and weather data | `apiKey` | Yes | Unknown | | [La Data Verte](https://ladataverte.fr) | Aggregation of multiple environmental indicators (CO2 emissions, Average temperature, etc) | No | Yes | Unknown | | [Luchtmeetnet](https://api-docs.luchtmeetnet.nl/) | Predicted and actual air quality components for The Netherlands (RIVM) | No | Yes | Unknown | | [National Grid ESO](https://data.nationalgrideso.com/) | Open data from Great Britain’s Electricity System Operator | No | Yes | Unknown | From 58679ddacabec56cabc805b238a32342447095a1 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:47:52 -0300 Subject: [PATCH 201/315] =?UTF-8?q?Update=20Gr=C3=BCnstromIndex,=20new=20l?= =?UTF-8?q?ink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 781e4cd9..b6c6f8c3 100644 --- a/README.md +++ b/README.md @@ -708,7 +708,7 @@ API | Description | Auth | HTTPS | CORS | | [Cloverly](https://www.cloverly.com/carbon-offset-documentation) | API calculates the impact of common carbon-intensive activities in real time | `apiKey` | Yes | Unknown | | [CO2 Offset](https://co2offset.io/api.html) | API calculates and validates the carbon footprint | No | Yes | Unknown | | [Danish data service Energi](https://www.energidataservice.dk/) | Open energy data from Energinet to society | No | Yes | Unknown | -| [GrünstromIndex](https://www.corrently.de/hintergrund/gruenstromindex/index.html) | Green Power Index for Germany (Grünstromindex/GSI) | No | No | Yes | +| [GrünstromIndex](https://gruenstromindex.de/) | Green Power Index for Germany (Grünstromindex/GSI) | No | No | Yes | | [IQAir](https://www.iqair.com/air-pollution-data-api) | Air quality and weather data | `apiKey` | Yes | Unknown | | [La Data Verte](https://ladataverte.fr) | Aggregation of multiple environmental indicators (CO2 emissions, Average temperature, etc) | No | Yes | Unknown | | [Luchtmeetnet](https://api-docs.luchtmeetnet.nl/) | Predicted and actual air quality components for The Netherlands (RIVM) | No | Yes | Unknown | From 36ab3ad3ef087f8bdd36e4dc634300f08447b917 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:50:04 -0300 Subject: [PATCH 202/315] Remove La Data Verte, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b6c6f8c3..7e3a65cf 100644 --- a/README.md +++ b/README.md @@ -710,7 +710,6 @@ API | Description | Auth | HTTPS | CORS | | [Danish data service Energi](https://www.energidataservice.dk/) | Open energy data from Energinet to society | No | Yes | Unknown | | [GrünstromIndex](https://gruenstromindex.de/) | Green Power Index for Germany (Grünstromindex/GSI) | No | No | Yes | | [IQAir](https://www.iqair.com/air-pollution-data-api) | Air quality and weather data | `apiKey` | Yes | Unknown | -| [La Data Verte](https://ladataverte.fr) | Aggregation of multiple environmental indicators (CO2 emissions, Average temperature, etc) | No | Yes | Unknown | | [Luchtmeetnet](https://api-docs.luchtmeetnet.nl/) | Predicted and actual air quality components for The Netherlands (RIVM) | No | Yes | Unknown | | [National Grid ESO](https://data.nationalgrideso.com/) | Open data from Great Britain’s Electricity System Operator | No | Yes | Unknown | | [OpenAQ](https://docs.openaq.org/) | Open air quality data | `apiKey` | Yes | Unknown | From b5be05dfdce058e61f1912ab87f78e9bb75480f5 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:54:23 -0300 Subject: [PATCH 203/315] Update Financial Modeling Prep, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e3a65cf..460a8f95 100644 --- a/README.md +++ b/README.md @@ -744,7 +744,7 @@ API | Description | Auth | HTTPS | CORS | | [Econdb](https://www.econdb.com/api/) | Global macroeconomic data | No | Yes | Yes | | [Fed Treasury](https://fiscaldata.treasury.gov/api-documentation/) | U.S. Department of the Treasury Data | No | Yes | Unknown | | [Finage](https://finage.co.uk) | Finage is a stock, currency, cryptocurrency, indices, and ETFs real-time & historical data provider | `apiKey` | Yes | Unknown | -| [Financial Modeling Prep](https://financialmodelingprep.com/developer/docs/) | Realtime and historical stock data | `apiKey` | Yes | Unknown | +| [Financial Modeling Prep](https://site.financialmodelingprep.com/developer/docs) | Realtime and historical stock data | `apiKey` | Yes | Unknown | | [Finnhub](https://finnhub.io/docs/api) | Real-Time RESTful APIs and Websocket for Stocks, Currencies, and Crypto | `apiKey` | Yes | Unknown | | [FRED](https://fred.stlouisfed.org/docs/api/fred/) | Economic data from the Federal Reserve Bank of St. Louis | `apiKey` | Yes | Yes | | [Front Accounting APIs](https://frontaccounting.com/fawiki/index.php?n=Devel.SimpleAPIModule) | Front accounting is multilingual and multicurrency software for small businesses | `OAuth` | Yes | Yes | From be7f605f3e14b4c37c89c56c22aa8722fde4bb87 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:55:59 -0300 Subject: [PATCH 204/315] Update IGDB.com, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 460a8f95..10a74f77 100644 --- a/README.md +++ b/README.md @@ -857,7 +857,7 @@ API | Description | Auth | HTTPS | CORS | | [Hypixel](https://api.hypixel.net/) | Hypixel player stats | `apiKey` | Yes | Unknown | | [Hyrule Compendium](https://github.com/gadhagod/Hyrule-Compendium-API) | Data on all interactive items from The Legend of Zelda: BOTW | No | Yes | Unknown | | [Hytale](https://hytale-api.com/) | Hytale blog posts and jobs | No | Yes | Unknown | -| [IGDB.com](https://api.igdb.com/) | Video Game Database | `apiKey` | Yes | Unknown | +| [IGDB.com](https://api-docs.igdb.com) | Video Game Database | `apiKey` | Yes | Unknown | | [JokeAPI](https://sv443.net/jokeapi/v2/) | Programming, Miscellaneous and Dark Jokes | No | Yes | Yes | | [Jokes One](https://jokes.one/api/joke/) | Joke of the day and large category of jokes accessible via REST API | `apiKey` | Yes | Yes | | [Jservice](http://jservice.io) | Jeopardy Question Database | No | No | Unknown | From 66d916f351d6c5f8ee020b99089edbc98b3deca7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:57:38 -0300 Subject: [PATCH 205/315] Update GeoJS, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10a74f77..5da46787 100644 --- a/README.md +++ b/README.md @@ -934,7 +934,7 @@ API | Description | Auth | HTTPS | CORS | | [GeoDataSource](https://www.geodatasource.com/web-service) | Geocoding of city name by using latitude and longitude coordinates | `apiKey` | Yes | Unknown | | [GeoDB Cities](http://geodb-cities-api.wirefreethought.com/) | Get global city, region, and country data | `apiKey` | Yes | Unknown | | [GeographQL](https://geographql.netlify.app) | A Country, State, and City GraphQL API | No | Yes | Yes | -| [GeoJS](https://geojs.io/) | IP geolocation with ChatOps integration | No | Yes | Yes | +| [GeoJS](https://www.geojs.io/) | IP geolocation with ChatOps integration | No | Yes | Yes | | [Geokeo](https://geokeo.com) | Geokeo geocoding service- with 2500 free api requests daily | No | Yes | Yes | | [GeoNames](http://www.geonames.org/export/web-services.html) | Place names and other geographical data | No | No | Unknown | | [geoPlugin](https://www.geoplugin.com) | IP geolocation and currency conversion | No | Yes | Yes | From e524842dfebbf37fd2fafd89e0ed5a8b35eb6ad9 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 09:59:57 -0300 Subject: [PATCH 206/315] Update HelloSalut, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5da46787..f44d5173 100644 --- a/README.md +++ b/README.md @@ -941,7 +941,7 @@ API | Description | Auth | HTTPS | CORS | | [Google Earth Engine](https://developers.google.com/earth-engine/) | A cloud-based platform for planetary-scale environmental data analysis | `apiKey` | Yes | Unknown | | [Google Maps](https://developers.google.com/maps/) | Create/customize digital maps based on Google Maps data | `apiKey` | Yes | Unknown | | [Graph Countries](https://github.com/lennertVanSever/graphcountries) | Country-related data like currencies, languages, flags, regions+subregions and bordering countries | No | Yes | Unknown | -| [HelloSalut](https://www.fourtonfish.com/hellosalut/hello/) | Get hello translation following user language | No | Yes | Unknown | +| [HelloSalut](https://fourtonfish.com/project/hellosalut-api/) | Get hello translation following user language | No | Yes | Unknown | | [HERE Maps](https://developer.here.com) | Create/customize digital maps based on HERE Maps data | `apiKey` | Yes | Unknown | | [Hong Kong GeoData Store](https://geodata.gov.hk/gs/) | API for accessing geo-data of Hong Kong | No | Yes | Unknown | | [IBGE](https://servicodados.ibge.gov.br/api/docs/) | Aggregate services of IBGE (Brazilian Institute of Geography and Statistics) | No | Yes | Unknown | From b31a0f6426bb906890952a0ab2325da64f405156 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:03:08 -0300 Subject: [PATCH 207/315] Update IPInfoDB, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f44d5173..176babfc 100644 --- a/README.md +++ b/README.md @@ -956,7 +956,7 @@ API | Description | Auth | HTTPS | CORS | | [ipapi.com](https://ipapi.com/) | Real-time Geolocation & Reverse IP Lookup REST API | `apiKey` | Yes | Unknown | | [IPGEO](https://api.techniknews.net/ipgeo/) | Unlimited free IP Address API with useful information | No | Yes | Unknown | | [ipgeolocation](https://ipgeolocation.io/) | IP Geolocation AP with free plan 30k requests per month | `apiKey` | Yes | Yes | -| [IPInfoDB](https://ipinfodb.com/api) | Free Geolocation tools and APIs for country, region, city and time zone lookup by IP address | `apiKey` | Yes | Unknown | +| [IPInfoDB](https://www.ipinfodb.com/api) | Free Geolocation tools and APIs for country, region, city and time zone lookup by IP address | `apiKey` | Yes | Unknown | | [Kakao Maps](https://apis.map.kakao.com) | Kakao Maps provide multiple APIs for Korean maps | `apiKey` | Yes | Unknown | | [keycdn IP Location Finder](https://tools.keycdn.com/geo) | Get the IP geolocation data through the simple REST API. All the responses are JSON encoded | `apiKey` | Yes | Unknown | | [LocationIQ](https://locationiq.org/docs/) | Provides forward/reverse geocoding and batch geocoding | `apiKey` | Yes | Yes | From e06708b077209312e8a2d5aa06c8f86f14427693 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:05:10 -0300 Subject: [PATCH 208/315] Update Mapbox, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 176babfc..f1bf06fb 100644 --- a/README.md +++ b/README.md @@ -961,7 +961,7 @@ API | Description | Auth | HTTPS | CORS | | [keycdn IP Location Finder](https://tools.keycdn.com/geo) | Get the IP geolocation data through the simple REST API. All the responses are JSON encoded | `apiKey` | Yes | Unknown | | [LocationIQ](https://locationiq.org/docs/) | Provides forward/reverse geocoding and batch geocoding | `apiKey` | Yes | Yes | | [Longdo Map](https://map.longdo.com/docs/) | Interactive map with detailed places and information portal in Thailand | `apiKey` | Yes | Yes | -| [Mapbox](https://www.mapbox.com/developers/) | Create/customize beautiful digital maps | `apiKey` | Yes | Unknown | +| [Mapbox](https://docs.mapbox.com/) | Create/customize beautiful digital maps | `apiKey` | Yes | Unknown | | [MapQuest](https://developer.mapquest.com/) | To access tools and resources to map the world | `apiKey` | Yes | No | Yes | [Mexico](https://github.com/IcaliaLabs/sepomex) | Mexico RESTful zip codes API | No | Yes | Unknown | | [Nominatim](https://nominatim.org/release-docs/latest/api/Overview/) | Provides worldwide forward / reverse geocoding | No | Yes | Yes | From 301786930699f88ddcaab898c1ca614da5b964b4 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:10:24 -0300 Subject: [PATCH 209/315] Update One Map, Singapore, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f1bf06fb..ff047f61 100644 --- a/README.md +++ b/README.md @@ -965,7 +965,7 @@ API | Description | Auth | HTTPS | CORS | | [MapQuest](https://developer.mapquest.com/) | To access tools and resources to map the world | `apiKey` | Yes | No | Yes | [Mexico](https://github.com/IcaliaLabs/sepomex) | Mexico RESTful zip codes API | No | Yes | Unknown | | [Nominatim](https://nominatim.org/release-docs/latest/api/Overview/) | Provides worldwide forward / reverse geocoding | No | Yes | Yes | -| [One Map, Singapore](https://docs.onemap.sg/) | Singapore Land Authority REST API services for Singapore addresses | `apiKey` | Yes | Unknown | +| [One Map, Singapore](https://www.onemap.gov.sg/docs/) | Singapore Land Authority REST API services for Singapore addresses | `apiKey` | Yes | Unknown | | [OnWater](https://onwater.io/) | Determine if a lat/lon is on water or land | No | Yes | Unknown | | [Open Topo Data](https://www.opentopodata.org) | Elevation and ocean depth for a latitude and longitude | No | Yes | No | | [OpenCage](https://opencagedata.com) | Forward and reverse geocoding using open data | `apiKey` | Yes | Yes | From e9ca14e96460c3174d396e6c91bc312746acae02 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:13:25 -0300 Subject: [PATCH 210/315] Update Queimadas INPE, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff047f61..b078d4af 100644 --- a/README.md +++ b/README.md @@ -976,7 +976,7 @@ API | Description | Auth | HTTPS | CORS | | [Postali](https://postali.app/api) | Mexico Zip Codes API | No | Yes | Yes | | [PostcodeData.nl](http://api.postcodedata.nl/v1/postcode/?postcode=1211EP&streetnumber=60&ref=domeinnaam.nl&type=json) | Provide geolocation data based on postcode for Dutch addresses | No | No | Unknown | | [Postcodes.io](https://postcodes.io) | Postcode lookup & Geolocation for the UK | No | Yes | Yes | -| [Queimadas INPE](https://queimadas.dgi.inpe.br/queimadas/dados-abertos) | Access to heat focus data (probable wildfire) | No | Yes | Unknown | +| [Queimadas INPE](https://queimadas.dgi.inpe.br/queimadas/dados-abertos/) | Access to heat focus data (probable wildfire) | No | Yes | Unknown | | [REST Countries](https://restcountries.com) | Get information about countries via a RESTful API | No | Yes | Yes | | [RoadGoat Cities](https://www.roadgoat.com/business/cities-api) | Cities content & photos API | `apiKey` | Yes | No | | [Rwanda Locations](https://rapidapi.com/victorkarangwa4/api/rwanda) | Rwanda Provences, Districts, Cities, Capital City, Sector, cells, villages and streets | No | Yes | Unknown | From c2d8975dd06ce02989014cc7745b0e22352e84e0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:14:55 -0300 Subject: [PATCH 211/315] Update SpotSense, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b078d4af..0fa331e5 100644 --- a/README.md +++ b/README.md @@ -980,7 +980,7 @@ API | Description | Auth | HTTPS | CORS | | [REST Countries](https://restcountries.com) | Get information about countries via a RESTful API | No | Yes | Yes | | [RoadGoat Cities](https://www.roadgoat.com/business/cities-api) | Cities content & photos API | `apiKey` | Yes | No | | [Rwanda Locations](https://rapidapi.com/victorkarangwa4/api/rwanda) | Rwanda Provences, Districts, Cities, Capital City, Sector, cells, villages and streets | No | Yes | Unknown | -| [SpotSense](https://www.spotsense.io) | Add location based interactions to your mobile app | `apiKey` | Yes | Unknown | +| [SpotSense](https://spotsense.io/) | Add location based interactions to your mobile app | `apiKey` | Yes | Unknown | | [Telize](https://rapidapi.com/fcambus/api/telize/) | Telize offers location information from any IP address | `apiKey` | Yes | Yes | | [TomTom](https://developer.tomtom.com/) | Maps, Directions, Places and Traffic APIs | `apiKey` | Yes | Yes | | [Uebermaps](https://uebermaps.com/api/v2) | Discover and share maps with friends | `apiKey` | Yes | Unknown | From bccdd7817b2aa9056951157f2b81a2c43f180179 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:16:04 -0300 Subject: [PATCH 212/315] Update US ZipCode, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fa331e5..cf2efb6b 100644 --- a/README.md +++ b/README.md @@ -984,7 +984,7 @@ API | Description | Auth | HTTPS | CORS | | [Telize](https://rapidapi.com/fcambus/api/telize/) | Telize offers location information from any IP address | `apiKey` | Yes | Yes | | [TomTom](https://developer.tomtom.com/) | Maps, Directions, Places and Traffic APIs | `apiKey` | Yes | Yes | | [Uebermaps](https://uebermaps.com/api/v2) | Discover and share maps with friends | `apiKey` | Yes | Unknown | -| [US ZipCode](https://smartystreets.com/docs/cloud/us-zipcode-api) | Validate and append data for any US ZipCode | `apiKey` | Yes | Yes | +| [US ZipCode](https://www.smarty.com/docs/cloud/us-zipcode-api) | Validate and append data for any US ZipCode | `apiKey` | Yes | Yes | | [Utah AGRC](https://api.mapserv.utah.gov) | Utah Web API for geocoding Utah addresses | `apiKey` | Yes | Unknown | | [ViaCep](https://viacep.com.br) | Brazil RESTful zip codes API | No | Yes | Unknown | | [What3Words](https://w3w.co) | Three words as rememberable and unique coordinates worldwide | `apiKey` | Yes | Unknown | From bbf7c9ffd49dd07f6e8ef66450d91dffe35f09dd Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:17:11 -0300 Subject: [PATCH 213/315] Update What3Words, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf2efb6b..7e0fa87a 100644 --- a/README.md +++ b/README.md @@ -987,7 +987,7 @@ API | Description | Auth | HTTPS | CORS | | [US ZipCode](https://www.smarty.com/docs/cloud/us-zipcode-api) | Validate and append data for any US ZipCode | `apiKey` | Yes | Yes | | [Utah AGRC](https://api.mapserv.utah.gov) | Utah Web API for geocoding Utah addresses | `apiKey` | Yes | Unknown | | [ViaCep](https://viacep.com.br) | Brazil RESTful zip codes API | No | Yes | Unknown | -| [What3Words](https://w3w.co) | Three words as rememberable and unique coordinates worldwide | `apiKey` | Yes | Unknown | +| [What3Words](https://what3words.com) | Three words as rememberable and unique coordinates worldwide | `apiKey` | Yes | Unknown | | [Yandex.Maps Geocoder](https://yandex.com/dev/maps/geocoder) | Use geocoding to get an object's coordinates from its address | `apiKey` | Yes | Unknown | | [ZipCodeAPI](https://www.zipcodeapi.com) | US zip code distance, radius and location API | `apiKey` | Yes | Unknown | | [Zippopotam.us](http://www.zippopotam.us) | Get information about place such as country, city, state, etc | No | No | Unknown | From a4f1a9f7695687f8103b0ac5496973baf281104d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:21:23 -0300 Subject: [PATCH 214/315] Update Bank Negara Malaysia Open Data, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e0fa87a..ce4771bc 100644 --- a/README.md +++ b/README.md @@ -997,7 +997,7 @@ API | Description | Auth | HTTPS | CORS | ### Government API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Bank Negara Malaysia Open Data](https://api.bnm.gov.my/) | Malaysia Central Bank Open Data | No | Yes | Unknown | +| [Bank Negara Malaysia Open Data](https://apikijangportal.bnm.gov.my/) | Malaysia Central Bank Open Data | No | Yes | Unknown | | [BCLaws](http://www.bclaws.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | | [Brazil](https://brasilapi.com.br/) | Community driven API for Brazil Public Data | No | Yes | Yes | | [Brazil Central Bank Open Data](https://dadosabertos.bcb.gov.br/) | Brazil Central Bank Open Data | No | Yes | Unknown | From 35d9d4fdaba0606c81ca781e19dd98f5fd06e5b2 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:23:33 -0300 Subject: [PATCH 215/315] Update BCLaws, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce4771bc..54f37d00 100644 --- a/README.md +++ b/README.md @@ -998,7 +998,7 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Bank Negara Malaysia Open Data](https://apikijangportal.bnm.gov.my/) | Malaysia Central Bank Open Data | No | Yes | Unknown | -| [BCLaws](http://www.bclaws.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | +| [BCLaws](https://www.bclaws.gov.bc.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | | [Brazil](https://brasilapi.com.br/) | Community driven API for Brazil Public Data | No | Yes | Yes | | [Brazil Central Bank Open Data](https://dadosabertos.bcb.gov.br/) | Brazil Central Bank Open Data | No | Yes | Unknown | | [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | Yes | Unknown | From 7b0f7567d5a12b1c1275ac00f9edb485d224e6e6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:34:19 -0300 Subject: [PATCH 216/315] Update businessUSA, new link and name to USA.gov --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54f37d00..1d7eb4a1 100644 --- a/README.md +++ b/README.md @@ -1004,7 +1004,6 @@ API | Description | Auth | HTTPS | CORS | | [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | Yes | Unknown | | [Brazil Receita WS](https://www.receitaws.com.br/) | Consult companies by CNPJ for Brazilian companies | No | Yes | Unknown | | [Brazilian Chamber of Deputies Open Data](https://dadosabertos.camara.leg.br/swagger/api.html) | Provides legislative information in Apis XML and JSON, as well as files in various formats | No | Yes | No | -| [BusinessUSA](https://business.usa.gov/developer) | Authoritative information on U.S. programs, events, services and more | `apiKey` | Yes | Unknown | | [Census.gov](https://www.census.gov/data/developers/data-sets.html) | The US Census Bureau provides various APIs and data sets on demographics and businesses | No | Yes | Unknown | | [City, Berlin](https://daten.berlin.de/) | Berlin(DE) City Open Data | No | Yes | Unknown | | [City, Gdańsk](https://ckan.multimediagdansk.pl/en) | Gdańsk (PL) City Open Data | No | Yes | Unknown | @@ -1088,6 +1087,7 @@ API | Description | Auth | HTTPS | CORS | | [UK Companies House](https://developer.company-information.service.gov.uk/) | UK Companies House Data from the UK government | `OAuth` | Yes | Unknown | | [UK government API catalogue](https://alphagov.github.io/api-catalogue) | APIs from UK government organisations | No | Yes | Unknown | | [US Presidential Election Data by TogaTech](https://uselection.togatech.org/api/) | Basic candidate data and live electoral vote counts for top two parties in US presidential election | No | Yes | No | +| [USA.gov](https://www.usa.gov/developer) | Authoritative information on U.S. programs, events, services and more | `apiKey` | Yes | Unknown | | [USAspending.gov](https://api.usaspending.gov/) | US federal spending data | No | Yes | Unknown | **[⬆ Back to Index](#index)** From 9ef30d6d68e39819d1fc5be06ff22d39f426bdba Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:36:40 -0300 Subject: [PATCH 217/315] Remove Open Government, Brazil, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1d7eb4a1..e680ea67 100644 --- a/README.md +++ b/README.md @@ -1038,7 +1038,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, Australia](https://www.data.gov.au/) | Australian Government Open Data | No | Yes | Unknown | | [Open Government, Austria](https://www.data.gv.at/) | Austria Government Open Data | No | Yes | Unknown | | [Open Government, Belgium](https://data.gov.be/) | Belgium Government Open Data | No | Yes | Unknown | -| [Open Government, Brazil](https://www.dados.gov.br/) | Brazilian Government Open Data | No | Yes | Unknown | | [Open Government, Canada](http://open.canada.ca/en) | Canadian Government Open Data | No | No | Unknown | | [Open Government, Colombia](https://www.dane.gov.co/) | Colombia Government Open Data | No | No | Unknown | | [Open Government, Croatia](https://data.gov.hr/en) | Croatia Government Open Data | No | Yes | Unknown | From 9e47b53a0973220a1203bff4c51ce1362570a201 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:41:06 -0300 Subject: [PATCH 218/315] Remove Open Government, Croatia, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e680ea67..33b23036 100644 --- a/README.md +++ b/README.md @@ -1040,7 +1040,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, Belgium](https://data.gov.be/) | Belgium Government Open Data | No | Yes | Unknown | | [Open Government, Canada](http://open.canada.ca/en) | Canadian Government Open Data | No | No | Unknown | | [Open Government, Colombia](https://www.dane.gov.co/) | Colombia Government Open Data | No | No | Unknown | -| [Open Government, Croatia](https://data.gov.hr/en) | Croatia Government Open Data | No | Yes | Unknown | | [Open Government, Cyprus](https://data.gov.cy/?language=en) | Cyprus Government Open Data | No | Yes | Unknown | | [Open Government, Czech Republic](https://data.gov.cz/english/) | Czech Republic Government Open Data | No | Yes | Unknown | | [Open Government, Denmark](https://www.opendata.dk/) | Denmark Government Open Data | No | Yes | Unknown | From 2afd8ef81e40271b263707910b76e5f4bdc9f527 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:46:41 -0300 Subject: [PATCH 219/315] Remove Diabetes, it's not free --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 33b23036..67ea91d8 100644 --- a/README.md +++ b/README.md @@ -1107,7 +1107,6 @@ API | Description | Auth | HTTPS | CORS | | [COVID-19 Tracker Sri Lanka](https://www.hpb.health.gov.lk/en/api-documentation) | Provides situation of the COVID-19 patients reported in Sri Lanka | No | Yes | Unknown | | [COVID-ID](https://data.covid19.go.id/public/api/prov.json) | Indonesian government Covid data per province | No | Yes | Yes | | [Dataflow Kit COVID-19](https://covid-19.dataflowkit.com) | COVID-19 live statistics into sites per hour | No | Yes | Unknown | -| [Diabetes](http://predictbgl.com/api/) | Logging and retrieving diabetes information | `OAuth` | No | Unknown | | [Healthcare.gov](https://www.healthcare.gov/developers/) | Educational content about the US Health Insurance Marketplace | No | Yes | Unknown | | [Humanitarian Data Exchange](https://data.humdata.org/) | Humanitarian Data Exchange (HDX) is open platform for sharing data across crises and organisations | No | Yes | Unknown | | [Infermedica](https://developer.infermedica.com/docs/) | NLP based symptom checker and patient triage API for health diagnosis from text | `apiKey` | Yes | Yes | From a5d20c08dd8b759fea38e1920a01cf6484ad16ef Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:48:47 -0300 Subject: [PATCH 220/315] Remove Lexigram, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67ea91d8..caaa140c 100644 --- a/README.md +++ b/README.md @@ -1112,7 +1112,7 @@ API | Description | Auth | HTTPS | CORS | | [Infermedica](https://developer.infermedica.com/docs/) | NLP based symptom checker and patient triage API for health diagnosis from text | `apiKey` | Yes | Yes | | [Kawal Corona](https://kawalcorona.com/api/) | ID COVID data, include death, positive case and recover | No | Yes | Unknown | | [LAPIS](https://cov-spectrum.ethz.ch/public) | SARS-CoV-2 genomic sequences from public sources | No | Yes | Yes | -| [Lexigram](https://docs.lexigram.io/v1/welcome) | NLP that extracts mentions of clinical concepts from text, gives access to clinical ontology | `apiKey` | Yes | Unknown | +| [Lexigram](https://docs.lexigram.io/) | NLP that extracts mentions of clinical concepts from text, gives access to clinical ontology | `apiKey` | Yes | Unknown | | [Makeup](http://makeup-api.herokuapp.com/) | Makeup Information | No | No | Unknown | | [Medicare](https://data.medicare.gov/developers) | Access to the data from the CMS - medicare.gov | `apiKey` | Yes | Unknown | | [MyVaccination](https://documenter.getpostman.com/view/16605343/Tzm8GG7u) | Vaccination data for Malaysia | No | Yes | Unknown | From a802101e3baec91823e3f2987e4ea2090732377c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:52:50 -0300 Subject: [PATCH 221/315] Update Medicare, new link and name to CMS.gov --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index caaa140c..2ae5f42f 100644 --- a/README.md +++ b/README.md @@ -1092,6 +1092,7 @@ API | Description | Auth | HTTPS | CORS | ### Health API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| +| [CMS.gov](https://data.cms.gov/provider-data/) | Access to the data from the CMS - medicare.gov | `apiKey` | Yes | Unknown | | [Coronavirus](https://pipedream.com/@pravin/http-api-for-latest-wuhan-coronavirus-data-2019-ncov-p_G6CLVM/readme) | HTTP API for Latest Covid-19 Data | No | Yes | Unknown | | [Coronavirus in the UK](https://coronavirus.data.gov.uk/details/developers-guide) | UK Government coronavirus data, including deaths and cases by region | No | Yes | Unknown | | [Covid Tracking Project](https://covidtracking.com/data/api/version-2) | Covid-19 data for the US | No | Yes | No | @@ -1114,7 +1115,6 @@ API | Description | Auth | HTTPS | CORS | | [LAPIS](https://cov-spectrum.ethz.ch/public) | SARS-CoV-2 genomic sequences from public sources | No | Yes | Yes | | [Lexigram](https://docs.lexigram.io/) | NLP that extracts mentions of clinical concepts from text, gives access to clinical ontology | `apiKey` | Yes | Unknown | | [Makeup](http://makeup-api.herokuapp.com/) | Makeup Information | No | No | Unknown | -| [Medicare](https://data.medicare.gov/developers) | Access to the data from the CMS - medicare.gov | `apiKey` | Yes | Unknown | | [MyVaccination](https://documenter.getpostman.com/view/16605343/Tzm8GG7u) | Vaccination data for Malaysia | No | Yes | Unknown | | [NPPES](https://npiregistry.cms.hhs.gov/registry/help-api) | National Plan & Provider Enumeration System, info on healthcare providers registered in US | No | Yes | Unknown | | [Nutritionix](https://developer.nutritionix.com/) | Worlds largest verified nutrition database | `apiKey` | Yes | Unknown | From 3a6ca86e0eca982106c10d61790814919c6986b3 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:55:14 -0300 Subject: [PATCH 222/315] Update Jooble, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ae5f42f..0a7aad74 100644 --- a/README.md +++ b/README.md @@ -1138,7 +1138,7 @@ API | Description | Auth | HTTPS | CORS | | [GraphQL Jobs](https://graphql.jobs/docs/api/) | Jobs with GraphQL | No | Yes | Yes | | [Indeed](https://developer.indeed.com/) | Jobs search engine | `OAuth` | Yes | Unknown | | [Jobs2Careers](http://api.jobs2careers.com/api/spec.pdf) | Job aggregator | `apiKey` | Yes | Unknown | -| [Jooble](https://us.jooble.org/api/about) | Job search engine | `apiKey` | Yes | Unknown | +| [Jooble](https://jooble.org/api/about) | Job search engine | `apiKey` | Yes | Unknown | | [Juju](http://www.juju.com/publisher/spec/) | Job search engine | `apiKey` | No | Unknown | | [Open Skills](https://github.com/workforce-data-initiative/skills-api/wiki/API-Overview) | Job titles, skills and related jobs data | No | No | Unknown | | [Reed](https://www.reed.co.uk/developers) | Job board aggregator | `apiKey` | Yes | Unknown | From 78d9bbb2ef0e1127347517b2a06438d056b8b184 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:58:09 -0300 Subject: [PATCH 223/315] Update Dialogflow, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a7aad74..c75aa43e 100644 --- a/README.md +++ b/README.md @@ -1155,7 +1155,7 @@ API | Description | Auth | HTTPS | CORS | | [Clarifai](https://docs.clarifai.com/api-guide/api-overview) | Computer Vision | `OAuth` | Yes | Unknown | | [Cloudmersive](https://www.cloudmersive.com/image-recognition-and-processing-api) | Image captioning, face recognition, NSFW classification | `apiKey` | Yes | Yes | | [Deepcode](https://www.deepcode.ai) | AI for code review | No | Yes | Unknown | -| [Dialogflow](https://dialogflow.com) | Natural Language Processing | `apiKey` | Yes | Unknown | +| [Dialogflow](https://cloud.google.com/dialogflow/docs/) | Natural Language Processing | `apiKey` | Yes | Unknown | | [EXUDE-API](http://uttesh.com/exude-api/) | Used for the primary ways for filtering the stopping, stemming words from the text data | No | Yes | Yes | | [Imagga](https://imagga.com/) | Image Recognition Solutions like Tagging, Visual Search, NSFW moderation | `apiKey` | Yes | Unknown | | [Inferdo](https://rapidapi.com/user/inferdo) | Computer Vision services like Facial detection, Image labeling, NSFW classification | `apiKey` | Yes | Unknown | From 42e770612cd7ec731efc015d67de568e4e84fa00 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:01:09 -0300 Subject: [PATCH 224/315] Remove Wit.ai, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c75aa43e..0462a6fe 100644 --- a/README.md +++ b/README.md @@ -1171,7 +1171,6 @@ API | Description | Auth | HTTPS | CORS | | [SkyBiometry](https://skybiometry.com/documentation/) | Face Detection, Face Recognition and Face Grouping | `apiKey` | Yes | Unknown | | [Time Door](https://timedoor.io) | A time series analysis API | `apiKey` | Yes | Yes | | [Unplugg](https://unplu.gg/test_api.html) | Forecasting API for timeseries data | `apiKey` | Yes | Unknown | -| [Wit.ai](https://wit.ai/) | Natural Language Processing | `OAuth` | Yes | Unknown | | [WolframAlpha](https://products.wolframalpha.com/api/) | Provides specific answers to questions using data and algorithms | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** From 98c8e92524a14cdf0118625ed7202303b44a6056 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:03:46 -0300 Subject: [PATCH 225/315] Update Lyrics.ovh, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0462a6fe..dc307173 100644 --- a/README.md +++ b/README.md @@ -1194,7 +1194,7 @@ API | Description | Auth | HTTPS | CORS | | [KKBOX](https://developer.kkbox.com) | Get music libraries, playlists, charts, and perform out of KKBOX's platform | `OAuth` | Yes | Unknown | | [KSoft.Si Lyrics](https://docs.ksoft.si/api/lyrics-api) | API to get lyrics for songs | `apiKey` | Yes | Unknown | | [LastFm](https://www.last.fm/api) | Music | `apiKey` | Yes | Unknown | -| [Lyrics.ovh](http://docs.lyricsovh.apiary.io/) | Simple API to retrieve the lyrics of a song | No | Yes | Unknown | +| [Lyrics.ovh](https://lyricsovh.docs.apiary.io) | Simple API to retrieve the lyrics of a song | No | Yes | Unknown | | [Mixcloud](https://www.mixcloud.com/developers/) | Music | `OAuth` | Yes | Yes | | [MusicBrainz](https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2) | Music | No | Yes | Unknown | | [Musixmatch](https://developer.musixmatch.com/) | Music | `apiKey` | Yes | Unknown | From 623eb069154cc5f96b3685fbb46b264c19410e45 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:04:43 -0300 Subject: [PATCH 226/315] Update MarketAux, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc307173..535af5d6 100644 --- a/README.md +++ b/README.md @@ -1223,7 +1223,7 @@ API | Description | Auth | HTTPS | CORS | | [GNews](https://gnews.io/) | Search for news from various sources | `apiKey` | Yes | Yes | | [Graphs for Coronavirus](https://corona.dnsforfamily.com/api.txt) | Each Country separately and Worldwide Graphs for Coronavirus. Daily updates | No | Yes | Yes | | [Inshorts News](https://github.com/cyberboysumanjay/Inshorts-News-API) | Provides news from inshorts | No | Yes | Unknown | -| [MarketAux](https://marketaux.com/) | Live stock market news with tagged tickers + sentiment and stats JSON API | `apiKey` | Yes | Yes | +| [MarketAux](https://www.marketaux.com/) | Live stock market news with tagged tickers + sentiment and stats JSON API | `apiKey` | Yes | Yes | | [New York Times](https://developer.nytimes.com/) | The New York Times Developer Network | `apiKey` | Yes | Unknown | | [News](https://newsapi.org/) | Headlines currently published on a range of news sources and blogs | `apiKey` | Yes | Unknown | | [NewsData](https://newsdata.io/docs) | News data API for live-breaking news and headlines from reputed news sources | `apiKey` | Yes | Unknown | From 2f6c39e410473b18989d31c1ff824e86be8a54a9 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:05:51 -0300 Subject: [PATCH 227/315] Update TheNews, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 535af5d6..593ec805 100644 --- a/README.md +++ b/README.md @@ -1232,7 +1232,7 @@ API | Description | Auth | HTTPS | CORS | | [Spaceflight News](https://spaceflightnewsapi.net) | Spaceflight related news 🚀 | No | Yes | Yes | | [The Guardian](http://open-platform.theguardian.com/) | Access all the content the Guardian creates, categorised by tags and section | `apiKey` | Yes | Unknown | | [The Old Reader](https://github.com/theoldreader/api) | RSS reader | `apiKey` | Yes | Unknown | -| [TheNews](https://thenewsapi.com/) | Aggregated headlines, top story and live news JSON API | `apiKey` | Yes | Yes | +| [TheNews](https://www.thenewsapi.com/) | Aggregated headlines, top story and live news JSON API | `apiKey` | Yes | Yes | | [Trove](https://trove.nla.gov.au/about/create-something/using-api) | Search through the National Library of Australia collection of 1000s of digitised newspapers | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** From 0ae9a285f090934c9620e86e7f2b0f3506a6d8b6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:06:49 -0300 Subject: [PATCH 228/315] Update Black History Facts, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 593ec805..be4ef906 100644 --- a/README.md +++ b/README.md @@ -1242,7 +1242,7 @@ API | Description | Auth | HTTPS | CORS | | [18F](http://18f.github.io/API-All-the-X/) | Unofficial US Federal Government API Development | No | No | Unknown | | [API Setu](https://www.apisetu.gov.in/) | An Indian Government platform that provides a lot of APIS for KYC, business, education & employment | No | Yes | Yes | | [Archive.org](https://archive.readme.io/docs) | The Internet Archive | No | Yes | No | -| [Black History Facts](https://blackhistoryapi.io/docs) | Contribute or search one of the largest black history fact databases on the web | `apiKey` | Yes | Yes | +| [Black History Facts](https://www.blackhistoryapi.io/docs) | Contribute or search one of the largest black history fact databases on the web | `apiKey` | Yes | Yes | | [BotsArchive](https://botsarchive.com/docs.html) | JSON formatted details about Telegram Bots available in database | No | Yes | Unknown | | [Callook.info](https://callook.info) | United States ham radio callsigns | No | Yes | Unknown | | [CARTO](https://carto.com/) | Location Information Prediction | `apiKey` | Yes | Unknown | From 64975f04d52985b6cc99a67bae236df3bb8b7980 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:08:43 -0300 Subject: [PATCH 229/315] Update Enigma Public, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be4ef906..e6ef2ee8 100644 --- a/README.md +++ b/README.md @@ -1247,7 +1247,7 @@ API | Description | Auth | HTTPS | CORS | | [Callook.info](https://callook.info) | United States ham radio callsigns | No | Yes | Unknown | | [CARTO](https://carto.com/) | Location Information Prediction | `apiKey` | Yes | Unknown | | [CollegeScoreCard.ed.gov](https://collegescorecard.ed.gov/data/) | Data on higher education institutions in the United States | No | Yes | Unknown | -| [Enigma Public](http://docs.enigma.com/public/public_v20_api_about) | Broadest collection of public data | `apiKey` | Yes | Yes | +| [Enigma Public](https://developers.enigma.com/docs) | Broadest collection of public data | `apiKey` | Yes | Yes | | [French Address Search](https://geo.api.gouv.fr/adresse) | Address search via the French Government | No | Yes | Unknown | | [GENESIS](https://www.destatis.de/EN/Service/OpenData/api-webservice.html) | Federal Statistical Office Germany | `OAuth` | Yes | Unknown | | [Joshua Project](https://api.joshuaproject.net/) | People groups of the world with the fewest followers of Christ | `apiKey` | Yes | Unknown | From 6278258239ff806b2ec70b508d40f280d98b5a49 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:11:08 -0300 Subject: [PATCH 230/315] Update Remote Calc, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e6ef2ee8..5acf1b42 100644 --- a/README.md +++ b/README.md @@ -1407,7 +1407,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Science Framework](https://developer.osf.io) | Repository and archive for study designs, research materials, data, manuscripts, etc | No | Yes | Unknown | | [Purple Air](https://www2.purpleair.com/) | Real Time Air Quality Monitoring | No | Yes | Unknown | | [Quadratic Solver](https://quadratic-solver-api.herokuapp.com/) | A Quadratic Solver | No | Yes | Yes | -| [Remote Calc](https://www.github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | +| [Remote Calc](https://github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | | [Satellite Passes](https://satellites.fly.dev) | Query next satellite passes above you | No | Yes | No | | [SHARE](https://share.osf.io/api/v2/) | A free, open, dataset about research and scholarly activities | No | Yes | No | | [SpaceX](https://github.com/r-spacex/SpaceX-API) | Company, vehicle, launchpad and launch data | No | Yes | No | From 275da618bf03084485554b5d50104e90cdb2386c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:14:51 -0300 Subject: [PATCH 231/315] Remove Satellite Passes, it's broken --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 5acf1b42..51c59f7a 100644 --- a/README.md +++ b/README.md @@ -1407,8 +1407,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Science Framework](https://developer.osf.io) | Repository and archive for study designs, research materials, data, manuscripts, etc | No | Yes | Unknown | | [Purple Air](https://www2.purpleair.com/) | Real Time Air Quality Monitoring | No | Yes | Unknown | | [Quadratic Solver](https://quadratic-solver-api.herokuapp.com/) | A Quadratic Solver | No | Yes | Yes | -| [Remote Calc](https://github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | -| [Satellite Passes](https://satellites.fly.dev) | Query next satellite passes above you | No | Yes | No | +| [Remote Calc](https://github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | | [SHARE](https://share.osf.io/api/v2/) | A free, open, dataset about research and scholarly activities | No | Yes | No | | [SpaceX](https://github.com/r-spacex/SpaceX-API) | Company, vehicle, launchpad and launch data | No | Yes | No | | [SpaceX](https://api.spacex.land/graphql/) | GraphQL, Company, Ships, launchpad and launch data | No | Yes | Unknown | From c913fac7ac7669bcf933d93d004b0c0f92e62b30 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:16:02 -0300 Subject: [PATCH 232/315] Update eBay, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 51c59f7a..42bd77ef 100644 --- a/README.md +++ b/README.md @@ -1470,7 +1470,7 @@ API | Description | Auth | HTTPS | CORS | | [Daraz Data](https://rapidapi.com/mnadeem24434@gmail.com/api/get-daraz-product-data/) | Get daraz product detail by it's product URL | `apiKey` | Yes | Unknown | | [Digi-Key](https://www.digikey.com/en/resources/api-solutions) | Retrieve price and inventory of electronic components as well as place orders | `OAuth` | Yes | Unknown | | [Dummy Products](https://dummyproducts-api.herokuapp.com/) | An api to fetch dummy e-commerce products JSON data with placeholder images | `apiKey` | Yes | Yes | -| [eBay](https://go.developer.ebay.com/) | Sell and Buy on eBay | `OAuth` | Yes | Unknown | +| [eBay](https://developer.ebay.com/) | Sell and Buy on eBay | `OAuth` | Yes | Unknown | | [Etsy](https://www.etsy.com/developers/documentation/getting_started/api_basics) | Manage shop and interact with listings | `OAuth` | Yes | Unknown | | [Flipkart Marketplace](https://seller.flipkart.com/api-docs/FMSAPI.html) | Product listing management, Order Fulfilment in the Flipkart Marketplace | `OAuth` | Yes | Yes | | [Lazada](https://open.lazada.com/doc/doc.htm) | Retrieve product ratings and seller performance metrics | `apiKey` | Yes | Unknown | From 6054f86e75f9f45fab75e4ae07b7b6b01fdf3dcf Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:19:58 -0300 Subject: [PATCH 233/315] Update Full Contact, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42bd77ef..fef40cab 100644 --- a/README.md +++ b/README.md @@ -1498,7 +1498,7 @@ API | Description | Auth | HTTPS | CORS | | [Facebook](https://developers.facebook.com/) | Facebook Login, Share on FB, Social Plugins, Analytics and more | `OAuth` | Yes | Unknown | | [Foursquare](https://developer.foursquare.com/) | Interact with Foursquare users and places (geolocation-based checkins, photos, tips, events, etc) | `OAuth` | Yes | Unknown | | [Fuck Off as a Service](https://www.foaas.com) | Asks someone to fuck off | No | Yes | Unknown | -| [Full Contact](https://www.fullcontact.com/developer/docs/) | Get Social Media profiles and contact Information | `OAuth` | Yes | Unknown | +| [Full Contact](https://docs.fullcontact.com/) | Get Social Media profiles and contact Information | `OAuth` | Yes | Unknown | | [HackerNews](https://github.com/HackerNews/API) | Social news for CS and entrepreneurship | No | Yes | Unknown | | [Hashnode](https://api.hashnode.com/) | A blogging platform built for developers | No | Yes | Unknown | | [Instagram](https://www.instagram.com/developer/) | Instagram Login, Share on Instagram, Social Plugins and more | `OAuth` | Yes | Unknown | From d6e9e20e16f5b70ee8002ae27b1dfc85efd89b95 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:27:05 -0300 Subject: [PATCH 234/315] Update hashnode, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fef40cab..d4dc0fb4 100644 --- a/README.md +++ b/README.md @@ -1500,7 +1500,7 @@ API | Description | Auth | HTTPS | CORS | | [Fuck Off as a Service](https://www.foaas.com) | Asks someone to fuck off | No | Yes | Unknown | | [Full Contact](https://docs.fullcontact.com/) | Get Social Media profiles and contact Information | `OAuth` | Yes | Unknown | | [HackerNews](https://github.com/HackerNews/API) | Social news for CS and entrepreneurship | No | Yes | Unknown | -| [Hashnode](https://api.hashnode.com/) | A blogging platform built for developers | No | Yes | Unknown | +| [Hashnode](https://hashnode.com) | A blogging platform built for developers | No | Yes | Unknown | | [Instagram](https://www.instagram.com/developer/) | Instagram Login, Share on Instagram, Social Plugins and more | `OAuth` | Yes | Unknown | | [Kakao](https://developers.kakao.com/) | Kakao Login, Share on KakaoTalk, Social Plugins and more | `OAuth` | Yes | Unknown | | [Lanyard](https://github.com/Phineas/lanyard) | Retrieve your presence on Discord through an HTTP REST API or WebSocket | No | Yes | Yes | From 517df7f0601018f9c5c22ab2ca27f20c424c82f0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:28:55 -0300 Subject: [PATCH 235/315] Update balldontlie, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4dc0fb4..e4fc44e0 100644 --- a/README.md +++ b/README.md @@ -1533,7 +1533,7 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [API-FOOTBALL](https://www.api-football.com/documentation-v3) | Get information about Football Leagues & Cups | `apiKey` | Yes | Yes | | [ApiMedic](https://apimedic.com/) | ApiMedic offers a medical symptom checker API primarily for patients | `apiKey` | Yes | Unknown | -| [balldontlie](https://balldontlie.io) | Balldontlie provides access to stats data from the NBA | No | Yes | Yes | +| [balldontlie](https://www.balldontlie.io) | Balldontlie provides access to stats data from the NBA | No | Yes | Yes | | [Canadian Football League (CFL)](http://api.cfl.ca/) | Official JSON API providing real-time league, team and player statistics about the CFL | `apiKey` | Yes | No | | [City Bikes](https://api.citybik.es/v2/) | City Bikes around the world | No | Yes | Unknown | | [Cloudbet](https://www.cloudbet.com/api/) | Official Cloudbet API provides real-time sports odds and betting API to place bets programmatically | `apiKey` | Yes | Yes | From 34c268e4a4784e62bce32224372549a6f1b1904d Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:30:23 -0300 Subject: [PATCH 236/315] Remove PIPL, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e4fc44e0..c34d5ff8 100644 --- a/README.md +++ b/README.md @@ -1583,7 +1583,6 @@ API | Description | Auth | HTTPS | CORS | | [Mailsac](https://mailsac.com/docs/api) | Disposable Email | `apiKey` | Yes | Unknown | | [Metaphorsum](http://metaphorpsum.com/) | Generate demo paragraphs giving number of words and sentences | No | No | Unknown | | [Mockaroo](https://www.mockaroo.com/docs) | Generate fake data to JSON, CSV, TXT, SQL and XML | `apiKey` | Yes | Unknown | -| [PIPL](https://pipl.ir/) | Free and public API that generates random and fake people's data in JSON | No | Yes | No | | [QuickMocker](https://quickmocker.com) | API mocking tool to generate contextual, fake or random data | No | Yes | Yes | | [Random Data](https://random-data-api.com) | Random data generator | No | Yes | Unknown | | [Randommer](https://randommer.io/randommer-api) | Random data generator | `apiKey` | Yes | Yes | From cefd7f13155c47621cd301d32953bb49d498793c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:33:27 -0300 Subject: [PATCH 237/315] Update GraphHopper, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c34d5ff8..62a98f26 100644 --- a/README.md +++ b/README.md @@ -1647,7 +1647,7 @@ API | Description | Auth | HTTPS | CORS | | [Compare Flight Prices](https://rapidapi.com/obryan-software-obryan-software-default/api/compare-flight-prices/) | API for comparing flight prices across platforms | `apiKey` | Yes | Unknown | | [CTS](https://api.cts-strasbourg.eu/) | CTS Realtime API | `apiKey` | Yes | Yes | | [Grab](https://developer.grab.com/docs/) | Track deliveries, ride fares, payments and loyalty points | `OAuth` | Yes | Unknown | -| [GraphHopper](https://graphhopper.com/api/1/docs/) | A-to-B routing with turn-by-turn instructions | `apiKey` | Yes | Unknown | +| [GraphHopper](https://docs.graphhopper.com/) | A-to-B routing with turn-by-turn instructions | `apiKey` | Yes | Unknown | | [Icelandic APIs](http://docs.apis.is/) | Open APIs that deliver services in or regarding Iceland | No | Yes | Unknown | | [Impala Hotel Bookings](https://docs.impala.travel/docs/booking-api/) | Hotel content, rates and room bookings | `apiKey` | Yes | No | | [Izi](http://api-docs.izi.travel/) | Audio guide for travellers | `apiKey` | Yes | Unknown | From 6a730caf47100ac812f321bb5ea4d100aa93b5f9 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:35:56 -0300 Subject: [PATCH 238/315] Update TransitLand, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 62a98f26..ab13951e 100644 --- a/README.md +++ b/README.md @@ -1661,7 +1661,7 @@ API | Description | Auth | HTTPS | CORS | | [Sabre for Developers](https://developer.sabre.com/guides/travel-agency/quickstart/getting-started-in-travel) | Travel Search - Limited usage | `apiKey` | Yes | Unknown | | [Schiphol Airport](https://developer.schiphol.nl/) | Schiphol | `apiKey` | Yes | Unknown | | [Tankerkoenig](https://creativecommons.tankerkoenig.de/swagger/) | German realtime gas/diesel prices | `apiKey` | Yes | Yes | -| [TransitLand](https://transit.land/documentation/datastore/api-endpoints.html) | Transit Aggregation | No | Yes | Unknown | +| [TransitLand](https://www.transit.land/documentation/datastore/api-endpoints.html) | Transit Aggregation | No | Yes | Unknown | | [Transport for Atlanta, US](http://www.itsmarta.com/app-developer-resources.aspx) | Marta | No | No | Unknown | | [Transport for Auckland, New Zealand](https://api.at.govt.nz/) | Auckland Transport | No | Yes | Unknown | | [Transport for Belgium](https://api.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | From 975f7b5c6e8cc10b8a941b5830e08de1e29f99e2 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:37:32 -0300 Subject: [PATCH 239/315] Update Transport for Auckland, New Zealand, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab13951e..80af91b7 100644 --- a/README.md +++ b/README.md @@ -1663,7 +1663,7 @@ API | Description | Auth | HTTPS | CORS | | [Tankerkoenig](https://creativecommons.tankerkoenig.de/swagger/) | German realtime gas/diesel prices | `apiKey` | Yes | Yes | | [TransitLand](https://www.transit.land/documentation/datastore/api-endpoints.html) | Transit Aggregation | No | Yes | Unknown | | [Transport for Atlanta, US](http://www.itsmarta.com/app-developer-resources.aspx) | Marta | No | No | Unknown | -| [Transport for Auckland, New Zealand](https://api.at.govt.nz/) | Auckland Transport | No | Yes | Unknown | +| [Transport for Auckland, New Zealand](https://dev-portal.at.govt.nz/) | Auckland Transport | No | Yes | Unknown | | [Transport for Belgium](https://api.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | | [Transport for Berlin, Germany](https://github.com/derhuerst/vbb-rest/blob/3/docs/index.md) | Third-party VBB API | No | Yes | Unknown | | [Transport for Bordeaux, France](https://opendata.bordeaux-metropole.fr/explore/) | Bordeaux Métropole public transport and more (France) | `apiKey` | Yes | Unknown | From 97e6c8aee30cded950ca92a319ea476aaa64c548 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:39:04 -0300 Subject: [PATCH 240/315] Update Transport for Belgium, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80af91b7..9003700d 100644 --- a/README.md +++ b/README.md @@ -1664,7 +1664,7 @@ API | Description | Auth | HTTPS | CORS | | [TransitLand](https://www.transit.land/documentation/datastore/api-endpoints.html) | Transit Aggregation | No | Yes | Unknown | | [Transport for Atlanta, US](http://www.itsmarta.com/app-developer-resources.aspx) | Marta | No | No | Unknown | | [Transport for Auckland, New Zealand](https://dev-portal.at.govt.nz/) | Auckland Transport | No | Yes | Unknown | -| [Transport for Belgium](https://api.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | +| [Transport for Belgium](https://docs.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | | [Transport for Berlin, Germany](https://github.com/derhuerst/vbb-rest/blob/3/docs/index.md) | Third-party VBB API | No | Yes | Unknown | | [Transport for Bordeaux, France](https://opendata.bordeaux-metropole.fr/explore/) | Bordeaux Métropole public transport and more (France) | `apiKey` | Yes | Unknown | | [Transport for Boston, US](https://mbta.com/developers/v3-api) | MBTA API | No | No | Unknown | From 958623fd70c621d7ff07b4be4df18fe5feacaa9c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:40:12 -0300 Subject: [PATCH 241/315] Update Transport for Boston, US, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9003700d..66d7ea25 100644 --- a/README.md +++ b/README.md @@ -1667,7 +1667,7 @@ API | Description | Auth | HTTPS | CORS | | [Transport for Belgium](https://docs.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | | [Transport for Berlin, Germany](https://github.com/derhuerst/vbb-rest/blob/3/docs/index.md) | Third-party VBB API | No | Yes | Unknown | | [Transport for Bordeaux, France](https://opendata.bordeaux-metropole.fr/explore/) | Bordeaux Métropole public transport and more (France) | `apiKey` | Yes | Unknown | -| [Transport for Boston, US](https://mbta.com/developers/v3-api) | MBTA API | No | No | Unknown | +| [Transport for Boston, US](https://www.mbta.com/developers/v3-api) | MBTA API | No | No | Unknown | | [Transport for Budapest, Hungary](https://bkkfutar.docs.apiary.io) | Budapest public transport API | No | Yes | Unknown | | [Transport for Chicago, US](http://www.transitchicago.com/developers/) | Chicago Transit Authority (CTA) | `apiKey` | No | Unknown | | [Transport for Czech Republic](https://www.chaps.cz/eng/products/idos-internet) | Czech transport API | No | Yes | Unknown | From b046b825044ec280907a68220459f8f4be9807c6 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:42:01 -0300 Subject: [PATCH 242/315] Update Transport for Grenoble, France, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 66d7ea25..b81fc485 100644 --- a/README.md +++ b/README.md @@ -1674,7 +1674,7 @@ API | Description | Auth | HTTPS | CORS | | [Transport for Denver, US](http://www.rtd-denver.com/gtfs-developer-guide.shtml) | RTD | No | No | Unknown | | [Transport for Finland](https://digitransit.fi/en/developers/ ) | Finnish transport API | No | Yes | Unknown | | [Transport for Germany](http://data.deutschebahn.com/dataset/api-fahrplan) | Deutsche Bahn (DB) API | `apiKey` | No | Unknown | -| [Transport for Grenoble, France](https://www.metromobilite.fr/pages/opendata/OpenDataApi.html) | Grenoble public transport | No | No | No | +| [Transport for Grenoble, France](https://www.mobilites-m.fr/pages/opendata/OpenDataApi.html) | Grenoble public transport | No | No | No | | [Transport for Hessen, Germany](https://opendata.rmv.de/site/start.html) | RMV API (Public Transport in Hessen) | No | Yes | Unknown | | [Transport for Honolulu, US](http://hea.thebus.org/api_info.asp) | Honolulu Transportation Information | `apiKey` | No | Unknown | | [Transport for Lisbon, Portugal](https://emel.city-platform.com/opendata/) | Data about buses routes, parking and traffic | `apiKey` | Yes | Unknown | From f43ea6d729a7bc70f8efe762bffde41f9f6864ed Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:43:50 -0300 Subject: [PATCH 243/315] Update Transport for United States, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b81fc485..9dc33bde 100644 --- a/README.md +++ b/README.md @@ -1694,7 +1694,7 @@ API | Description | Auth | HTTPS | CORS | | [Transport for The Netherlands](https://github.com/skywave/KV78Turbo-OVAPI/wiki) | OVAPI, country-wide public transport | No | Yes | Unknown | | [Transport for Toronto, Canada](https://myttc.ca/developers) | TTC | No | Yes | Unknown | | [Transport for UK](https://developer.transportapi.com) | Transport API and dataset for UK | `apiKey` | Yes | Unknown | -| [Transport for United States](http://www.nextbus.com/xmlFeedDocs/NextBusXMLFeed.pdf) | NextBus API | No | No | Unknown | +| [Transport for United States](https://retro.umoiq.com/xmlFeedDocs/NextBusXMLFeed.pdf) | NextBus API | No | No | Unknown | | [Transport for Vancouver, Canada](https://developer.translink.ca/) | TransLink | `OAuth` | Yes | Unknown | | [Transport for Washington, US](https://developer.wmata.com/) | Washington Metro transport API | `OAuth` | Yes | Unknown | | [transport.rest](https://transport.rest) | Community maintained, developer-friendly public transport API | No | Yes | Yes | From 39fcbd0270c4bae668128c32449e2f9bcfd99b97 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:45:57 -0300 Subject: [PATCH 244/315] Remove Zero Width Shortener, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 9dc33bde..dbd26924 100644 --- a/README.md +++ b/README.md @@ -1724,7 +1724,6 @@ API | Description | Auth | HTTPS | CORS | | [Shrtlnk](https://shrtlnk.dev/developer) | Simple and efficient short link creation | `apiKey` | Yes | Yes | | [TinyURL](https://tinyurl.com/app/dev) | Shorten long URLs | `apiKey` | Yes | No | | [UrlBae](https://urlbae.com/developers) | Simple and efficient short link creation | `apiKey` | Yes | Yes | -| [Zero Width Shortener](https://docs.zws.im) | Shortens URLs using spaces that have zero width, making them invisible to humans | No | Yes | Unknown | **[⬆ Back to Index](#index)** ### Vehicle From b35c0b66e391a730aaea9454c33711ca9c49d6ec Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:52:42 -0300 Subject: [PATCH 245/315] Update Trakt, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dbd26924..88d10f69 100644 --- a/README.md +++ b/README.md @@ -1774,7 +1774,7 @@ API | Description | Auth | HTTPS | CORS | | [ThronesApi](https://thronesapi.com/) | Game Of Thrones Characters Data with imagery | No | Yes | Unknown | | [TMDb](https://www.themoviedb.org/documentation/api) | Community-based movie data | `apiKey` | Yes | Unknown | | [TrailerAddict](https://www.traileraddict.com/trailerapi) | Easily embed trailers from TrailerAddict | `apiKey` | No | Unknown | -| [Trakt](https://trakt.tv/b/api-docs) | Movie and TV Data | `apiKey` | Yes | Yes | +| [Trakt](https://trakt.docs.apiary.io/) | Movie and TV Data | `apiKey` | Yes | Yes | | [TVDB](https://api.thetvdb.com/swagger) | Television data | `apiKey` | Yes | Unknown | | [TVMaze](http://www.tvmaze.com/api) | TV Show Data | No | No | Unknown | | [uNoGS](https://rapidapi.com/unogs/api/unogsng) | Unofficial Netflix Online Global Search, Search all netflix regions in one place | `apiKey` | Yes | Yes | From 14e0e17449423bdd6b29b74eb8ab9a3a5d4f555b Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:54:56 -0300 Subject: [PATCH 246/315] Update TVDB, new link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88d10f69..5d69b2a8 100644 --- a/README.md +++ b/README.md @@ -1775,7 +1775,7 @@ API | Description | Auth | HTTPS | CORS | | [TMDb](https://www.themoviedb.org/documentation/api) | Community-based movie data | `apiKey` | Yes | Unknown | | [TrailerAddict](https://www.traileraddict.com/trailerapi) | Easily embed trailers from TrailerAddict | `apiKey` | No | Unknown | | [Trakt](https://trakt.docs.apiary.io/) | Movie and TV Data | `apiKey` | Yes | Yes | -| [TVDB](https://api.thetvdb.com/swagger) | Television data | `apiKey` | Yes | Unknown | +| [TVDB](https://thetvdb.com/api-information) | Television data | `apiKey` | Yes | Unknown | | [TVMaze](http://www.tvmaze.com/api) | TV Show Data | No | No | Unknown | | [uNoGS](https://rapidapi.com/unogs/api/unogsng) | Unofficial Netflix Online Global Search, Search all netflix regions in one place | `apiKey` | Yes | Yes | | [Utelly](https://rapidapi.com/utelly/api/utelly) | Movies, Series and TV shows Recommendations | `apiKey` | Yes | Unknown | From 3a828c34eaa58a8bd61cb2071a8d449ffa8ae246 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:56:57 -0300 Subject: [PATCH 247/315] Remove SimpleWeather, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5d69b2a8..94f879f4 100644 --- a/README.md +++ b/README.md @@ -1811,7 +1811,6 @@ API | Description | Auth | HTTPS | CORS | | [OpenWeatherMap](https://openweathermap.org/api) | Weather | `apiKey` | Yes | Unknown | | [QWeather](https://dev.qweather.com/en/) | Location-based weather data | `apiKey` | Yes | Yes | | [RainViewer](https://www.rainviewer.com/api.html) | Radar data collected from different websites across the Internet | No | Yes | Unknown | -| [SimpleWeather](https://english.api.rakuten.net/mxrck/api/simple-weather/endpoints) | Simple tool for get current weather | `apiKey` | Yes | Yes | | [Storm Glass](https://stormglass.io/) | Global marine weather from multiple sources | `apiKey` | Yes | Yes | | [Tomorrow](https://docs.tomorrow.io) | Weather API Powered by Proprietary Technology | `apiKey` | Yes | Unknown | | [US Weather](https://www.weather.gov/documentation/services-web-api) | US National Weather Service | No | Yes | Yes | From 8d48738a2afb473cd2eee05530d5aa65b06a8659 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 12:03:26 -0300 Subject: [PATCH 248/315] Remove Transport for Boston, US, is a duplicate --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 94f879f4..fa7fb3c4 100644 --- a/README.md +++ b/README.md @@ -1667,7 +1667,6 @@ API | Description | Auth | HTTPS | CORS | | [Transport for Belgium](https://docs.irail.be/) | The iRail API is a third-party API for Belgian public transport by train | No | Yes | Yes | | [Transport for Berlin, Germany](https://github.com/derhuerst/vbb-rest/blob/3/docs/index.md) | Third-party VBB API | No | Yes | Unknown | | [Transport for Bordeaux, France](https://opendata.bordeaux-metropole.fr/explore/) | Bordeaux Métropole public transport and more (France) | `apiKey` | Yes | Unknown | -| [Transport for Boston, US](https://www.mbta.com/developers/v3-api) | MBTA API | No | No | Unknown | | [Transport for Budapest, Hungary](https://bkkfutar.docs.apiary.io) | Budapest public transport API | No | Yes | Unknown | | [Transport for Chicago, US](http://www.transitchicago.com/developers/) | Chicago Transit Authority (CTA) | `apiKey` | No | Unknown | | [Transport for Czech Republic](https://www.chaps.cz/eng/products/idos-internet) | Czech transport API | No | Yes | Unknown | From 40176749857cf2662428ea53f538de7364213352 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 13:22:09 -0300 Subject: [PATCH 249/315] Set badges for new workflows --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fa7fb3c4..a015304e 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@
Status
- - Run tests + + Tests of push and pull - - Validate links + + Validate links Number of Categories From 29fcd4421d99dbf19cb38770e7b89b773099a38c Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 13:32:13 -0300 Subject: [PATCH 250/315] Reorder badges and add new --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a015304e..5b4c51ce 100644 --- a/README.md +++ b/README.md @@ -8,17 +8,21 @@ From 1177edcce0b545a715232a7c931206ff0b04eb95 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Mon, 7 Feb 2022 23:05:59 -0300 Subject: [PATCH 251/315] Add HTTP Dog to Animals --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5b4c51ce..3356e483 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,8 @@ API | Description | Auth | HTTPS | CORS | | [Dogs](https://dog.ceo/dog-api/) | Based on the Stanford Dogs Dataset | No | Yes | Yes | | [eBird](https://documenter.getpostman.com/view/664302/S1ENwy59) | Retrieve recent or notable birding observations within a region | `apiKey` | Yes | No | | [FishWatch](https://www.fishwatch.gov/developers) | Information and pictures about individual fish species | No | Yes | Yes | -| [HTTPCat](https://http.cat/) | Cat for every HTTP Status | No | Yes | Yes | +| [HTTP Cat](https://http.cat/) | Cat for every HTTP Status | No | Yes | Yes | +| [HTTP Dog](https://http.dog/) | Dogs for every HTTP response status code | No | Yes | Yes | | [IUCN](http://apiv3.iucnredlist.org/api/v3/docs) | IUCN Red List of Threatened Species | `apiKey` | No | No | | [MeowFacts](https://github.com/wh-iterabb-it/meowfacts) | Get random cat facts | No | Yes | No | | [Movebank](https://github.com/movebank/movebank-api-doc) | Movement and Migration data of animals | No | Yes | Yes | From 0ba17006add0fadc19e911b08bd8debfd4fd365f Mon Sep 17 00:00:00 2001 From: sastofficial <39431922+sastofficial@users.noreply.github.com> Date: Wed, 9 Feb 2022 15:03:59 +0100 Subject: [PATCH 252/315] Add GDBrowser API --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3356e483..6d1049c7 100644 --- a/README.md +++ b/README.md @@ -849,6 +849,7 @@ API | Description | Auth | HTTPS | CORS | | [Fun Facts](https://asli-fun-fact-api.herokuapp.com/) | Random Fun Facts | No | Yes | Yes | | [FunTranslations](https://api.funtranslations.com/) | Translate Text into funny languages | No | Yes | Yes | | [GamerPower](https://www.gamerpower.com/api-read) | Game Giveaways Tracker | No | Yes | Yes | +| [GDBrowser](https://gdbrowser.com/api) | Easy way to use the Geometry Dash Servers | No | Yes | Unknown | | [Geek-Jokes](https://github.com/sameerkumar18/geek-joke-api) | Fetch a random geeky/programming related joke for use in all sorts of applications | No | Yes | Yes | | [Genshin Impact](https://genshin.dev) | Genshin Impact game data | No | Yes | Yes | | [Giant Bomb](https://www.giantbomb.com/api/documentation) | Video Games | `apiKey` | Yes | Unknown | From d452f7935a2e337f8b0e81b4ee739a17a2852b4d Mon Sep 17 00:00:00 2001 From: Alex Addams Date: Wed, 9 Feb 2022 18:34:09 +0000 Subject: [PATCH 253/315] move SLF to geolocations --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3356e483..e862f959 100644 --- a/README.md +++ b/README.md @@ -893,7 +893,6 @@ API | Description | Auth | HTTPS | CORS | | [RuneScape](https://runescape.wiki/w/Application_programming_interface) | RuneScape and OSRS RPGs information | No | Yes | No | | [Sakura CardCaptor](https://github.com/JessVel/sakura-card-captor-api) | Sakura CardCaptor Cards Information | No | Yes | Unknown | | [Scryfall](https://scryfall.com/docs/api) | Magic: The Gathering database | No | Yes | Yes | -| [SLF](https://github.com/slftool/slftool.github.io/blob/master/API.md) | German city, country, river, database | No | Yes | Yes | | [SpaceTradersAPI](https://spacetraders.io?rel=pub-apis) | A playable inter-galactic space trading MMOAPI | `OAuth` | Yes | Yes | | [Steam](https://steamapi.xpaw.me/) | Steam Web API documentation | `apiKey` | Yes | No | | [Steam](https://github.com/Revadike/InternalSteamWebAPI/wiki) | Internal Steam Web API documentation | No | Yes | No | @@ -985,6 +984,7 @@ API | Description | Auth | HTTPS | CORS | | [REST Countries](https://restcountries.com) | Get information about countries via a RESTful API | No | Yes | Yes | | [RoadGoat Cities](https://www.roadgoat.com/business/cities-api) | Cities content & photos API | `apiKey` | Yes | No | | [Rwanda Locations](https://rapidapi.com/victorkarangwa4/api/rwanda) | Rwanda Provences, Districts, Cities, Capital City, Sector, cells, villages and streets | No | Yes | Unknown | +| [SLF](https://github.com/slftool/slftool.github.io/blob/master/API.md) | German city, country, river, database | No | Yes | Yes | | [SpotSense](https://spotsense.io/) | Add location based interactions to your mobile app | `apiKey` | Yes | Unknown | | [Telize](https://rapidapi.com/fcambus/api/telize/) | Telize offers location information from any IP address | `apiKey` | Yes | Yes | | [TomTom](https://developer.tomtom.com/) | Maps, Directions, Places and Traffic APIs | `apiKey` | Yes | Yes | From f627e178ebb574909e9af83653ee7b221fafc6dc Mon Sep 17 00:00:00 2001 From: Vojkan Date: Sat, 12 Feb 2022 15:20:01 +0100 Subject: [PATCH 254/315] Add Apiip API to Geocoding --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3356e483..b56fb600 100644 --- a/README.md +++ b/README.md @@ -918,6 +918,7 @@ API | Description | Auth | HTTPS | CORS | | [administrative-divisons-db](https://github.com/kamikazechaser/administrative-divisions-db) | Get all administrative divisions of a country | No | Yes | Yes | | [adresse.data.gouv.fr](https://adresse.data.gouv.fr) | Address database of France, geocoding and reverse | No | Yes | Unknown | | [Airtel IP](https://sys.airtel.lv/ip2country/1.1.1.1/?full=true) | IP Geolocation API. Collecting data from multiple sources | No | Yes | Unknown | +| [Apiip.net IP Geolocation](https://apiip.net/) | Get location information by IP address | `apiKey` | Yes | Yes | | [apilayer ipstack](https://ipstack.com/) | Locate and identify website visitors by IP address | `apiKey` | Yes | Unknown | | [Battuta](http://battuta.medunes.net) | A (country/region/city) in-cascade location API | `apiKey` | No | Unknown | | [BigDataCloud](https://www.bigdatacloud.com/ip-geolocation-apis) | Provides fast and accurate IP geolocation APIs along with security checks and confidence area | `apiKey` | Yes | Unknown | From 33b342d961e784b1de23025f27f153b2b3de9bd4 Mon Sep 17 00:00:00 2001 From: Hubert Morawski Date: Mon, 14 Feb 2022 08:04:03 +0100 Subject: [PATCH 255/315] Add Wizard World to Books (#3050) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3356e483..584836d8 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,7 @@ API | Description | Auth | HTTPS | CORS | | [The Bible](https://docs.api.bible) | Everything you need from the Bible in one discoverable place | `apiKey` | Yes | Unknown | | [Thirukkural](https://api-thirukkural.web.app/) | 1330 Thirukkural poems and explanation in Tamil and English | No | Yes | Yes | | [Vedic Society](https://aninditabasu.github.io/indica/html/vs.html) | Descriptions of all nouns (names, places, animals, things) from vedic literature | No | Yes | Unknown | +| [Wizard World](https://wizard-world-api.herokuapp.com/swagger/index.html) | Get information from the Harry Potter universe | No | Yes | Yes | | [Wolne Lektury](https://wolnelektury.pl/api/) | API for obtaining information about e-books available on the WolneLektury.pl website | No | Yes | Unknown | **[⬆ Back to Index](#index)** From 3a4e4fd37cae598c2cd6f7f743d4f1c045e9a426 Mon Sep 17 00:00:00 2001 From: blautista Date: Tue, 15 Feb 2022 21:21:49 -0300 Subject: [PATCH 256/315] Add xeno-canto API to Animals --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 584836d8..cdddef39 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,7 @@ API | Description | Auth | HTTPS | CORS | | [RescueGroups](https://userguide.rescuegroups.org/display/APIDG/API+Developers+Guide+Home) | Adoption | No | Yes | Unknown | | [Shibe.Online](http://shibe.online/) | Random pictures of Shiba Inu, cats or birds | No | Yes | Yes | | [The Dog](https://thedogapi.com/) | A public service all about Dogs, free to use when making your fancy new App, Website or Service | `apiKey` | Yes | No | +| [xeno-canto](https://xeno-canto.org/explore/api) | Bird recordings | No | Yes | Unknown | | [Zoo Animals](https://zoo-animal-api.herokuapp.com/) | Facts and pictures of zoo animals | No | Yes | Yes | **[⬆ Back to Index](#index)** From 0d4274f19ee9718d0184e0f1479e1c4c20c3a6e7 Mon Sep 17 00:00:00 2001 From: adamclement-exe <57185830+adamclement-exe@users.noreply.github.com> Date: Wed, 16 Feb 2022 09:49:08 +0000 Subject: [PATCH 257/315] Added https://rps101.pythonanywhere.com/api rock paper scissors with 101 objects API --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 584836d8..975b1f16 100644 --- a/README.md +++ b/README.md @@ -891,6 +891,7 @@ API | Description | Auth | HTTPS | CORS | | [RAWG.io](https://rawg.io/apidocs) | 500,000+ games for 50 platforms including mobiles | `apiKey` | Yes | Unknown | | [Rick and Morty](https://rickandmortyapi.com) | All the Rick and Morty information, including images | No | Yes | Yes | | [Riot Games](https://developer.riotgames.com/) | League of Legends Game Information | `apiKey` | Yes | Unknown | +| [Rock, Paper, Scissors 101](https://rps101.pythonanywhere.com/api) | Rock, Paper, Scissors with 101 objects | No | Yes | Yes | | [RuneScape](https://runescape.wiki/w/Application_programming_interface) | RuneScape and OSRS RPGs information | No | Yes | No | | [Sakura CardCaptor](https://github.com/JessVel/sakura-card-captor-api) | Sakura CardCaptor Cards Information | No | Yes | Unknown | | [Scryfall](https://scryfall.com/docs/api) | Magic: The Gathering database | No | Yes | Yes | From 3c5343ae1d71276b25a99df8446c78ff06e28c96 Mon Sep 17 00:00:00 2001 From: Matheus Felipe <50463866+matheusfelipeog@users.noreply.github.com> Date: Fri, 18 Feb 2022 19:45:14 -0300 Subject: [PATCH 258/315] Add Fun Fact (#3010) ref 1: https://github.com/public-apis/public-apis/pull/3010#issuecomment-1045271683 ref 2: https://github.com/public-apis/public-apis/pull/3010#issuecomment-1045291817 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d3326014..bacad896 100644 --- a/README.md +++ b/README.md @@ -698,6 +698,7 @@ API | Description | Auth | HTTPS | CORS | | [chucknorris.io](https://api.chucknorris.io) | JSON API for hand curated Chuck Norris jokes | No | Yes | Unknown | | [Corporate Buzz Words](https://github.com/sameerkumar18/corporate-bs-generator-api) | REST API for Corporate Buzz Words | No | Yes | Yes | | [Excuser](https://excuser.herokuapp.com/) | Get random excuses for various situations | No | Yes | Unknown | +| [Fun Fact](https://api.aakhilv.me) | A simple HTTPS api that can randomly select and return a fact from the FFA database | No | Yes | Yes | | [Imgflip](https://imgflip.com/api) | Gets an array of popular memes | No | Yes | Unknown | | [Meme Maker](https://mememaker.github.io/API/) | REST API for create your own meme | No | Yes | Unknown | | [NaMoMemes](https://github.com/theIYD/NaMoMemes) | Memes on Narendra Modi | No | Yes | Unknown | From 3d6cf3ae66376ff79f90fef0fff2f7b752ef26d0 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 2 Mar 2022 00:39:32 -0300 Subject: [PATCH 259/315] Rename USDA Nutrients to FoodData Central The correct name of this API is FoodData Central --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 506daa7c..6536796b 100644 --- a/README.md +++ b/README.md @@ -1116,6 +1116,7 @@ API | Description | Auth | HTTPS | CORS | | [COVID-19 Tracker Sri Lanka](https://www.hpb.health.gov.lk/en/api-documentation) | Provides situation of the COVID-19 patients reported in Sri Lanka | No | Yes | Unknown | | [COVID-ID](https://data.covid19.go.id/public/api/prov.json) | Indonesian government Covid data per province | No | Yes | Yes | | [Dataflow Kit COVID-19](https://covid-19.dataflowkit.com) | COVID-19 live statistics into sites per hour | No | Yes | Unknown | +| [FoodData Central](https://fdc.nal.usda.gov/) | National Nutrient Database for Standard Reference | `apiKey` | Yes | Unknown | | [Healthcare.gov](https://www.healthcare.gov/developers/) | Educational content about the US Health Insurance Marketplace | No | Yes | Unknown | | [Humanitarian Data Exchange](https://data.humdata.org/) | Humanitarian Data Exchange (HDX) is open platform for sharing data across crises and organisations | No | Yes | Unknown | | [Infermedica](https://developer.infermedica.com/docs/) | NLP based symptom checker and patient triage API for health diagnosis from text | `apiKey` | Yes | Yes | @@ -1131,7 +1132,6 @@ API | Description | Auth | HTTPS | CORS | | [openFDA](https://open.fda.gov) | Public FDA data about drugs, devices and foods | `apiKey` | Yes | Unknown | | [Orion Health](https://developer.orionhealth.io/) | Medical platform which allows the development of applications for different healthcare scenarios | `OAuth` | Yes | Unknown | | [Quarantine](https://quarantine.country/coronavirus/api/) | Coronavirus API with free COVID-19 live updates | No | Yes | Yes | -| [USDA Nutrients](https://fdc.nal.usda.gov/) | National Nutrient Database for Standard Reference | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** ### Jobs From e6025d0fab06d6ae5047cc46e6a8259770f806ad Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 2 Mar 2022 01:09:23 -0300 Subject: [PATCH 260/315] Rename Apiip.net IP Geolocation to Apiip --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 404042d8..36218f2a 100644 --- a/README.md +++ b/README.md @@ -920,7 +920,7 @@ API | Description | Auth | HTTPS | CORS | | [administrative-divisons-db](https://github.com/kamikazechaser/administrative-divisions-db) | Get all administrative divisions of a country | No | Yes | Yes | | [adresse.data.gouv.fr](https://adresse.data.gouv.fr) | Address database of France, geocoding and reverse | No | Yes | Unknown | | [Airtel IP](https://sys.airtel.lv/ip2country/1.1.1.1/?full=true) | IP Geolocation API. Collecting data from multiple sources | No | Yes | Unknown | -| [Apiip.net IP Geolocation](https://apiip.net/) | Get location information by IP address | `apiKey` | Yes | Yes | +| [Apiip](https://apiip.net/) | Get location information by IP address | `apiKey` | Yes | Yes | | [apilayer ipstack](https://ipstack.com/) | Locate and identify website visitors by IP address | `apiKey` | Yes | Unknown | | [Battuta](http://battuta.medunes.net) | A (country/region/city) in-cascade location API | `apiKey` | No | Unknown | | [BigDataCloud](https://www.bigdatacloud.com/ip-geolocation-apis) | Provides fast and accurate IP geolocation APIs along with security checks and confidence area | `apiKey` | Yes | Unknown | From 14742612ce924cc024a861bf07f9436b3688619c Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 2 Mar 2022 02:09:05 -0300 Subject: [PATCH 261/315] Rename Rock, Paper, Scissors 101 to RPS 101 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b639cb87..b4f83a40 100644 --- a/README.md +++ b/README.md @@ -894,7 +894,7 @@ API | Description | Auth | HTTPS | CORS | | [RAWG.io](https://rawg.io/apidocs) | 500,000+ games for 50 platforms including mobiles | `apiKey` | Yes | Unknown | | [Rick and Morty](https://rickandmortyapi.com) | All the Rick and Morty information, including images | No | Yes | Yes | | [Riot Games](https://developer.riotgames.com/) | League of Legends Game Information | `apiKey` | Yes | Unknown | -| [Rock, Paper, Scissors 101](https://rps101.pythonanywhere.com/api) | Rock, Paper, Scissors with 101 objects | No | Yes | Yes | +| [RPS 101](https://rps101.pythonanywhere.com/api) | Rock, Paper, Scissors with 101 objects | No | Yes | Yes | | [RuneScape](https://runescape.wiki/w/Application_programming_interface) | RuneScape and OSRS RPGs information | No | Yes | No | | [Sakura CardCaptor](https://github.com/JessVel/sakura-card-captor-api) | Sakura CardCaptor Cards Information | No | Yes | Unknown | | [Scryfall](https://scryfall.com/docs/api) | Magic: The Gathering database | No | Yes | Yes | From fb4f67bce4caf709520014ca23213bb26be19516 Mon Sep 17 00:00:00 2001 From: Gregory Saint-Jean Date: Wed, 2 Mar 2022 16:20:29 -0500 Subject: [PATCH 262/315] Indeed deprecated their traditional APIs. https://developer.indeed.com/docs/publisher-jobs/get-job --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b4f83a40..435546b2 100644 --- a/README.md +++ b/README.md @@ -1147,7 +1147,6 @@ API | Description | Auth | HTTPS | CORS | | [DevITjobs UK](https://devitjobs.uk/job_feed.xml) | Jobs with GraphQL | No | Yes | Yes | | [Findwork](https://findwork.dev/developers/) | Job board | `apiKey` | Yes | Unknown | | [GraphQL Jobs](https://graphql.jobs/docs/api/) | Jobs with GraphQL | No | Yes | Yes | -| [Indeed](https://developer.indeed.com/) | Jobs search engine | `OAuth` | Yes | Unknown | | [Jobs2Careers](http://api.jobs2careers.com/api/spec.pdf) | Job aggregator | `apiKey` | Yes | Unknown | | [Jooble](https://jooble.org/api/about) | Job search engine | `apiKey` | Yes | Unknown | | [Juju](http://www.juju.com/publisher/spec/) | Job search engine | `apiKey` | No | Unknown | From bec246956299b86ceedb4fc85083223193486228 Mon Sep 17 00:00:00 2001 From: mike <97462625+htimsekim@users.noreply.github.com> Date: Fri, 4 Mar 2022 16:11:38 -0600 Subject: [PATCH 263/315] Fixed typo: Upcomimg -> Upcoming (#3082) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 435546b2..2e36f9da 100644 --- a/README.md +++ b/README.md @@ -909,7 +909,7 @@ API | Description | Auth | HTTPS | CORS | | [Universalis](https://universalis.app/docs/index.html) | Final Fantasy XIV market board data | No | Yes | Yes | | [Valorant (non-official)](https://valorant-api.com) | An extensive API containing data of most Valorant in-game items, assets and more | No | Yes | Unknown | | [Wargaming.net](https://developers.wargaming.net/) | Wargaming.net info and stats | `apiKey` | Yes | No | -| [When is next MCU film](https://github.com/DiljotSG/MCU-Countdown/blob/develop/docs/API.md) | Upcomimg MCU film information | No | Yes | Unknown | +| [When is next MCU film](https://github.com/DiljotSG/MCU-Countdown/blob/develop/docs/API.md) | Upcoming MCU film information | No | Yes | Unknown | | [xkcd](https://xkcd.com/json.html) | Retrieve xkcd comics as JSON | No | Yes | No | | [Yu-Gi-Oh!](https://db.ygoprodeck.com/api-guide/) | Yu-Gi-Oh! TCG Information | No | Yes | Unknown | From 111114f674e5d453217de5688d76e73514f01a35 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Fri, 4 Mar 2022 19:48:59 -0300 Subject: [PATCH 264/315] Add icy.tools to Cryptocurrency (#3062) resolve #3062 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2e36f9da..a48efea3 100644 --- a/README.md +++ b/README.md @@ -440,6 +440,7 @@ API | Description | Auth | HTTPS | CORS | | [Gateio](https://www.gate.io/api2) | API provides spot, margin and futures trading operations | `apiKey` | Yes | Unknown | | [Gemini](https://docs.gemini.com/rest-api/) | Cryptocurrencies Exchange | No | Yes | Unknown | | [Huobi](https://huobiapi.github.io/docs/spot/v1/en/) | Seychelles based cryptocurrency exchange | `apiKey` | Yes | Unknown | +| [icy.tools](https://developers.icy.tools/) | GraphQL based NFT API | `apiKey` | Yes | Unknown | | [Indodax](https://github.com/btcid/indodax-official-api-docs) | Trade your Bitcoin and other assets with rupiah | `apiKey` | Yes | Unknown | | [INFURA Ethereum](https://infura.io/product/ethereum) | Interaction with the Ethereum mainnet and several testnets | `apiKey` | Yes | Yes | | [Kraken](https://docs.kraken.com/rest/) | Cryptocurrencies Exchange | `apiKey` | Yes | Unknown | From 85810b77c64fe6c4c087725b182dad5a787f048c Mon Sep 17 00:00:00 2001 From: Exerra Date: Sat, 5 Mar 2022 01:18:38 +0200 Subject: [PATCH 265/315] Add NoPhishy to Anti-Malware (#3065) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a48efea3..3821c041 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,7 @@ API | Description | Auth | HTTPS | CORS | | [MalShare](https://malshare.com/doc.php) | Malware Archive / file sourcing | `apiKey` | Yes | No | | [MalwareBazaar](https://bazaar.abuse.ch/api/) | Collect and share malware samples | `apiKey` | Yes | Unknown | | [Metacert](https://metacert.com/) | Metacert Link Flagging | `apiKey` | Yes | Unknown | +| [NoPhishy](https://rapidapi.com/Amiichu/api/exerra-phishing-check/) | Check links to see if they're known phishing attempts | `apiKey` | Yes | Yes | | [Phisherman](https://phisherman.gg/) | IP/domain/URL reputation | `apiKey` | Yes | Unknown | | [Scanii](https://docs.scanii.com/) | Simple REST API that can scan submitted documents/files for the presence of threats | `apiKey` | Yes | Yes | | [URLhaus](https://urlhaus-api.abuse.ch/) | Bulk queries and Download Malware Samples | No | Yes | Yes | From eb5c9d1c511057c08f8dec8ea7e60fb19f187adc Mon Sep 17 00:00:00 2001 From: PerryPal <69980005+PerryPal21@users.noreply.github.com> Date: Sat, 5 Mar 2022 17:13:51 -0500 Subject: [PATCH 266/315] Add Techy to Entertainment (#3066) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3821c041..ceba168a 100644 --- a/README.md +++ b/README.md @@ -706,6 +706,7 @@ API | Description | Auth | HTTPS | CORS | | [Meme Maker](https://mememaker.github.io/API/) | REST API for create your own meme | No | Yes | Unknown | | [NaMoMemes](https://github.com/theIYD/NaMoMemes) | Memes on Narendra Modi | No | Yes | Unknown | | [Random Useless Facts](https://uselessfacts.jsph.pl/) | Get useless, but true facts | No | Yes | Unknown | +| [Techy](https://techy-api.vercel.app/) | JSON and Plaintext API for tech-savvy sounding phrases | No | Yes | Unknown | | [Yo Momma Jokes](https://github.com/beanboi7/yomomma-apiv2) | REST API for Yo Momma Jokes | No | Yes | Unknown | **[⬆ Back to Index](#index)** From a739aa2f2e00b472ac59162d65e86b8a5511cbc3 Mon Sep 17 00:00:00 2001 From: Carol <55922985+cyborg48@users.noreply.github.com> Date: Sat, 5 Mar 2022 17:41:42 -0500 Subject: [PATCH 267/315] Add Website Carbon to Environment (#3073) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ceba168a..143db3e1 100644 --- a/README.md +++ b/README.md @@ -729,6 +729,7 @@ API | Description | Auth | HTTPS | CORS | | [PVWatts](https://developer.nrel.gov/docs/solar/pvwatts/v6/) | Energy production photovoltaic (PV) energy systems | `apiKey` | Yes | Unknown | | [Srp Energy](https://srpenergy-api-client-python.readthedocs.io/en/latest/api.html) | Hourly usage energy report for Srp customers | `apiKey` | Yes | No | | [UK Carbon Intensity](https://carbon-intensity.github.io/api-definitions/#carbon-intensity-api-v1-0-0) | The Official Carbon Intensity API for Great Britain developed by National Grid | No | Yes | Unknown | +| [Website Carbon](https://api.websitecarbon.com/) | API to estimate the carbon footprint of loading web pages | No | Yes | Unknown | **[⬆ Back to Index](#index)** ### Events From ea02bd21c393f6225dcbbd22b8cd9efa5d7b45bd Mon Sep 17 00:00:00 2001 From: FayeNichols <95420198+FayeNichols@users.noreply.github.com> Date: Sun, 6 Mar 2022 00:13:05 +0100 Subject: [PATCH 268/315] Add Hirak Exchange Rates to Cryptocurrency (#3076) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 143db3e1..7dbbf4ed 100644 --- a/README.md +++ b/README.md @@ -440,6 +440,7 @@ API | Description | Auth | HTTPS | CORS | | [FTX](https://docs.ftx.com/) | Complete REST, websocket, and FTX APIs to suit your algorithmic trading needs | `apiKey` | Yes | Yes | | [Gateio](https://www.gate.io/api2) | API provides spot, margin and futures trading operations | `apiKey` | Yes | Unknown | | [Gemini](https://docs.gemini.com/rest-api/) | Cryptocurrencies Exchange | No | Yes | Unknown | +| [Hirak Exchange Rates](https://rates.hirak.site/) | Exchange rates between 162 currency & 300 crypto currency update each 5 min, accurate, no limits | `apiKey` | Yes | Unknown | | [Huobi](https://huobiapi.github.io/docs/spot/v1/en/) | Seychelles based cryptocurrency exchange | `apiKey` | Yes | Unknown | | [icy.tools](https://developers.icy.tools/) | GraphQL based NFT API | `apiKey` | Yes | Unknown | | [Indodax](https://github.com/btcid/indodax-official-api-docs) | Trade your Bitcoin and other assets with rupiah | `apiKey` | Yes | Unknown | From aa6a57cf4a9fc67df158c7f59a1dcec1c3ccf7fd Mon Sep 17 00:00:00 2001 From: Agrim Prasad Date: Sun, 6 Mar 2022 12:27:23 +0800 Subject: [PATCH 269/315] Add Lecto Translation to Text Analysis (#3072) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7dbbf4ed..d4d25b42 100644 --- a/README.md +++ b/README.md @@ -1621,6 +1621,7 @@ API | Description | Auth | HTTPS | CORS | | [Detect Language](https://detectlanguage.com/) | Detects text language | `apiKey` | Yes | Unknown | | [ELI](https://nlp.insightera.co.th/docs/v1.0) | Natural Language Processing Tools for Thai Language | `apiKey` | Yes | Unknown | | [Google Cloud Natural](https://cloud.google.com/natural-language/docs/) | Natural language understanding technology, including sentiment, entity and syntax analysis | `apiKey` | Yes | Unknown | +| [Lecto Translation](https://rapidapi.com/lecto-lecto-default/api/lecto-translation/) | Translation API with free tier and reasonable prices | `apiKey` | Yes | Yes | | [LibreTranslate](https://libretranslate.com/docs) | Translation tool with 17 available languages | No | Yes | Unknown | | [Semantria](https://semantria.readme.io/docs) | Text Analytics with sentiment analysis, categorization & named entity extraction | `OAuth` | Yes | Unknown | | [Sentiment Analysis](https://www.meaningcloud.com/developer/sentiment-analysis) | Multilingual sentiment analysis of texts from different sources | `apiKey` | Yes | Yes | From ee006038eaa244e2af95f4b91a1fe4526f4854c7 Mon Sep 17 00:00:00 2001 From: Roanna Victorio Date: Sat, 5 Mar 2022 22:18:58 -0800 Subject: [PATCH 270/315] Add National Park Service API to Government --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4d25b42..8745963c 100644 --- a/README.md +++ b/README.md @@ -1049,6 +1049,7 @@ API | Description | Auth | HTTPS | CORS | | [INEI](http://iinei.inei.gob.pe/microdatos/) | Peruvian Statistical Government Open Data | No | No | Unknown | | [Interpol Red Notices](https://interpol.api.bund.dev/) | Access and search Interpol Red Notices | No | Yes | Unknown | | [Istanbul (İBB) Open Data](https://data.ibb.gov.tr) | Data sets from the İstanbul Metropolitan Municipality (İBB) | No | Yes | Unknown | +| [National Park Service, US](https://www.nps.gov/subjects/developer/) | Data from the US National Park Service | `apiKey` | Yes | Yes | | [Open Government, ACT](https://www.data.act.gov.au/) | Australian Capital Territory Open Data | No | Yes | Unknown | | [Open Government, Argentina](https://datos.gob.ar/) | Argentina Government Open Data | No | Yes | Unknown | | [Open Government, Australia](https://www.data.gov.au/) | Australian Government Open Data | No | Yes | Unknown | From 4ffa8107ca3041fdde19003888e4054b54011df5 Mon Sep 17 00:00:00 2001 From: seanwlk Date: Sun, 6 Mar 2022 11:43:35 +0100 Subject: [PATCH 271/315] Add Warface to Games & Comics --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4d25b42..3d44c524 100644 --- a/README.md +++ b/README.md @@ -913,6 +913,7 @@ API | Description | Auth | HTTPS | CORS | | [Tronald Dump](https://www.tronalddump.io/) | The dumbest things Donald Trump has ever said | No | Yes | Unknown | | [Universalis](https://universalis.app/docs/index.html) | Final Fantasy XIV market board data | No | Yes | Yes | | [Valorant (non-official)](https://valorant-api.com) | An extensive API containing data of most Valorant in-game items, assets and more | No | Yes | Unknown | +| [Warface (non-official)](https://api.wfstats.cf) | Official API proxy with better data structure and more features | No | Yes | No | | [Wargaming.net](https://developers.wargaming.net/) | Wargaming.net info and stats | `apiKey` | Yes | No | | [When is next MCU film](https://github.com/DiljotSG/MCU-Countdown/blob/develop/docs/API.md) | Upcoming MCU film information | No | Yes | Unknown | | [xkcd](https://xkcd.com/json.html) | Retrieve xkcd comics as JSON | No | Yes | No | From 789eae1fdb1670a66be6277df101f8dbb13f0101 Mon Sep 17 00:00:00 2001 From: Avi Mamenko <49536715+amamenko@users.noreply.github.com> Date: Wed, 9 Mar 2022 19:30:38 -0500 Subject: [PATCH 272/315] Add Owen Wilson Wow API to Video --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4d25b42..1fb8f82b 100644 --- a/README.md +++ b/README.md @@ -1775,6 +1775,7 @@ API | Description | Auth | HTTPS | CORS | | [Motivational Quotes](https://nodejs-quoteapp.herokuapp.com/) | Random Motivational Quotes | No | Yes | Unknown | | [Movie Quote](https://github.com/F4R4N/movie-quote/) | Random Movie and Series Quotes | No | Yes | Yes | | [Open Movie Database](http://www.omdbapi.com/) | Movie information | `apiKey` | Yes | Unknown | +| [Owen Wilson Wow](https://owen-wilson-wow-api.herokuapp.com) | API for actor Owen Wilson's "wow" exclamations in movies | No | Yes | Yes | | [Ron Swanson Quotes](https://github.com/jamesseanwright/ron-swanson-quotes#ron-swanson-quotes-api) | Television | No | Yes | Unknown | | [Simkl](https://simkl.docs.apiary.io) | Movie, TV and Anime data | `apiKey` | Yes | Unknown | | [STAPI](http://stapi.co) | Information on all things Star Trek | No | No | No | From 7a5ad4f50bdc92094a5c363680eae962814076ea Mon Sep 17 00:00:00 2001 From: FayeNichols <95420198+FayeNichols@users.noreply.github.com> Date: Thu, 10 Mar 2022 06:31:21 +0100 Subject: [PATCH 273/315] Add Hirak FaceAPI to Machine Learning (#3078) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4d25b42..16ca0cc2 100644 --- a/README.md +++ b/README.md @@ -1172,6 +1172,7 @@ API | Description | Auth | HTTPS | CORS | | [Deepcode](https://www.deepcode.ai) | AI for code review | No | Yes | Unknown | | [Dialogflow](https://cloud.google.com/dialogflow/docs/) | Natural Language Processing | `apiKey` | Yes | Unknown | | [EXUDE-API](http://uttesh.com/exude-api/) | Used for the primary ways for filtering the stopping, stemming words from the text data | No | Yes | Yes | +| [Hirak FaceAPI](https://faceapi.hirak.site/) | Face detection, face recognition with age estimation/gender estimation, accurate, no quota limits | `apiKey` | Yes | Unknown | | [Imagga](https://imagga.com/) | Image Recognition Solutions like Tagging, Visual Search, NSFW moderation | `apiKey` | Yes | Unknown | | [Inferdo](https://rapidapi.com/user/inferdo) | Computer Vision services like Facial detection, Image labeling, NSFW classification | `apiKey` | Yes | Unknown | | [IPS Online](https://docs.identity.ps/docs) | Face and License Plate Anonymization | `apiKey` | Yes | Unknown | From 51763b1d3f3725074c20dc2bc2a2121e0114e5b1 Mon Sep 17 00:00:00 2001 From: FayeNichols <95420198+FayeNichols@users.noreply.github.com> Date: Fri, 11 Mar 2022 06:45:55 +0100 Subject: [PATCH 274/315] Add Hirak Translation to Text Analysis (#3075) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 11495673..83b3289c 100644 --- a/README.md +++ b/README.md @@ -1623,6 +1623,7 @@ API | Description | Auth | HTTPS | CORS | | [Detect Language](https://detectlanguage.com/) | Detects text language | `apiKey` | Yes | Unknown | | [ELI](https://nlp.insightera.co.th/docs/v1.0) | Natural Language Processing Tools for Thai Language | `apiKey` | Yes | Unknown | | [Google Cloud Natural](https://cloud.google.com/natural-language/docs/) | Natural language understanding technology, including sentiment, entity and syntax analysis | `apiKey` | Yes | Unknown | +| [Hirak Translation](https://translate.hirak.site/) | Translate between 21 of most used languages, accurate, unlimited requests | `apiKey` | Yes | Unknown | | [Lecto Translation](https://rapidapi.com/lecto-lecto-default/api/lecto-translation/) | Translation API with free tier and reasonable prices | `apiKey` | Yes | Yes | | [LibreTranslate](https://libretranslate.com/docs) | Translation tool with 17 available languages | No | Yes | Unknown | | [Semantria](https://semantria.readme.io/docs) | Text Analytics with sentiment analysis, categorization & named entity extraction | `OAuth` | Yes | Unknown | From 1f2645758dd9e1dee021d3bda345f621b818a30a Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Fri, 11 Mar 2022 19:30:38 +0800 Subject: [PATCH 275/315] Add files via upload --- ...586-APILayerLogoUpdate2022-LJ_v2-HighRes.png | Bin 0 -> 14630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png diff --git a/.github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png b/.github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png new file mode 100644 index 0000000000000000000000000000000000000000..43a9b3276ba10f3d2ca4fb6a564ffb4b8e5287ee GIT binary patch literal 14630 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 W(q+uuw@7*4r1C;Tp-Rpw?Ee9Z#TK#v literal 0 HcmV?d00001 From 8e5806cc9037cc58cce2b7c8ed207f521fdda73a Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Fri, 11 Mar 2022 19:33:53 +0800 Subject: [PATCH 276/315] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 83b3289c..a36031f4 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@

The fastest way to integrate APIs into any product

From 96e9033d4252739e96cbea94965c516973b3f768 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Fri, 11 Mar 2022 19:48:22 +0800 Subject: [PATCH 277/315] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a36031f4..c2c6f188 100644 --- a/README.md +++ b/README.md @@ -1617,6 +1617,7 @@ API | Description | Auth | HTTPS | CORS | ### Text Analysis API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| +| [Code Detection API](https://codedetectionapi.runtime.dev) | Detect, label, format and enrich the code in your app or in your data pipeline | `OAuth` | Yes | Unknown | | [apilayer languagelayer](https://languagelayer.com/) | Language Detection JSON API supporting 173 languages | `OAuth` | Yes | Unknown | | [Aylien Text Analysis](https://docs.aylien.com/textapi/#getting-started) | A collection of information retrieval and natural language APIs | `apiKey` | Yes | Unknown | | [Cloudmersive Natural Language Processing](https://www.cloudmersive.com/nlp-api) | Natural language processing and text analysis | `apiKey` | Yes | Yes | From 18f105a843492833b12f3685e666926e323fea78 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Fri, 11 Mar 2022 20:50:20 +0800 Subject: [PATCH 278/315] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c2c6f188..43fd66f2 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@

Special thanks to:

- +

@@ -80,9 +80,9 @@ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience.
- +
- M3O Logo + APILayer

The fastest way to integrate APIs into any product

From 80f311a0165993e38bf56f31d1540308c8362754 Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Fri, 11 Mar 2022 16:52:23 +0100 Subject: [PATCH 279/315] Revert "Add files via upload" This reverts commit 1f2645758dd9e1dee021d3bda345f621b818a30a. --- ...586-APILayerLogoUpdate2022-LJ_v2-HighRes.png | Bin 14630 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png diff --git a/.github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png b/.github/assets/sponsors_logo/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png deleted file mode 100644 index 43a9b3276ba10f3d2ca4fb6a564ffb4b8e5287ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14630 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 W(q+uuw@7*4r1C;Tp-Rpw?Ee9Z#TK#v From f94132fb6eb69d962559c7b3f0678950d2983b12 Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Fri, 11 Mar 2022 16:52:30 +0100 Subject: [PATCH 280/315] Revert "Update README.md" This reverts commit 8e5806cc9037cc58cce2b7c8ed207f521fdda73a. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43fd66f2..7d595e2b 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@

The fastest way to integrate APIs into any product

From 68b4fb0f004100cdaa17442603952dba5780f3b3 Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Fri, 11 Mar 2022 16:52:36 +0100 Subject: [PATCH 281/315] Revert "Update README.md" This reverts commit 96e9033d4252739e96cbea94965c516973b3f768. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7d595e2b..3e8f1683 100644 --- a/README.md +++ b/README.md @@ -1617,7 +1617,6 @@ API | Description | Auth | HTTPS | CORS | ### Text Analysis API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| -| [Code Detection API](https://codedetectionapi.runtime.dev) | Detect, label, format and enrich the code in your app or in your data pipeline | `OAuth` | Yes | Unknown | | [apilayer languagelayer](https://languagelayer.com/) | Language Detection JSON API supporting 173 languages | `OAuth` | Yes | Unknown | | [Aylien Text Analysis](https://docs.aylien.com/textapi/#getting-started) | A collection of information retrieval and natural language APIs | `apiKey` | Yes | Unknown | | [Cloudmersive Natural Language Processing](https://www.cloudmersive.com/nlp-api) | Natural language processing and text analysis | `apiKey` | Yes | Yes | From 6f133f4619b5a990c0cb32ac26a0d681783d9332 Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Fri, 11 Mar 2022 16:52:41 +0100 Subject: [PATCH 282/315] Revert "Update README.md" This reverts commit 18f105a843492833b12f3685e666926e323fea78. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3e8f1683..83b3289c 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@

Special thanks to:

- +

@@ -80,9 +80,9 @@ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience.
- +
- APILayer + M3O Logo

The fastest way to integrate APIs into any product

From aac6b00424df8fa35b9fce3a4c319e71a6062887 Mon Sep 17 00:00:00 2001 From: Buco <80671351+Bucolo@users.noreply.github.com> Date: Sat, 12 Mar 2022 05:50:07 +0100 Subject: [PATCH 283/315] Update waifu.im: CORS from No to Yes (#3093) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7813e19d..1eda20c1 100644 --- a/README.md +++ b/README.md @@ -206,7 +206,7 @@ API | Description | Auth | HTTPS | CORS | | [Shikimori](https://shikimori.one/api/doc) | Anime discovery, tracking, forum, rates | `OAuth` | Yes | Unknown | | [Studio Ghibli](https://ghibliapi.herokuapp.com) | Resources from Studio Ghibli films | No | Yes | Yes | | [Trace Moe](https://soruly.github.io/trace.moe-api/#/) | A useful tool to get the exact scene of an anime from a screenshot | No | Yes | No | -| [Waifu.im](https://waifu.im/docs) | Get waifu pictures from an archive of over 4000 images and multiple tags | No | Yes | No | +| [Waifu.im](https://waifu.im/docs) | Get waifu pictures from an archive of over 4000 images and multiple tags | No | Yes | Yes | | [Waifu.pics](https://waifu.pics/docs) | Image sharing platform for anime images | No | Yes | No | **[⬆ Back to Index](#index)** From 714c68b7983df9120556f6470b6a69aed60fb512 Mon Sep 17 00:00:00 2001 From: "S.G. Sudhakar" Date: Sun, 13 Mar 2022 05:51:14 +0530 Subject: [PATCH 284/315] Add WhatJobs to Jobs (#3090) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1eda20c1..5ed97834 100644 --- a/README.md +++ b/README.md @@ -1162,6 +1162,7 @@ API | Description | Auth | HTTPS | CORS | | [The Muse](https://www.themuse.com/developers/api/v2) | Job board and company profiles | `apiKey` | Yes | Unknown | | [Upwork](https://developers.upwork.com/) | Freelance job board and management system | `OAuth` | Yes | Unknown | | [USAJOBS](https://developer.usajobs.gov/) | US government job board | `apiKey` | Yes | Unknown | +| [WhatJobs](https://www.whatjobs.com/affiliates) | Job search engine | `apiKey` | Yes | Unknown | | [ZipRecruiter](https://www.ziprecruiter.com/publishers) | Job search app and website | `apiKey` | Yes | Unknown | **[⬆ Back to Index](#index)** From 17bc0e540b51f05ffdb14f3f7ab566ec170cd021 Mon Sep 17 00:00:00 2001 From: Arne Date: Sun, 13 Mar 2022 01:42:41 +0100 Subject: [PATCH 285/315] Add MFaaS to Video (#3091) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5ed97834..f574249e 100644 --- a/README.md +++ b/README.md @@ -1777,6 +1777,7 @@ API | Description | Auth | HTTPS | CORS | | [JSON2Video](https://json2video.com) | Create and edit videos programmatically: watermarks,resizing,slideshows,voice-over,text animations | `apiKey` | Yes | No | | [Lucifer Quotes](https://github.com/shadowoff09/lucifer-quotes) | Returns Lucifer quotes | No | Yes | Unknown | | [MCU Countdown](https://github.com/DiljotSG/MCU-Countdown) | A Countdown to the next MCU Film | No | Yes | Yes | +| [MFaaS](https://stitti.github.io/MFaaS) | Modern Family as a Service: API for receiving quotes and actors | No | Yes | No | | [Motivational Quotes](https://nodejs-quoteapp.herokuapp.com/) | Random Motivational Quotes | No | Yes | Unknown | | [Movie Quote](https://github.com/F4R4N/movie-quote/) | Random Movie and Series Quotes | No | Yes | Yes | | [Open Movie Database](http://www.omdbapi.com/) | Movie information | `apiKey` | Yes | Unknown | From 8b30dafe013a614a03bc62103b3f5645a452df5c Mon Sep 17 00:00:00 2001 From: Diego Parrilla Date: Sun, 13 Mar 2022 02:18:48 +0100 Subject: [PATCH 286/315] Add Threat Jammer to Security (#3094) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b2fcc29b..7e07cbb5 100644 --- a/README.md +++ b/README.md @@ -1477,6 +1477,7 @@ API | Description | Auth | HTTPS | CORS | | [SecurityTrails](https://securitytrails.com/corp/apidocs) | Domain and IP related information such as current and historical WHOIS and DNS records | `apiKey` | Yes | Unknown | | [Shodan](https://developer.shodan.io/) | Search engine for Internet connected devices | `apiKey` | Yes | Unknown | | [Spyse](https://spyse-dev.readme.io/reference/quick-start) | Access data on all Internet assets and build powerful attack surface management applications | `apiKey` | Yes | Unknown | +| [Threat Jammer](https://threatjammer.com/docs/index) | Risk scoring service from curated threat intelligence data | `apiKey` | Yes | Unknown | | [UK Police](https://data.police.uk/docs/) | UK Police data | No | Yes | Unknown | | [Virushee](https://api.virushee.com/) | Virushee file/data scanning | No | Yes | Yes | | [VulDB](https://vuldb.com/?doc.api) | VulDB API allows to initiate queries for one or more items along with transactional bots | `apiKey` | Yes | Unknown | From f9a60a1da94a6e701215142cb96b1a6445b567c7 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:35:17 -0300 Subject: [PATCH 287/315] Remove UnixTime Converter, it's broken UnixTime Converter returns http code 522 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7e07cbb5..ed7fb947 100644 --- a/README.md +++ b/README.md @@ -357,7 +357,6 @@ API | Description | Auth | HTTPS | CORS | | [Non-Working Days](https://isdayoff.ru) | Simple REST API for checking working, non-working or short days for Russia, CIS, USA and other | No | Yes | Yes | | [Russian Calendar](https://github.com/egno/work-calendar) | Check if a date is a Russian holiday or not | No | Yes | No | | [UK Bank Holidays](https://www.gov.uk/bank-holidays.json) | Bank holidays in England and Wales, Scotland and Northern Ireland | No | Yes | Unknown | -| [UnixTime Converter](https://unixtime.co.za) | A REST API to convert UnixTime to DateTime and DateTime to UnixTime | No | Yes | Unknown | **[⬆ Back to Index](#index)** ### Cloud Storage & File Sharing From 30aa48ffc45155904a52bba241ce0ecb0267acbc Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:41:13 -0300 Subject: [PATCH 288/315] Remove Form2Channel, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ed7fb947..2ecf13f8 100644 --- a/README.md +++ b/README.md @@ -530,7 +530,6 @@ API | Description | Auth | HTTPS | CORS | | [Docker Hub](https://docs.docker.com/docker-hub/api/latest/) | Interact with Docker Hub | `apiKey` | Yes | Yes | | [DomainDb Info](https://api.domainsdb.info/) | Domain name search to find all domains containing particular words/phrases/etc | No | Yes | Unknown | | [ExtendsClass JSON Storage](https://extendsclass.com/json-storage.html) | A simple JSON store API | No | Yes | Yes | -| [Form2Channel](https://form2channel.com/) | Send static html form submissions to Google Sheets, Email, Slack or Telegram | No | Yes | Yes | | [GeekFlare](https://apidocs.geekflare.com/docs/geekflare-api) | Provide numerous capabilities for important testing and monitoring methods for websites | `apiKey` | Yes | Unknown | | [Genderize.io](https://genderize.io) | Estimates a gender from a first name | No | Yes | Yes | | [GETPing](https://www.getping.info) | Trigger an email notification with a simple GET request | `apiKey` | Yes | Unknown | From b7b05c55f2b7a0bfcbfc8d142c2f3242313e8e53 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:45:28 -0300 Subject: [PATCH 289/315] Remove Live precious metal prices, it's broken Live precious metal prices returns http code 500 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2ecf13f8..f2454560 100644 --- a/README.md +++ b/README.md @@ -765,7 +765,6 @@ API | Description | Auth | HTTPS | CORS | | [Indian Mutual Fund](https://www.mfapi.in/) | Get complete history of India Mutual Funds Data | No | Yes | Unknown | | [Intrinio](https://intrinio.com/) | A wide selection of financial data feeds | `apiKey` | Yes | Unknown | | [Klarna](https://docs.klarna.com/klarna-payments/api/payments-api/) | Klarna payment and shopping service | `apiKey` | Yes | Unknown | -| [Live precious metal prices](https://notnullsolutions.com/live-metal-prices-api/live-precious-metal-prices-api-documentation) | Live prices for all precious metals like Gold | `apiKey` | Yes | Unknown | | [MercadoPago](https://www.mercadopago.com.br/developers/es/reference) | Mercado Pago API reference - all the information you need to develop your integrations | `apiKey` | Yes | Unknown | | [Mono](https://mono.co/) | Connect with users’ bank accounts and access transaction data in Africa | `apiKey` | Yes | Unknown | | [Moov](https://docs.moov.io/api/) | The Moov API makes it simple for platforms to send, receive, and store money | `apiKey` | Yes | Unknown | From 63311099cfc3af1debd5a49acd7455443a331cc9 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:47:07 -0300 Subject: [PATCH 290/315] Remove IP Sidekick, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f2454560..cefa2962 100644 --- a/README.md +++ b/README.md @@ -960,7 +960,6 @@ API | Description | Auth | HTTPS | CORS | | [IBGE](https://servicodados.ibge.gov.br/api/docs/) | Aggregate services of IBGE (Brazilian Institute of Geography and Statistics) | No | Yes | Unknown | | [IP 2 Country](https://ip2country.info) | Map an IP to a country | No | Yes | Unknown | | [IP Address Details](https://ipinfo.io/) | Find geolocation with ip address | No | Yes | Unknown | -| [IP Sidekick](https://ipsidekick.com) | Geolocation API that returns extra information about an IP address | `apiKey` | Yes | Unknown | | [IP Vigilante](https://www.ipvigilante.com/) | Free IP Geolocation API | No | Yes | Unknown | | [ip-api](https://ip-api.com/docs) | Find location with IP address or domain | No | No | Unknown | | [IP2Location](https://www.ip2location.com/web-service/ip2location) | IP geolocation web service to get more than 55 parameters | `apiKey` | Yes | Unknown | From 353fbc18a02d9b8626b9677e8d5c8f48afcd4b24 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:49:11 -0300 Subject: [PATCH 291/315] Remove Brazil CNPJ, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index cefa2962..7698ab38 100644 --- a/README.md +++ b/README.md @@ -1014,7 +1014,6 @@ API | Description | Auth | HTTPS | CORS | | [BCLaws](https://www.bclaws.gov.bc.ca/civix/template/complete/api/index.html) | Access to the laws of British Columbia | No | No | Unknown | | [Brazil](https://brasilapi.com.br/) | Community driven API for Brazil Public Data | No | Yes | Yes | | [Brazil Central Bank Open Data](https://dadosabertos.bcb.gov.br/) | Brazil Central Bank Open Data | No | Yes | Unknown | -| [Brazil CNPJ](https://github.com/gabzin/cnpj) | Brazilian Free CNPJ consultant API | No | Yes | Unknown | | [Brazil Receita WS](https://www.receitaws.com.br/) | Consult companies by CNPJ for Brazilian companies | No | Yes | Unknown | | [Brazilian Chamber of Deputies Open Data](https://dadosabertos.camara.leg.br/swagger/api.html) | Provides legislative information in Apis XML and JSON, as well as files in various formats | No | Yes | No | | [Census.gov](https://www.census.gov/data/developers/data-sets.html) | The US Census Bureau provides various APIs and data sets on demographics and businesses | No | Yes | Unknown | From 4ec09fa89f189dae8fb1f9a9e8a02ca8b2a36831 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:51:42 -0300 Subject: [PATCH 292/315] Remove "City, Kyiv", it's broken City, Kyiv returns http code 522 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7698ab38..a52fe14b 100644 --- a/README.md +++ b/README.md @@ -1021,7 +1021,6 @@ API | Description | Auth | HTTPS | CORS | | [City, Gdańsk](https://ckan.multimediagdansk.pl/en) | Gdańsk (PL) City Open Data | No | Yes | Unknown | | [City, Gdynia](http://otwartedane.gdynia.pl/en/api_doc.html) | Gdynia (PL) City Open Data | No | No | Unknown | | [City, Helsinki](https://hri.fi/en_gb/) | Helsinki(FI) City Open Data | No | Yes | Unknown | -| [City, Kyiv](https://data.kyivcity.gov.ua/) | Kyiv(UA) City Open Data | No | Yes | Unknown | | [City, Lviv](https://opendata.city-adm.lviv.ua/) | Lviv(UA) City Open Data | No | Yes | Unknown | | [City, Nantes Open Data](https://data.nantesmetropole.fr/pages/home/) | Nantes(FR) City Open Data | `apiKey` | Yes | Unknown | | [City, New York Open Data](https://opendata.cityofnewyork.us/) | New York (US) City Open Data | No | Yes | Unknown | From 8d891a5c37a90582fa85930134756cea74820cd2 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:54:10 -0300 Subject: [PATCH 293/315] Remove "City, Warsaw Open Data", it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a52fe14b..ccd712ec 100644 --- a/README.md +++ b/README.md @@ -1026,7 +1026,6 @@ API | Description | Auth | HTTPS | CORS | | [City, New York Open Data](https://opendata.cityofnewyork.us/) | New York (US) City Open Data | No | Yes | Unknown | | [City, Prague Open Data](http://opendata.praha.eu/en) | Prague(CZ) City Open Data | No | No | Unknown | | [City, Toronto Open Data](https://open.toronto.ca/) | Toronto (CA) City Open Data | No | Yes | Yes | -| [City, Warsaw Open Data](https://api.um.warszawa.pl/) | Warsaw (PL) City Open Data | `apiKey` | Yes | Unknown | | [Code.gov](https://code.gov) | The primary platform for Open Source and code sharing for the U.S. Federal Government | `apiKey` | Yes | Unknown | | [Colorado Information Marketplace](https://data.colorado.gov/) | Colorado State Government Open Data | No | Yes | Unknown | | [Data USA](https://datausa.io/about/api/) | US Public Data | No | Yes | Unknown | From 9b91662991297928b2dba586f246b7420f78f15f Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:55:56 -0300 Subject: [PATCH 294/315] Remove "Open Government, Russia", it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ccd712ec..8cfab924 100644 --- a/README.md +++ b/README.md @@ -1076,7 +1076,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, Portugal](https://dados.gov.pt/en/docapi/) | Portugal Government Open Data | No | Yes | Yes | | [Open Government, Queensland Government](https://www.data.qld.gov.au/) | Queensland Government Open Data | No | Yes | Unknown | | [Open Government, Romania](http://data.gov.ro/) | Romania Government Open Data | No | No | Unknown | -| [Open Government, Russia](https://data.gov.ru/?language=en) | Open Data Portal Russia | `apiKey` | No | Unknown | | [Open Government, Saudi Arabia](https://data.gov.sa) | Saudi Arabia Government Open Data | No | Yes | Unknown | | [Open Government, Singapore](https://data.gov.sg/developer) | Singapore Government Open Data | No | Yes | Unknown | | [Open Government, Slovakia](https://data.gov.sk/en/) | Slovakia Government Open Data | No | Yes | Unknown | From a25ece6dd875a44600b5645c760b52e083c1f756 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 22:57:16 -0300 Subject: [PATCH 295/315] Remove "Open Government, Ukraine", it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 8cfab924..025158c8 100644 --- a/README.md +++ b/README.md @@ -1087,7 +1087,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, Taiwan](https://data.gov.tw/) | Taiwan Government Open Data | No | Yes | Unknown | | [Open Government, Thailand](https://data.go.th/) | Thailand Government Open Data | `apiKey` | Yes | Unknown | | [Open Government, UK](https://data.gov.uk/) | UK Government Open Data | No | Yes | Unknown | -| [Open Government, Ukraine](https://data.gov.ua/) | Ukraine Government Open Data | No | Yes | Unknown | | [Open Government, USA](https://www.data.gov/) | United States Government Open Data | No | Yes | Unknown | | [Open Government, Victoria State Government](https://www.data.vic.gov.au/) | Victoria State Government Open Data | No | Yes | Unknown | | [Open Government, West Australia](https://data.wa.gov.au/) | West Australia Open Data | No | Yes | Unknown | From a1840368b887be7bdbcdfec4ae4e752aa4d1289c Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:00:14 -0300 Subject: [PATCH 296/315] Remove UK government API catalogue, it's broken UK government API catalogue returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 025158c8..0845a285 100644 --- a/README.md +++ b/README.md @@ -1092,7 +1092,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, West Australia](https://data.wa.gov.au/) | West Australia Open Data | No | Yes | Unknown | | [Represent by Open North](https://represent.opennorth.ca/) | Find Canadian Government Representatives | No | Yes | Unknown | | [UK Companies House](https://developer.company-information.service.gov.uk/) | UK Companies House Data from the UK government | `OAuth` | Yes | Unknown | -| [UK government API catalogue](https://alphagov.github.io/api-catalogue) | APIs from UK government organisations | No | Yes | Unknown | | [US Presidential Election Data by TogaTech](https://uselection.togatech.org/api/) | Basic candidate data and live electoral vote counts for top two parties in US presidential election | No | Yes | No | | [USA.gov](https://www.usa.gov/developer) | Authoritative information on U.S. programs, events, services and more | `apiKey` | Yes | Unknown | | [USAspending.gov](https://api.usaspending.gov/) | US federal spending data | No | Yes | Unknown | From 1e587cf2eb35d481265a603fad7608865fb3499d Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:02:19 -0300 Subject: [PATCH 297/315] Remove Quadratic Solver, it's broken Quadratic Solver returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0845a285..d461b143 100644 --- a/README.md +++ b/README.md @@ -1415,7 +1415,6 @@ API | Description | Auth | HTTPS | CORS | | [Open Notify](http://open-notify.org/Open-Notify-API/) | ISS astronauts, current location, etc | No | No | No | | [Open Science Framework](https://developer.osf.io) | Repository and archive for study designs, research materials, data, manuscripts, etc | No | Yes | Unknown | | [Purple Air](https://www2.purpleair.com/) | Real Time Air Quality Monitoring | No | Yes | Unknown | -| [Quadratic Solver](https://quadratic-solver-api.herokuapp.com/) | A Quadratic Solver | No | Yes | Yes | | [Remote Calc](https://github.com/elizabethadegbaju/remotecalc) | Decodes base64 encoding and parses it to return a solution to the calculation in JSON | No | Yes | Yes | | [SHARE](https://share.osf.io/api/v2/) | A free, open, dataset about research and scholarly activities | No | Yes | No | | [SpaceX](https://github.com/r-spacex/SpaceX-API) | Company, vehicle, launchpad and launch data | No | Yes | No | From 8e848b9ff00b0e013e0c5b07cb3677c1c3c1e66c Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:04:58 -0300 Subject: [PATCH 298/315] Remove Reconmap, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index d461b143..1bd0c0fc 100644 --- a/README.md +++ b/README.md @@ -1462,7 +1462,6 @@ API | Description | Auth | HTTPS | CORS | | [PhishStats](https://phishstats.info/) | Phishing database | No | Yes | Unknown | | [Privacy.com](https://privacy.com/developer/docs) | Generate merchant-specific and one-time use credit card numbers that link back to your bank | `apiKey` | Yes | Unknown | | [Pulsedive](https://pulsedive.com/api/) | Scan, search and collect threat intelligence data in real-time | `apiKey` | Yes | Unknown | -| [Reconmap](https://api.reconmap.org/docs/) | Reconmap APIS for VAPT (vulnerability assessment and penetration testing) automation and reporting | `OAuth` | Yes | Unknown | | [SecurityTrails](https://securitytrails.com/corp/apidocs) | Domain and IP related information such as current and historical WHOIS and DNS records | `apiKey` | Yes | Unknown | | [Shodan](https://developer.shodan.io/) | Search engine for Internet connected devices | `apiKey` | Yes | Unknown | | [Spyse](https://spyse-dev.readme.io/reference/quick-start) | Access data on all Internet assets and build powerful attack surface management applications | `apiKey` | Yes | Unknown | From 67245295653a63ac7ed086a8d222de8b4498d9a3 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:06:06 -0300 Subject: [PATCH 299/315] Remove Daraz Data, it's broken Daraz Data returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1bd0c0fc..216f454f 100644 --- a/README.md +++ b/README.md @@ -1475,7 +1475,6 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Best Buy](https://bestbuyapis.github.io/api-documentation/#overview) | Products, Buying Options, Categories, Recommendations, Stores and Commerce | `apiKey` | Yes | Unknown | -| [Daraz Data](https://rapidapi.com/mnadeem24434@gmail.com/api/get-daraz-product-data/) | Get daraz product detail by it's product URL | `apiKey` | Yes | Unknown | | [Digi-Key](https://www.digikey.com/en/resources/api-solutions) | Retrieve price and inventory of electronic components as well as place orders | `OAuth` | Yes | Unknown | | [Dummy Products](https://dummyproducts-api.herokuapp.com/) | An api to fetch dummy e-commerce products JSON data with placeholder images | `apiKey` | Yes | Yes | | [eBay](https://developer.ebay.com/) | Sell and Buy on eBay | `OAuth` | Yes | Unknown | From e40cebde8251ed9ebbc421994af5cc8555997096 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:07:04 -0300 Subject: [PATCH 300/315] Remove Tennis-data, it's broken Tennis-data returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 216f454f..b58f2c50 100644 --- a/README.md +++ b/README.md @@ -1568,7 +1568,6 @@ API | Description | Auth | HTTPS | CORS | | [Squiggle](https://api.squiggle.com.au) | Fixtures, results and predictions for Australian Football League matches | No | Yes | Yes | | [Strava](https://strava.github.io/api/) | Connect with athletes, activities and more | `OAuth` | Yes | Unknown | | [SuredBits](https://suredbits.com/api/) | Query sports data, including teams, players, games, scores and statistics | No | No | No | -| [Tennis-data](https://rapidapi.com/marindelija/api/tennis-data1/) | Get tennis playes, tournaments and matches | `apiKey` | Yes | Unknown | | [TheSportsDB](https://www.thesportsdb.com/api.php) | Crowd-Sourced Sports Data and Artwork | `apiKey` | Yes | Yes | | [Tredict](https://www.tredict.com/blog/oauth_docs/) | Get and set activities, health data and more | `OAuth` | Yes | Unknown | | [Wger](https://wger.de/en/software/api) | Workout manager data as exercises, muscles or equipment | `apiKey` | Yes | Unknown | From 93bf8cbb06553cc5857b70b0db95ebd44f3e3763 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:08:16 -0300 Subject: [PATCH 301/315] Remove Sentium, it's broken Sentium returns http code 503 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b58f2c50..5c8936f4 100644 --- a/README.md +++ b/README.md @@ -1617,7 +1617,6 @@ API | Description | Auth | HTTPS | CORS | | [LibreTranslate](https://libretranslate.com/docs) | Translation tool with 17 available languages | No | Yes | Unknown | | [Semantria](https://semantria.readme.io/docs) | Text Analytics with sentiment analysis, categorization & named entity extraction | `OAuth` | Yes | Unknown | | [Sentiment Analysis](https://www.meaningcloud.com/developer/sentiment-analysis) | Multilingual sentiment analysis of texts from different sources | `apiKey` | Yes | Yes | -| [Sentium](https://sentim-api.herokuapp.com/) | Free API for Text Sentimental analysis | No | Yes | Unknown | | [Tisane](https://tisane.ai/) | Text Analytics with focus on detection of abusive content and law enforcement applications | `OAuth` | Yes | Yes | | [Watson Natural Language Understanding](https://cloud.ibm.com/apidocs/natural-language-understanding/natural-language-understanding) | Natural language processing for advanced text analysis | `OAuth` | Yes | Unknown | From df9eb2ed247ab2d7a985e97787fbc26a3e5e7987 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:11:08 -0300 Subject: [PATCH 302/315] Remove Utelly, it's broken Utelly returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5c8936f4..dded7d7e 100644 --- a/README.md +++ b/README.md @@ -1786,7 +1786,6 @@ API | Description | Auth | HTTPS | CORS | | [TVDB](https://thetvdb.com/api-information) | Television data | `apiKey` | Yes | Unknown | | [TVMaze](http://www.tvmaze.com/api) | TV Show Data | No | No | Unknown | | [uNoGS](https://rapidapi.com/unogs/api/unogsng) | Unofficial Netflix Online Global Search, Search all netflix regions in one place | `apiKey` | Yes | Yes | -| [Utelly](https://rapidapi.com/utelly/api/utelly) | Movies, Series and TV shows Recommendations | `apiKey` | Yes | Unknown | | [Vimeo](https://developer.vimeo.com/) | Vimeo Developer API | `OAuth` | Yes | Unknown | | [Watchmode](https://api.watchmode.com/) | API for finding out the streaming availability of movies & shows | `apiKey` | Yes | Unknown | | [Web Series Quotes Generator](https://github.com/yogeshwaran01/web-series-quotes) | API generates various Web Series Quote Images | No | Yes | Yes | From 4167f2e7fc7052de6dfe6faa4d6935d051523a11 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Sat, 12 Mar 2022 23:13:26 -0300 Subject: [PATCH 303/315] Remove WeatherReactApi, it's broken WeatherReactApi returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index dded7d7e..8d547272 100644 --- a/README.md +++ b/README.md @@ -1825,7 +1825,6 @@ API | Description | Auth | HTTPS | CORS | | [weather-api](https://github.com/robertoduessmann/weather-api) | A RESTful free API to check the weather | No | Yes | No | | [WeatherAPI](https://www.weatherapi.com/) | Weather API with other stuff like Astronomy and Geolocation API | `apiKey` | Yes | Yes | | [Weatherbit](https://www.weatherbit.io/api) | Weather | `apiKey` | Yes | Unknown | -| [WeatherReactApi](https://github.com/iamsainikhil/weather-react-api) | Serverless API functions to fetch weather data | No | Yes | No | | [Yandex.Weather](https://yandex.com/dev/weather/) | Assesses weather condition in specific locations | `apiKey` | Yes | No | **[⬆ Back to Index](#index)** From 33dff391917e6a9cb45755dd05fda53aa9576f69 Mon Sep 17 00:00:00 2001 From: FayeNichols <95420198+FayeNichols@users.noreply.github.com> Date: Wed, 16 Mar 2022 04:59:38 +0100 Subject: [PATCH 304/315] Add "Hirak IP to Country" to Geocoding (#3098) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8d547272..9f6b1851 100644 --- a/README.md +++ b/README.md @@ -956,6 +956,7 @@ API | Description | Auth | HTTPS | CORS | | [Graph Countries](https://github.com/lennertVanSever/graphcountries) | Country-related data like currencies, languages, flags, regions+subregions and bordering countries | No | Yes | Unknown | | [HelloSalut](https://fourtonfish.com/project/hellosalut-api/) | Get hello translation following user language | No | Yes | Unknown | | [HERE Maps](https://developer.here.com) | Create/customize digital maps based on HERE Maps data | `apiKey` | Yes | Unknown | +| [Hirak IP to Country](https://iplocation.hirak.site/) | Ip to location with country code, currency code & currency name, fast response, unlimited requests | `apiKey` | Yes | Unknown | | [Hong Kong GeoData Store](https://geodata.gov.hk/gs/) | API for accessing geo-data of Hong Kong | No | Yes | Unknown | | [IBGE](https://servicodados.ibge.gov.br/api/docs/) | Aggregate services of IBGE (Brazilian Institute of Geography and Statistics) | No | Yes | Unknown | | [IP 2 Country](https://ip2country.info) | Map an IP to a country | No | Yes | Unknown | From 4f3537cf4b3162df83eaebe00ce766b67fe8129e Mon Sep 17 00:00:00 2001 From: FayeNichols <95420198+FayeNichols@users.noreply.github.com> Date: Wed, 16 Mar 2022 05:16:11 +0100 Subject: [PATCH 305/315] Add Hirak OCR to Text Analysis (#3100) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9f6b1851..8bab2d58 100644 --- a/README.md +++ b/README.md @@ -1613,6 +1613,7 @@ API | Description | Auth | HTTPS | CORS | | [Detect Language](https://detectlanguage.com/) | Detects text language | `apiKey` | Yes | Unknown | | [ELI](https://nlp.insightera.co.th/docs/v1.0) | Natural Language Processing Tools for Thai Language | `apiKey` | Yes | Unknown | | [Google Cloud Natural](https://cloud.google.com/natural-language/docs/) | Natural language understanding technology, including sentiment, entity and syntax analysis | `apiKey` | Yes | Unknown | +| [Hirak OCR](https://ocr.hirak.site/) | Image to text -text recognition- from image more than 100 language, accurate, unlimited requests | `apiKey` | Yes | Unknown | | [Hirak Translation](https://translate.hirak.site/) | Translate between 21 of most used languages, accurate, unlimited requests | `apiKey` | Yes | Unknown | | [Lecto Translation](https://rapidapi.com/lecto-lecto-default/api/lecto-translation/) | Translation API with free tier and reasonable prices | `apiKey` | Yes | Yes | | [LibreTranslate](https://libretranslate.com/docs) | Translation tool with 17 available languages | No | Yes | Unknown | From 25250c62180676b92dd9686c6a42b8033290e56e Mon Sep 17 00:00:00 2001 From: Zaldy Pagaduan Jr Date: Wed, 16 Mar 2022 12:29:32 +0800 Subject: [PATCH 306/315] Add PRC Exam Schedule to Government (#3102) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8bab2d58..23df7785 100644 --- a/README.md +++ b/README.md @@ -1091,6 +1091,7 @@ API | Description | Auth | HTTPS | CORS | | [Open Government, USA](https://www.data.gov/) | United States Government Open Data | No | Yes | Unknown | | [Open Government, Victoria State Government](https://www.data.vic.gov.au/) | Victoria State Government Open Data | No | Yes | Unknown | | [Open Government, West Australia](https://data.wa.gov.au/) | West Australia Open Data | No | Yes | Unknown | +| [PRC Exam Schedule](https://api.whenisthenextboardexam.com/docs/) | Unofficial Philippine Professional Regulation Commission's examination schedule | No | Yes | Yes | | [Represent by Open North](https://represent.opennorth.ca/) | Find Canadian Government Representatives | No | Yes | Unknown | | [UK Companies House](https://developer.company-information.service.gov.uk/) | UK Companies House Data from the UK government | `OAuth` | Yes | Unknown | | [US Presidential Election Data by TogaTech](https://uselection.togatech.org/api/) | Basic candidate data and live electoral vote counts for top two parties in US presidential election | No | Yes | No | From d69c9982c8e24a0675e73df43dd6f97cf006b75a Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 16 Mar 2022 01:48:44 -0300 Subject: [PATCH 307/315] Add Free Url Shortener to URL Shorteners (#3097) resolve #3097 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 23df7785..6b920210 100644 --- a/README.md +++ b/README.md @@ -1722,6 +1722,7 @@ API | Description | Auth | HTTPS | CORS | | [Clico](https://cli.com/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config) | URL shortener service | `apiKey` | Yes | Unknown | | [Cutt.ly](https://cutt.ly/api-documentation/cuttly-links-api) | URL shortener service | `apiKey` | Yes | Unknown | | [Drivet URL Shortener](https://wiki.drivet.xyz/en/url-shortener/add-links) | Shorten a long URL easily and fast | No | Yes | Unknown | +| [Free Url Shortener](https://ulvis.net/developer.html) | Free URL Shortener offers a powerful API to interact with other sites | No | Yes | Unknown | | [Git.io](https://github.blog/2011-11-10-git-io-github-url-shortener/) | Git.io URL shortener | No | Yes | Unknown | | [GoTiny](https://github.com/robvanbakel/gotiny-api) | A lightweight URL shortener, focused on ease-of-use for the developer and end-user | No | Yes | Yes | | [Kutt](https://docs.kutt.it/) | Free Modern URL Shortener | `apiKey` | Yes | Yes | From 1dc89b0ddb8a37ef2553fac531bd67a93c843495 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 16 Mar 2022 02:53:10 -0300 Subject: [PATCH 308/315] Remove Affirmations, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 6b920210..cb1d801a 100644 --- a/README.md +++ b/README.md @@ -1314,7 +1314,6 @@ API | Description | Auth | HTTPS | CORS | API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Advice Slip](http://api.adviceslip.com/) | Generate random advice slips | No | Yes | Unknown | -| [Affirmations](https://affirmations.dev/) | Generate Stuart Smalley Affirmations | No | Yes | Unknown | | [Biriyani As A Service](https://biriyani.anoram.com/) | Biriyani images placeholder | No | Yes | No | | [Dev.to](https://developers.forem.com/api) | Access Forem articles, users and other resources via API | `apiKey` | Yes | Unknown | | [Dictum](https://github.com/fisenkodv/dictum) | API to get access to the collection of the most inspiring expressions of mankind | No | Yes | Unknown | From 166eeb5a5112b0ebf8d3cc7d6f3aa2b2518d8131 Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 16 Mar 2022 02:56:08 -0300 Subject: [PATCH 309/315] Remove Kawal Corona, it's broken --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index cb1d801a..0da26164 100644 --- a/README.md +++ b/README.md @@ -1122,7 +1122,6 @@ API | Description | Auth | HTTPS | CORS | | [Healthcare.gov](https://www.healthcare.gov/developers/) | Educational content about the US Health Insurance Marketplace | No | Yes | Unknown | | [Humanitarian Data Exchange](https://data.humdata.org/) | Humanitarian Data Exchange (HDX) is open platform for sharing data across crises and organisations | No | Yes | Unknown | | [Infermedica](https://developer.infermedica.com/docs/) | NLP based symptom checker and patient triage API for health diagnosis from text | `apiKey` | Yes | Yes | -| [Kawal Corona](https://kawalcorona.com/api/) | ID COVID data, include death, positive case and recover | No | Yes | Unknown | | [LAPIS](https://cov-spectrum.ethz.ch/public) | SARS-CoV-2 genomic sequences from public sources | No | Yes | Yes | | [Lexigram](https://docs.lexigram.io/) | NLP that extracts mentions of clinical concepts from text, gives access to clinical ontology | `apiKey` | Yes | Unknown | | [Makeup](http://makeup-api.herokuapp.com/) | Makeup Information | No | No | Unknown | From 81804323e7ab9907226eae256ae56719248c7dce Mon Sep 17 00:00:00 2001 From: Matheus Felipe Date: Wed, 16 Mar 2022 03:02:36 -0300 Subject: [PATCH 310/315] Remove MFaaS, it's broken MFaaS returns http code 404 when accessed --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0da26164..33b47b9a 100644 --- a/README.md +++ b/README.md @@ -1765,7 +1765,6 @@ API | Description | Auth | HTTPS | CORS | | [JSON2Video](https://json2video.com) | Create and edit videos programmatically: watermarks,resizing,slideshows,voice-over,text animations | `apiKey` | Yes | No | | [Lucifer Quotes](https://github.com/shadowoff09/lucifer-quotes) | Returns Lucifer quotes | No | Yes | Unknown | | [MCU Countdown](https://github.com/DiljotSG/MCU-Countdown) | A Countdown to the next MCU Film | No | Yes | Yes | -| [MFaaS](https://stitti.github.io/MFaaS) | Modern Family as a Service: API for receiving quotes and actors | No | Yes | No | | [Motivational Quotes](https://nodejs-quoteapp.herokuapp.com/) | Random Motivational Quotes | No | Yes | Unknown | | [Movie Quote](https://github.com/F4R4N/movie-quote/) | Random Movie and Series Quotes | No | Yes | Yes | | [Open Movie Database](http://www.omdbapi.com/) | Movie information | `apiKey` | Yes | Unknown | From ab16db658dcc5a443292d2ce0325d98ad0538226 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:32:07 +0800 Subject: [PATCH 311/315] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 33b47b9a..376f6d09 100644 --- a/README.md +++ b/README.md @@ -1606,6 +1606,7 @@ API | Description | Auth | HTTPS | CORS | ### Text Analysis API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| +| [Code Detection API](https://codedetectionapi.runtime.dev) | Detect, label, format and enrich the code in your app or in your data pipeline | `OAuth` | Yes | Unknown | | [apilayer languagelayer](https://languagelayer.com/) | Language Detection JSON API supporting 173 languages | `OAuth` | Yes | Unknown | | [Aylien Text Analysis](https://docs.aylien.com/textapi/#getting-started) | A collection of information retrieval and natural language APIs | `apiKey` | Yes | Unknown | | [Cloudmersive Natural Language Processing](https://www.cloudmersive.com/nlp-api) | Natural language processing and text analysis | `apiKey` | Yes | Yes | From 53b16cfd0c322c573998ac416073b0c1a2857b60 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:35:59 +0800 Subject: [PATCH 312/315] Add files via upload --- ...586-APILayerLogoUpdate2022-LJ_v2-HighRes.png | Bin 0 -> 14630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png diff --git a/.github/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png b/.github/cs1586-APILayerLogoUpdate2022-LJ_v2-HighRes.png new file mode 100644 index 0000000000000000000000000000000000000000..43a9b3276ba10f3d2ca4fb6a564ffb4b8e5287ee GIT binary patch literal 14630 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 W(q+uuw@7*4r1C;Tp-Rpw?Ee9Z#TK#v literal 0 HcmV?d00001 From 831ff0378fb0ba5a779e6caaa89b73766c59449e Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:41:44 +0800 Subject: [PATCH 313/315] Update README.md --- README.md | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 376f6d09..033b54c4 100644 --- a/README.md +++ b/README.md @@ -36,14 +36,7 @@
IssuesPull RequestsLicense -

- Currently Active Maintainers -
- matheusfelipeog • - pawelborkar • - marekdano • - yannbertrand -
+
@@ -69,9 +62,9 @@

Special thanks to:

- +

The fastest way to integrate APIs into any product

@@ -80,9 +73,9 @@ Explore, discover and consume public APIs as simpler programmable building blocks all on one platform for a 10x developer experience.
- +
- M3O Logo + APILayer Logo

The fastest way to integrate APIs into any product

From b269b3e1e2c0322ed36a3859233a57f6cd325ae6 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Wed, 18 May 2022 21:48:17 +0800 Subject: [PATCH 314/315] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 033b54c4..4027488f 100644 --- a/README.md +++ b/README.md @@ -361,6 +361,7 @@ API | Description | Auth | HTTPS | CORS | | [ddownload](https://ddownload.com/api) | File Sharing and Storage | `apiKey` | Yes | Unknown | | [Dropbox](https://www.dropbox.com/developers) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [File.io](https://www.file.io) | Super simple file sharing, convenient, anonymous and secure | No | Yes | Unknown | +| [Filestack](https://www.filestack.com) | Filestack File Uploader & File Upload API | `apiKey` | Yes | Unknown | | [GoFile](https://gofile.io/api) | Unlimited size file uploads for free | `apiKey` | Yes | Unknown | | [Google Drive](https://developers.google.com/drive/) | File Sharing and Storage | `OAuth` | Yes | Unknown | | [Gyazo](https://gyazo.com/api/docs) | Save & Share screen captures instantly | `apiKey` | Yes | Unknown | From 055f7b0580490a89e8f7e6e61690e5c52f0e8181 Mon Sep 17 00:00:00 2001 From: APILayer <75280960+apilayer-admin@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:39:16 +0800 Subject: [PATCH 315/315] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 4027488f..f7348891 100644 --- a/README.md +++ b/README.md @@ -337,6 +337,7 @@ API | Description | Auth | HTTPS | CORS | |---|---|---|---|---| | [Abstract Public Holidays](https://www.abstractapi.com/holidays-api) | Data on national, regional, and religious holidays via API | `apiKey` | Yes | Yes | | [Calendarific](https://calendarific.com/) | Worldwide Holidays | `apiKey` | Yes | Unknown | +| [Checkiday - National Holiday API](https://apilayer.com/marketplace/checkiday-api) | Industry-leading Holiday API. Over 5,000 holidays and thousands of descriptions. Trusted by the World’s leading companies | `apiKey` | Yes | Unknown | | [Church Calendar](http://calapi.inadiutorium.cz/) | Catholic liturgical calendar | No | No | Unknown | | [Czech Namedays Calendar](https://svatky.adresa.info) | Lookup for a name and returns nameday date | No | No | Unknown | | [Festivo Public Holidays](https://docs.getfestivo.com/docs/products/public-holidays-api/intro) | Fastest and most advanced public holiday and observance service on the market | `apiKey` | Yes | Yes | @@ -661,6 +662,7 @@ API | Description | Auth | HTTPS | CORS | | [PrexView](https://prexview.com) | Data from XML or JSON to PDF, HTML or Image | `apiKey` | Yes | Unknown | | [Restpack](https://restpack.io/) | Provides screenshot, HTML to PDF and content extraction APIs | `apiKey` | Yes | Unknown | | [Todoist](https://developer.todoist.com) | Todo Lists | `OAuth` | Yes | Unknown | +| [Smart Image Enhancement API](https://apilayer.com/marketplace/image_enhancement-api) | Performs image upscaling by adding detail to images through multiple super-resolution algorithms | `apiKey` | Yes | Unknown | | [Vector Express v2.0](https://vector.express) | Free vector file converting API | No | Yes | No | | [WakaTime](https://wakatime.com/developers) | Automated time tracking leaderboards for programmers | No | Yes | Unknown | | [Zube](https://zube.io/docs/api) | Full stack project management | `OAuth` | Yes | Unknown | @@ -742,6 +744,7 @@ API | Description | Auth | HTTPS | CORS | | [Alpha Vantage](https://www.alphavantage.co/) | Realtime and historical stock data | `apiKey` | Yes | Unknown | | [apilayer marketstack](https://marketstack.com/) | Real-Time, Intraday & Historical Market Data API | `apiKey` | Yes | Unknown | | [Banco do Brasil](https://developers.bb.com.br/home) | All Banco do Brasil financial transaction APIs | `OAuth` | Yes | Yes | +| [Bank Data API](https://apilayer.com/marketplace/bank_data-api) | Instant IBAN and SWIFT number validation across the globe | `apiKey` | Yes | Unknown | | [Billplz](https://www.billplz.com/api) | Payment platform | `apiKey` | Yes | Unknown | | [Binlist](https://binlist.net/) | Public access to a database of IIN/BIN information | No | Yes | Unknown | | [Boleto.Cloud](https://boleto.cloud/) | A api to generate boletos in Brazil | `apiKey` | Yes | Unknown | @@ -773,6 +776,7 @@ API | Description | Auth | HTTPS | CORS | | [SmartAPI](https://smartapi.angelbroking.com/) | Gain access to set of and create end-to-end broking services | `apiKey` | Yes | Unknown | | [StockData](https://www.StockData.org) | Real-Time, Intraday & Historical Market Data, News and Sentiment API | `apiKey` | Yes | Yes | | [Styvio](https://www.Styvio.com) | Realtime and historical stock data and current stock sentiment | `apiKey` | Yes | Unknown | +| [Tax Data API](https://apilayer.com/marketplace/tax_data-api) | Instant VAT number and tax validation across the globe | `apiKey` | Yes | Unkown | | [Tradier](https://developer.tradier.com) | US equity/option market data (delayed, intraday, historical) | `OAuth` | Yes | Yes | | [Twelve Data](https://twelvedata.com/) | Stock market data (real-time & historical) | `apiKey` | Yes | Unknown | | [WallstreetBets](https://dashboard.nbshare.io/apps/reddit/api/) | WallstreetBets Stock Comments Sentiment Analysis | No | Yes | Unknown |