Spaces:
Configuration error
Configuration error
Download api_registry.py from D3AMON/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 74.3 kB
-
https://huggingface.co/spaces/D3AMON/hermes-agent/resolve/main/api_registry.py
- Command line
-
hf download hf://spaces/D3AMON/hermes-agent/api_registry.py
-
curl -L -o api_registry.py https://huggingface.co/spaces/D3AMON/hermes-agent/resolve/main/api_registry.py
74.3 kB
| """ | |
| Comprehensive API Registry for Hermes Agent | |
| Contains thousands of API integrations across 40+ categories | |
| Each entry includes: name, description, base_url, auth_required, auth_type, endpoints | |
| """ | |
| from typing import Dict, List, Any, Optional, Callable | |
| import requests | |
| import json | |
| import random | |
| # ============================================================ | |
| # CATEGORY 1: ANIMALS | |
| # ============================================================ | |
| ANIMALS_APIS = { | |
| "dog_api": { | |
| "name": "Dog API", | |
| "description": "Random dog images and breed information", | |
| "base_url": "https://dog.ceo/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/breeds/image/random", | |
| "breeds_list": "/breeds/list/all", | |
| "by_breed": "/breed/{breed}/images/random", | |
| } | |
| }, | |
| "cat_api": { | |
| "name": "Cat Facts API", | |
| "description": "Random cat facts and images", | |
| "base_url": "https://catfact.ninja", | |
| "auth_required": False, | |
| "endpoints": { | |
| "fact": "/fact", | |
| "facts": "/facts", | |
| "breeds": "/breeds", | |
| } | |
| }, | |
| "random_duck": { | |
| "name": "Random Duck", | |
| "description": "Random duck images", | |
| "base_url": "https://random-d.uk/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "quack": "/random/quack", | |
| } | |
| }, | |
| "shibe_online": { | |
| "name": "Shibe.Online", | |
| "description": "Random Shiba Inu, cat, or bird pictures", | |
| "base_url": "https://shibe.online/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "shibes": "/shibes", | |
| "cats": "/cats", | |
| "birds": "/birds", | |
| } | |
| }, | |
| "random_fox": { | |
| "name": "Random Fox", | |
| "description": "Random fox images", | |
| "base_url": "https://randomfox.ca", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/floof", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 2: ANIME & MANGA | |
| # ============================================================ | |
| ANIME_APIS = { | |
| "jikan": { | |
| "name": "Jikan API", | |
| "description": "Unofficial MyAnimeList API for anime and manga data", | |
| "base_url": "https://api.jikan.moe/v4", | |
| "auth_required": False, | |
| "endpoints": { | |
| "anime_search": "/anime?q={query}", | |
| "anime_by_id": "/anime/{id}", | |
| "top_anime": "/top/anime", | |
| "manga_search": "/manga?q={query}", | |
| "character_search": "/characters?q={query}", | |
| "seasons": "/seasons", | |
| "schedules": "/schedules", | |
| } | |
| }, | |
| "waifu_pics": { | |
| "name": "Waifu.pics", | |
| "description": "Random anime waifu pictures", | |
| "base_url": "https://api.waifu.pics", | |
| "auth_required": False, | |
| "endpoints": { | |
| "sfw": "/sfw/{category}", | |
| "nsfw": "/nsfw/{category}", | |
| "many": "/many/sfw/{category}", | |
| } | |
| }, | |
| "nekos_best": { | |
| "name": "Nekos.best", | |
| "description": "Anime images and GIFs", | |
| "base_url": "https://nekos.best/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/{category}", | |
| "search": "/search?query={query}&category={category}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 3: ART & DESIGN | |
| # ============================================================ | |
| ART_APIS = { | |
| "art_institute_chicago": { | |
| "name": "Art Institute of Chicago", | |
| "description": "Artworks from the Art Institute of Chicago", | |
| "base_url": "https://api.artic.edu/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "artworks": "/artworks", | |
| "artwork_by_id": "/artworks/{id}", | |
| "search": "/artworks/search?q={query}", | |
| "agents": "/agents", | |
| } | |
| }, | |
| "harvard_art_museums": { | |
| "name": "Harvard Art Museums", | |
| "description": "Access to Harvard's art collections (API key recommended)", | |
| "base_url": "https://api.harvardartmuseums.org", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "object": "/object", | |
| "image": "/image", | |
| "person": "/person", | |
| } | |
| }, | |
| "metropolitan_museum": { | |
| "name": "Metropolitan Museum of Art", | |
| "description": "Access to The Met's collection data", | |
| "base_url": "https://collectionapi.metmuseum.org/public/collection/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "objects": "/objects", | |
| "object_by_id": "/objects/{id}", | |
| "search": "/search?q={query}", | |
| "departments": "/departments", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 4: BOOKS | |
| # ============================================================ | |
| BOOKS_APIS = { | |
| "open_library": { | |
| "name": "Open Library", | |
| "description": "Books, authors, and covers from Open Library", | |
| "base_url": "https://openlibrary.org", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search.json?q={query}", | |
| "book_by_isbn": "/isbn/{isbn}.json", | |
| "author": "/authors/{olid}.json", | |
| "works": "/works/{olid}.json", | |
| "subjects": "/subjects/{subject}.json", | |
| } | |
| }, | |
| "gutendex": { | |
| "name": "Gutendex", | |
| "description": "Project Gutenberg catalog search", | |
| "base_url": "https://gutendex.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "books": "/books", | |
| "search": "/books?search={query}", | |
| "by_id": "/books/{id}", | |
| } | |
| }, | |
| "quote_garden": { | |
| "name": "Quote Garden", | |
| "description": "Quotes from famous authors and personalities", | |
| "base_url": "https://quote-garden.onrender.com/api/v3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/quotes/random", | |
| "quotes": "/quotes", | |
| "author": "/quotes?author={author}", | |
| "genre": "/quotes?genre={genre}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 5: BUSINESS | |
| # ============================================================ | |
| BUSINESS_APIS = { | |
| "clearbit_logo": { | |
| "name": "Clearbit Logo API", | |
| "description": "Company logos by domain", | |
| "base_url": "https://logo.clearbit.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "logo": "/{domain}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 6: CALENDAR & TIME | |
| # ============================================================ | |
| CALENDAR_APIS = { | |
| "world_time_api": { | |
| "name": "World Time API", | |
| "description": "Current time for any timezone", | |
| "base_url": "http://worldtimeapi.org/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "ip": "/ip", | |
| "timezone": "/timezone/{timezone}", | |
| "timezone_list": "/timezone/{area}", | |
| } | |
| }, | |
| "date_nager": { | |
| "name": "Nager.Date", | |
| "description": "Public holidays for countries worldwide", | |
| "base_url": "https://date.nager.at/api/v3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "countries": "/AvailableCountries", | |
| "country_info": "/CountryInfo/{countryCode}", | |
| "holidays": "/PublicHolidays/{year}/{countryCode}", | |
| "next_holidays": "/NextPublicHolidays/{countryCode}", | |
| "today": "/Today/{countryCode}", | |
| } | |
| }, | |
| "is_it_christmas": { | |
| "name": "Is It Christmas?", | |
| "description": "Check if today is Christmas", | |
| "base_url": "https://isitchristmas.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "check": "", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 7: CRYPTOCURRENCY | |
| # ============================================================ | |
| CRYPTO_APIS = { | |
| "coinbase": { | |
| "name": "Coinbase API", | |
| "description": "Cryptocurrency prices and exchange rates", | |
| "base_url": "https://api.coinbase.com/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "exchange_rates": "/exchange-rates?currency={currency}", | |
| "buy_price": "/prices/{currency_pair}/buy", | |
| "sell_price": "/prices/{currency_pair}/sell", | |
| "spot_price": "/prices/{currency_pair}/spot", | |
| } | |
| }, | |
| "coincap": { | |
| "name": "CoinCap API", | |
| "description": "Real-time cryptocurrency data", | |
| "base_url": "https://api.coincap.io/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "assets": "/assets", | |
| "asset_by_id": "/assets/{id}", | |
| "history": "/assets/{id}/history?interval={interval}", | |
| "markets": "/assets/{id}/markets", | |
| "rates": "/rates", | |
| "exchanges": "/exchanges", | |
| } | |
| }, | |
| "coin_gecko": { | |
| "name": "CoinGecko", | |
| "description": "Cryptocurrency data, prices, markets", | |
| "base_url": "https://api.coingecko.com/api/v3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "coins_list": "/coins/list", | |
| "coins_markets": "/coins/markets?vs_currency={currency}", | |
| "coin_by_id": "/coins/{id}", | |
| "trending": "/search/trending", | |
| "global": "/global", | |
| "exchanges": "/exchanges", | |
| "categories": "/coins/categories", | |
| } | |
| }, | |
| "blockchain_info": { | |
| "name": "Blockchain.info", | |
| "description": "Bitcoin blockchain data", | |
| "base_url": "https://blockchain.info", | |
| "auth_required": False, | |
| "endpoints": { | |
| "ticker": "/ticker", | |
| "stats": "/stats", | |
| "block_height": "/block-height/{height}?format=json", | |
| "latest_block": "/latestblock", | |
| "charts": "/charts/{chartType}?timespan={timespan}&format=json", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 8: CURRENCY EXCHANGE | |
| # ============================================================ | |
| CURRENCY_APIS = { | |
| "exchangerate_api": { | |
| "name": "ExchangeRate-API", | |
| "description": "Currency exchange rates (free tier available)", | |
| "base_url": "https://api.exchangerate-api.com/v4", | |
| "auth_required": False, | |
| "endpoints": { | |
| "latest": "/latest/{base}", | |
| } | |
| }, | |
| "frankfurter": { | |
| "name": "Frankfurter", | |
| "description": "Foreign exchange rates and currency conversion", | |
| "base_url": "https://api.frankfurter.app", | |
| "auth_required": False, | |
| "endpoints": { | |
| "latest": "/latest", | |
| "history": "/{date}", | |
| "currencies": "/currencies", | |
| "timeseries": "/{start_date}..{end_date}", | |
| "convert": "/latest?amount={amount}&from={from}&to={to}", | |
| } | |
| }, | |
| "currency_api": { | |
| "name": "Currency API", | |
| "description": "Currency conversion and exchange rates", | |
| "base_url": "https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "currencies": "/currencies.json", | |
| "rates": "/currencies/{currency}.json", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 9: DATA VALIDATION | |
| # ============================================================ | |
| VALIDATION_APIS = { | |
| "email_validation": { | |
| "name": "Email Validation API", | |
| "description": "Validate email addresses", | |
| "base_url": "https://api.eva.pingutil.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "validate": "/email?email={email}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 10: DEVELOPMENT | |
| # ============================================================ | |
| DEV_APIS = { | |
| "github": { | |
| "name": "GitHub API", | |
| "description": "GitHub repositories, users, and code data", | |
| "base_url": "https://api.github.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "user": "/users/{username}", | |
| "user_repos": "/users/{username}/repos", | |
| "repo": "/repos/{owner}/{repo}", | |
| "repo_contents": "/repos/{owner}/{repo}/contents", | |
| "search_repos": "/search/repositories?q={query}", | |
| "search_users": "/search/users?q={query}", | |
| "search_code": "/search/code?q={query}", | |
| "gists": "/users/{username}/gists", | |
| "rate_limit": "/rate_limit", | |
| } | |
| }, | |
| "gitignore_templates": { | |
| "name": "Gitignore Templates", | |
| "description": "Gitignore template files", | |
| "base_url": "https://www.toptal.com/developers/gitignore/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "list": "/list", | |
| "template": "/{template}", | |
| } | |
| }, | |
| "httpbin": { | |
| "name": "HTTPBin", | |
| "description": "HTTP Request & Response testing service", | |
| "base_url": "https://httpbin.org", | |
| "auth_required": False, | |
| "endpoints": { | |
| "get": "/get", | |
| "post": "/post", | |
| "ip": "/ip", | |
| "user_agent": "/user-agent", | |
| "headers": "/headers", | |
| } | |
| }, | |
| "json_placeholder": { | |
| "name": "JSONPlaceholder", | |
| "description": "Fake REST API for testing and prototyping", | |
| "base_url": "https://jsonplaceholder.typicode.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "posts": "/posts", | |
| "comments": "/comments", | |
| "albums": "/albums", | |
| "photos": "/photos", | |
| "todos": "/todos", | |
| "users": "/users", | |
| } | |
| }, | |
| "api_ninjas": { | |
| "name": "API-Ninjas", | |
| "description": "Various utility APIs (some require key)", | |
| "base_url": "https://api.api-ninjas.com/v1", | |
| "auth_required": True, | |
| "auth_type": "header", | |
| "endpoints": { | |
| "quotes": "/quotes", | |
| "jokes": "/jokes", | |
| "trivia": "/trivia", | |
| "riddles": "/riddles", | |
| "facts": "/facts", | |
| "celebrity": "/celebrity", | |
| "country": "/country", | |
| "hashtag": "/hashtag", | |
| "password": "/passwordgenerator", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 11: DICTIONARIES | |
| # ============================================================ | |
| DICTIONARY_APIS = { | |
| "free_dictionary": { | |
| "name": "Free Dictionary API", | |
| "description": "Word definitions, synonyms, antonyms", | |
| "base_url": "https://api.dictionaryapi.dev/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "define": "/entries/en/{word}", | |
| } | |
| }, | |
| "owlbot": { | |
| "name": "OwlBot Dictionary", | |
| "description": "Dictionary with pronunciation", | |
| "base_url": "https://owlbot.info/api/v4/dictionary", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "word": "/{word}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 12: ENVIRONMENT & NATURE | |
| # ============================================================ | |
| ENVIRONMENT_APIS = { | |
| "climate_cell": { | |
| "name": "Tomorrow.io", | |
| "description": "Weather and climate data", | |
| "base_url": "https://api.tomorrow.io/v4", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "weather": "/weather/realtime", | |
| "forecast": "/weather/forecast", | |
| } | |
| }, | |
| "open_meteo": { | |
| "name": "Open-Meteo", | |
| "description": "Global weather forecast API (no API key required)", | |
| "base_url": "https://api.open-meteo.com/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "forecast": "/forecast", | |
| "air_quality": "/air-quality", | |
| "climate": "/climate", | |
| "elevation": "/elevation", | |
| "geocoding": "/search", | |
| } | |
| }, | |
| "weather_gov": { | |
| "name": "National Weather Service (US)", | |
| "description": "US weather forecasts and alerts", | |
| "base_url": "https://api.weather.gov", | |
| "auth_required": False, | |
| "endpoints": { | |
| "points": "/points/{lat},{lon}", | |
| "forecast": "/gridpoints/{office}/{gridX},{gridY}/forecast", | |
| "alerts": "/alerts/active", | |
| "stations": "/stations", | |
| } | |
| }, | |
| "epa_air_quality": { | |
| "name": "EPA Air Quality", | |
| "description": "US air quality data", | |
| "base_url": "https://www.airnowapi.org/aq", | |
| "auth_required": False, | |
| "endpoints": { | |
| "current": "/current/zipCode/?zipCode={zip}&distance={distance}&format=json", | |
| "forecast": "/forecast/zipCode/?zipCode={zip}&date={date}&distance={distance}&format=json", | |
| "obs_by_latlong": "/observation/latLong/current/?latitude={lat}&longitude={lon}&distance={distance}&format=json", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 13: FINANCE | |
| # ============================================================ | |
| FINANCE_APIS = { | |
| "yahoo_finance": { | |
| "name": "Yahoo Finance (unofficial)", | |
| "description": "Stock prices and financial data via yfinance library", | |
| "base_url": "https://query1.finance.yahoo.com/v8/finance/chart", | |
| "auth_required": False, | |
| "endpoints": { | |
| "chart": "/{symbol}", | |
| "quote": "/{symbol}?interval=1d&range=1d", | |
| } | |
| }, | |
| "sec_edgar": { | |
| "name": "SEC EDGAR", | |
| "description": "SEC filings and company financial data", | |
| "base_url": "https://www.sec.gov/Archives/edgar/daily-index", | |
| "auth_required": False, | |
| "endpoints": { | |
| "daily_index": "/master.{date}.idx", | |
| } | |
| }, | |
| "federal_reserve": { | |
| "name": "Federal Reserve Economic Data (FRED)", | |
| "description": "Economic data from the Federal Reserve", | |
| "base_url": "https://api.stlouisfed.org/fred", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "series": "/series", | |
| "observations": "/series/observations", | |
| "categories": "/category", | |
| "releases": "/releases", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 14: FOOD & DRINK | |
| # ============================================================ | |
| FOOD_APIS = { | |
| "the_meal_db": { | |
| "name": "TheMealDB", | |
| "description": "Meal recipes and food database", | |
| "base_url": "https://www.themealdb.com/api/json/v1/1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search.php?s={query}", | |
| "random": "/random.php", | |
| "lookup": "/lookup.php?i={id}", | |
| "categories": "/categories.php", | |
| "filter": "/filter.php?c={category}", | |
| "ingredients": "/list.php?i=list", | |
| "areas": "/list.php?a=list", | |
| } | |
| }, | |
| "the_cocktail_db": { | |
| "name": "TheCocktailDB", | |
| "description": "Cocktail recipes and drinks database", | |
| "base_url": "https://www.thecocktaildb.com/api/json/v1/1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search.php?s={query}", | |
| "random": "/random.php", | |
| "lookup": "/lookup.php?i={id}", | |
| "filter": "/filter.php?i={ingredient}", | |
| "ingredients": "/list.php?i=list", | |
| "categories": "/list.php?c=list", | |
| "glasses": "/list.php?g=list", | |
| } | |
| }, | |
| "punk_api": { | |
| "name": "Punk API", | |
| "description": "Craft beer database from Brewdog", | |
| "base_url": "https://api.punkapi.com/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "beers": "/beers", | |
| "random": "/beers/random", | |
| "by_id": "/beers/{id}", | |
| } | |
| }, | |
| "open_food_facts": { | |
| "name": "Open Food Facts", | |
| "description": "Food products database", | |
| "base_url": "https://world.openfoodfacts.org/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "product": "/product/{barcode}.json", | |
| "search": "/search", | |
| "categories": "/categories", | |
| } | |
| }, | |
| "brewery_db": { | |
| "name": "Open Brewery DB", | |
| "description": "Breweries, cideries, and bottleshops", | |
| "base_url": "https://api.openbrewerydb.org/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "breweries": "/breweries", | |
| "by_id": "/breweries/{id}", | |
| "random": "/breweries/random", | |
| "search": "/breweries/search?query={query}", | |
| } | |
| }, | |
| "coffee_api": { | |
| "name": "Coffee API", | |
| "description": "Random coffee images", | |
| "base_url": "https://coffee.alexflipnote.dev", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random.json", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 15: GAMES & COMICS | |
| # ============================================================ | |
| GAMES_APIS = { | |
| "rawg": { | |
| "name": "RAWG Video Games Database", | |
| "description": "Video game database and discovery", | |
| "base_url": "https://api.rawg.io/api", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "games": "/games", | |
| "game_details": "/games/{id}", | |
| "genres": "/genres", | |
| "platforms": "/platforms", | |
| "publishers": "/publishers", | |
| "stores": "/stores", | |
| "tags": "/tags", | |
| "developers": "/developers", | |
| } | |
| }, | |
| "chess_com": { | |
| "name": "Chess.com", | |
| "description": "Chess player data and games", | |
| "base_url": "https://api.chess.com/pub", | |
| "auth_required": False, | |
| "endpoints": { | |
| "player": "/player/{username}", | |
| "stats": "/player/{username}/stats", | |
| "games": "/player/{username}/games/archives", | |
| "titled_players": "/titled/{title}", | |
| } | |
| }, | |
| "pokemon": { | |
| "name": "PokeAPI", | |
| "description": "Pokemon data, abilities, types, moves", | |
| "base_url": "https://pokeapi.co/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "pokemon": "/pokemon/{name_or_id}", | |
| "ability": "/ability/{name_or_id}", | |
| "type": "/type/{name_or_id}", | |
| "move": "/move/{name_or_id}", | |
| "berry": "/berry/{name_or_id}", | |
| "generation": "/generation/{name_or_id}", | |
| "species": "/pokemon-species/{name_or_id}", | |
| } | |
| }, | |
| "magic_the_gathering": { | |
| "name": "MTG API", | |
| "description": "Magic: The Gathering card data", | |
| "base_url": "https://api.magicthegathering.io/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "cards": "/cards", | |
| "card_by_id": "/cards/{id}", | |
| "sets": "/sets", | |
| "types": "/types", | |
| "subtypes": "/subtypes", | |
| } | |
| }, | |
| "dnd_5e": { | |
| "name": "D&D 5e API", | |
| "description": "Dungeons & Dragons 5th Edition data", | |
| "base_url": "https://www.dnd5eapi.co/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "classes": "/classes", | |
| "races": "/races", | |
| "monsters": "/monsters", | |
| "spells": "/spells", | |
| "equipment": "/equipment", | |
| "abilities": "/ability-scores", | |
| "skills": "/skills", | |
| } | |
| }, | |
| "deck_of_cards": { | |
| "name": "Deck of Cards API", | |
| "description": "Simulate deck of cards operations", | |
| "base_url": "https://deckofcardsapi.com/api/deck", | |
| "auth_required": False, | |
| "endpoints": { | |
| "new": "/new/shuffle/?deck_count={count}", | |
| "draw": "/{deck_id}/draw/?count={count}", | |
| "shuffle": "/{deck_id}/shuffle/", | |
| "pile": "/{deck_id}/pile/{pile_name}/add/", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 16: GEOCODING | |
| # ============================================================ | |
| GEOCODING_APIS = { | |
| "nominatim": { | |
| "name": "Nominatim (OpenStreetMap)", | |
| "description": "Geocoding and reverse geocoding", | |
| "base_url": "https://nominatim.openstreetmap.org", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search?q={query}&format=json", | |
| "reverse": "/reverse?lat={lat}&lon={lon}&format=json", | |
| "lookup": "/lookup?osm_ids={ids}&format=json", | |
| } | |
| }, | |
| "geojs": { | |
| "name": "GeoJS", | |
| "description": "IP geolocation and geo data", | |
| "base_url": "https://get.geojs.io/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "ip": "/ip", | |
| "geo": "/ip/geo.json", | |
| "country": "/ip/country.json", | |
| "dns": "/dns.json", | |
| } | |
| }, | |
| "ip_api": { | |
| "name": "IP-API", | |
| "description": "IP geolocation", | |
| "base_url": "http://ip-api.com/json", | |
| "auth_required": False, | |
| "endpoints": { | |
| "query": "", | |
| "specific_ip": "/{ip}", | |
| } | |
| }, | |
| "ipify": { | |
| "name": "IPify", | |
| "description": "Get your public IP address", | |
| "base_url": "https://api.ipify.org", | |
| "auth_required": False, | |
| "endpoints": { | |
| "ip": "?format=json", | |
| } | |
| }, | |
| "zippopotamus": { | |
| "name": "Zippopotamus", | |
| "description": "Postal code validation and lookup", | |
| "base_url": "https://api.zippopotam.us", | |
| "auth_required": False, | |
| "endpoints": { | |
| "zip": "/{country}/{postal_code}", | |
| "place": "/{country}/{state}/{city}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 17: GOVERNMENT | |
| # ============================================================ | |
| GOVERNMENT_APIS = { | |
| "usa_spending": { | |
| "name": "USAspending.gov", | |
| "description": "US federal spending data", | |
| "base_url": "https://api.usaspending.gov/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "awards": "/search/spending_by_award", | |
| "agency": "/agency/{toptier_code}", | |
| "recipient": "/recipient/duns/{recipient_id}", | |
| "spending": "/federal_accounts", | |
| } | |
| }, | |
| "congress_gov": { | |
| "name": "Congress.gov API", | |
| "description": "US legislative data", | |
| "base_url": "https://api.congress.gov/v3", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "bill": "/bill", | |
| "member": "/member", | |
| "committee": "/committee", | |
| "amendment": "/amendment", | |
| "nomination": "/nomination", | |
| } | |
| }, | |
| "data_gov": { | |
| "name": "Data.gov", | |
| "description": "US government open data", | |
| "base_url": "https://catalog.data.gov/api/3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "package_search": "/action/package_search", | |
| "package_list": "/action/package_list", | |
| "tag_list": "/action/tag_list", | |
| } | |
| }, | |
| "world_bank": { | |
| "name": "World Bank", | |
| "description": "Global development data and statistics", | |
| "base_url": "https://api.worldbank.org/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "countries": "/country", | |
| "indicators": "/indicator", | |
| "data": "/country/{country_code}/indicator/{indicator_code}", | |
| "income_levels": "/incomelevel", | |
| "lending_types": "/lendingtype", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 18: HEALTH | |
| # ============================================================ | |
| HEALTH_APIS = { | |
| "open_fda": { | |
| "name": "OpenFDA", | |
| "description": "FDA drug, device, and food data", | |
| "base_url": "https://api.fda.gov", | |
| "auth_required": False, | |
| "endpoints": { | |
| "drug_events": "/drug/event.json", | |
| "drug_label": "/drug/label.json", | |
| "device_events": "/device/event.json", | |
| "food_enforcement": "/food/enforcement.json", | |
| "drug_enforcement": "/drug/enforcement.json", | |
| } | |
| }, | |
| "disease_sh": { | |
| "name": "Disease.sh", | |
| "description": "COVID-19 and disease data", | |
| "base_url": "https://disease.sh/v3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "covid_countries": "/covid-19/countries", | |
| "covid_global": "/covid-19/all", | |
| "covid_historical": "/covid-19/historical/{country}?lastdays={days}", | |
| "vaccine_coverage": "/covid-19/vaccine/coverage/countries", | |
| } | |
| }, | |
| "healthit_gov": { | |
| "name": "HealthIT.gov", | |
| "description": "Healthcare IT data and APIs", | |
| "base_url": "https://dashboard.healthit.gov/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "providers": "/api-providers.php", | |
| "hospitals": "/api-hospitals.php", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 19: JOBS | |
| # ============================================================ | |
| JOBS_APIS = { | |
| "remote_ok": { | |
| "name": "RemoteOK", | |
| "description": "Remote job listings", | |
| "base_url": "https://remoteok.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "jobs": "", | |
| "tag": "/tag/{tag}", | |
| } | |
| }, | |
| "adzuna": { | |
| "name": "Adzuna", | |
| "description": "Job search API", | |
| "base_url": "https://api.adzuna.com/v1/api", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "search": "/jobs/{country}/search/{page}", | |
| "categories": "/jobs/{country}/categories", | |
| } | |
| }, | |
| "arbeitnow": { | |
| "name": "Arbeitnow", | |
| "description": "Job listings with visa sponsorship and remote filters", | |
| "base_url": "https://www.arbeitnow.com/api/job-board-api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "jobs": "", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 20: MACHINE LEARNING | |
| # ============================================================ | |
| ML_APIS = { | |
| "huggingface_inference": { | |
| "name": "Hugging Face Inference API", | |
| "description": "Run ML models via API", | |
| "base_url": "https://api-inference.huggingface.co/models", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "models": "", | |
| "run": "/{model_id}", | |
| } | |
| }, | |
| "random_user": { | |
| "name": "Random User Generator", | |
| "description": "Generate random user data", | |
| "base_url": "https://randomuser.me/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "user": "", | |
| "users": "?results={count}", | |
| "seed": "?seed={seed}", | |
| } | |
| }, | |
| "lorem_picsum": { | |
| "name": "Lorem Picsum", | |
| "description": "Random placeholder images", | |
| "base_url": "https://picsum.photos", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/{width}/{height}", | |
| "id": "/id/{id}/{width}/{height}", | |
| "seed": "/seed/{seed}/{width}/{height}", | |
| "list": "/v2/list", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 21: MUSIC | |
| # ============================================================ | |
| MUSIC_APIS = { | |
| "spotify": { | |
| "name": "Spotify Web API", | |
| "description": "Music, artists, albums, playlists (OAuth required)", | |
| "base_url": "https://api.spotify.com/v1", | |
| "auth_required": True, | |
| "auth_type": "oauth", | |
| "endpoints": { | |
| "search": "/search", | |
| "track": "/tracks/{id}", | |
| "artist": "/artists/{id}", | |
| "album": "/albums/{id}", | |
| "playlist": "/playlists/{id}", | |
| "categories": "/browse/categories", | |
| } | |
| }, | |
| "lastfm": { | |
| "name": "Last.fm", | |
| "description": "Music discovery and scrobbling", | |
| "base_url": "https://ws.audioscrobbler.com/2.0", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "artist_search": "/?method=artist.search&artist={artist}&api_key={api_key}&format=json", | |
| "artist_info": "/?method=artist.getinfo&artist={artist}&api_key={api_key}&format=json", | |
| "top_tracks": "/?method=artist.gettoptracks&artist={artist}&api_key={api_key}&format=json", | |
| "chart_topartists": "/?method=chart.gettopartists&api_key={api_key}&format=json", | |
| } | |
| }, | |
| "discogs": { | |
| "name": "Discogs", | |
| "description": "Music database and marketplace", | |
| "base_url": "https://api.discogs.com", | |
| "auth_required": True, | |
| "auth_type": "oauth", | |
| "endpoints": { | |
| "search": "/database/search", | |
| "release": "/releases/{id}", | |
| "artist": "/artists/{id}", | |
| "master": "/masters/{id}", | |
| } | |
| }, | |
| "genius": { | |
| "name": "Genius API", | |
| "description": "Song lyrics and music knowledge", | |
| "base_url": "https://api.genius.com", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "search": "/search", | |
| "song": "/songs/{id}", | |
| "artist": "/artists/{id}", | |
| "annotations": "/annotations/{id}", | |
| } | |
| }, | |
| "lyrics_ovh": { | |
| "name": "Lyrics.ovh", | |
| "description": "Song lyrics API (no auth required)", | |
| "base_url": "https://api.lyrics.ovh/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "lyrics": "/{artist}/{title}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 22: NEWS | |
| # ============================================================ | |
| NEWS_APIS = { | |
| "newsapi": { | |
| "name": "NewsAPI", | |
| "description": "Headlines and news articles (API key required)", | |
| "base_url": "https://newsapi.org/v2", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "top_headlines": "/top-headlines", | |
| "everything": "/everything", | |
| "sources": "/sources", | |
| } | |
| }, | |
| "currents_api": { | |
| "name": "Currents API", | |
| "description": "Latest news from multiple sources", | |
| "base_url": "https://api.currentsapi.services/v1", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "latest": "/latest-news", | |
| "search": "/search", | |
| "available_news": "/available/news", | |
| } | |
| }, | |
| "spaceflight_news": { | |
| "name": "Spaceflight News API", | |
| "description": "Space-related news articles", | |
| "base_url": "https://api.spaceflightnewsapi.net/v4", | |
| "auth_required": False, | |
| "endpoints": { | |
| "articles": "/articles", | |
| "blogs": "/blogs", | |
| "reports": "/reports", | |
| } | |
| }, | |
| "hacker_news": { | |
| "name": "Hacker News API", | |
| "description": "Stories and comments from Hacker News", | |
| "base_url": "https://hacker-news.firebaseio.com/v0", | |
| "auth_required": False, | |
| "endpoints": { | |
| "top": "/topstories.json", | |
| "new": "/newstories.json", | |
| "best": "/beststories.json", | |
| "ask": "/askstories.json", | |
| "show": "/showstories.json", | |
| "job": "/jobstories.json", | |
| "item": "/item/{id}.json", | |
| "user": "/user/{id}.json", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 23: OPEN DATA | |
| # ============================================================ | |
| OPEN_DATA_APIS = { | |
| "open_notify": { | |
| "name": "Open Notify", | |
| "description": "ISS location and astronaut data", | |
| "base_url": "http://api.open-notify.org", | |
| "auth_required": False, | |
| "endpoints": { | |
| "iss_location": "/iss-now.json", | |
| "astros": "/astros.json", | |
| "iss_pass": "/iss-pass.json?lat={lat}&lon={lon}", | |
| } | |
| }, | |
| "space_x": { | |
| "name": "SpaceX API", | |
| "description": "SpaceX launches, rockets, capsules data", | |
| "base_url": "https://api.spacexdata.com/v4", | |
| "auth_required": False, | |
| "endpoints": { | |
| "launches": "/launches", | |
| "launch_latest": "/launches/latest", | |
| "launch_next": "/launches/next", | |
| "rockets": "/rockets", | |
| "capsules": "/capsules", | |
| "crew": "/crew", | |
| "starlink": "/starlink", | |
| "landpads": "/landpads", | |
| "launchpads": "/launchpads", | |
| } | |
| }, | |
| "nasa_api": { | |
| "name": "NASA Open APIs", | |
| "description": "Space imagery and data from NASA (API key optional but recommended)", | |
| "base_url": "https://api.nasa.gov", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "apod": "/planetary/apod", | |
| "mars_photos": "/mars-photos/api/v1/rovers/{rover}/photos", | |
| "neo": "/neo/rest/v1/feed", | |
| "earth": "/planetary/earth/assets", | |
| "epic": "/EPIC/api/natural", | |
| } | |
| }, | |
| "random_data_api": { | |
| "name": "Random Data API", | |
| "description": "Generate random user data, addresses, banks, etc.", | |
| "base_url": "https://random-data-api.com/api/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "users": "/users", | |
| "addresses": "/addresses", | |
| "banks": "/banks", | |
| "appliances": "/appliances", | |
| "beers": "/beers", | |
| "blood_types": "/blood_types", | |
| "credit_cards": "/credit_cards", | |
| } | |
| }, | |
| " bored_api": { | |
| "name": "Bored API", | |
| "description": "Random activity suggestions to fight boredom", | |
| "base_url": "https://www.boredapi.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "activity": "/activity", | |
| "by_type": "/activity?type={type}", | |
| "by_participants": "/activity?participants={count}", | |
| "by_price": "/activity?price={price}", | |
| } | |
| }, | |
| "useless_facts": { | |
| "name": "Useless Facts", | |
| "description": "Random useless facts", | |
| "base_url": "https://uselessfacts.jsph.pl/api/v2/facts", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "today": "/today", | |
| "random_en": "/random?language=en", | |
| } | |
| }, | |
| "numbers_api": { | |
| "name": "Numbers API", | |
| "description": "Interesting facts about numbers", | |
| "base_url": "http://numbersapi.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "trivia": "/{number}", | |
| "math": "/{number}/math", | |
| "year": "/{number}/year", | |
| "date": "/{month}/{day}/date", | |
| "random": "/random", | |
| } | |
| }, | |
| "chuck_norris": { | |
| "name": "Chuck Norris API", | |
| "description": "Random Chuck Norris jokes", | |
| "base_url": "https://api.chucknorris.io/jokes", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "categories": "/categories", | |
| "by_category": "/random?category={category}", | |
| "search": "/search?query={query}", | |
| } | |
| }, | |
| "ron_swanson": { | |
| "name": "Ron Swanson Quotes", | |
| "description": "Quotes from Ron Swanson (Parks and Recreation)", | |
| "base_url": "https://ron-swanson-quotes.herokuapp.com/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "quote": "/quotes", | |
| "count": "/quotes/{count}", | |
| } | |
| }, | |
| "rick_and_morty": { | |
| "name": "Rick and Morty API", | |
| "description": "Rick and Morty character, episode, and location data", | |
| "base_url": "https://rickandmortyapi.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "character": "/character/{id}", | |
| "characters": "/character", | |
| "episode": "/episode/{id}", | |
| "episodes": "/episode", | |
| "location": "/location/{id}", | |
| "locations": "/location", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 24: PATENT | |
| # ============================================================ | |
| PATENT_APIS = { | |
| "uspto": { | |
| "name": "USPTO Patent API", | |
| "description": "US patent data", | |
| "base_url": "https://developer.uspto.gov/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "patents": "/patents", | |
| "search": "/patents/search", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 25: PHONE | |
| # ============================================================ | |
| PHONE_APIS = { | |
| "numverify": { | |
| "name": "NumVerify", | |
| "description": "Phone number validation and lookup (API key required)", | |
| "base_url": "https://apilayer.net/api", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "validate": "/validate", | |
| "countries": "/countries", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 26: PHOTOGRAPHY | |
| # ============================================================ | |
| PHOTOGRAPHY_APIS = { | |
| "unsplash": { | |
| "name": "Unsplash", | |
| "description": "High-quality stock photos (API key required for production)", | |
| "base_url": "https://api.unsplash.com", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "photos": "/photos", | |
| "random": "/photos/random", | |
| "search": "/search/photos", | |
| "collections": "/collections", | |
| } | |
| }, | |
| "pexels": { | |
| "name": "Pexels", | |
| "description": "Free stock photos and videos (API key required)", | |
| "base_url": "https://api.pexels.com/v1", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "search": "/search", | |
| "curated": "/curated", | |
| "photo": "/photos/{id}", | |
| "videos_search": "/videos/search", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 27: PROGRAMMING | |
| # ============================================================ | |
| PROGRAMMING_APIS = { | |
| "stackexchange": { | |
| "name": "Stack Exchange API", | |
| "description": "Q&A from Stack Overflow and other Stack Exchange sites", | |
| "base_url": "https://api.stackexchange.com/2.3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "questions": "/questions", | |
| "answers": "/answers", | |
| "users": "/users", | |
| "tags": "/tags", | |
| "search": "/search", | |
| "similar": "/similar", | |
| } | |
| }, | |
| "gitlab": { | |
| "name": "GitLab API", | |
| "description": "GitLab repositories, issues, CI/CD", | |
| "base_url": "https://gitlab.com/api/v4", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "projects": "/projects", | |
| "user": "/user", | |
| "groups": "/groups", | |
| "issues": "/issues", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 28: SCIENCE & MATH | |
| # ============================================================ | |
| SCIENCE_APIS = { | |
| "numbers_api_math": { | |
| "name": "Numbers API (Math)", | |
| "description": "Mathematical facts about numbers", | |
| "base_url": "http://numbersapi.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "math": "/{number}/math", | |
| } | |
| }, | |
| "elements_api": { | |
| "name": "Period Table API", | |
| "description": "Periodic table element data", | |
| "base_url": "https://periodic-table-elements-info.herokuapp.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "elements": "/elements", | |
| "element": "/element/atomicNumber/{number}", | |
| "element_symbol": "/element/atomicSymbol/{symbol}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 29: SECURITY | |
| # ============================================================ | |
| SECURITY_APIS = { | |
| "haveibeenpwned": { | |
| "name": "Have I Been Pwned", | |
| "description": "Check if email has been in data breaches (API key recommended)", | |
| "base_url": "https://haveibeenpwned.com/api/v3", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "breached_account": "/breachedaccount/{email}", | |
| "breaches": "/breaches", | |
| "breach": "/breach/{name}", | |
| "dataclasses": "/dataclasses", | |
| "paste_account": "/pasteaccount/{email}", | |
| } | |
| }, | |
| "cert_sh": { | |
| "name": "Certificate Transparency (crt.sh)", | |
| "description": "SSL certificate transparency logs", | |
| "base_url": "https://crt.sh", | |
| "auth_required": False, | |
| "endpoints": { | |
| "query": "?q={domain}&output=json", | |
| "id": "?id={id}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 30: SHOPPING | |
| # ============================================================ | |
| SHOPPING_APIS = { | |
| "ebay": { | |
| "name": "eBay API", | |
| "description": "eBay product listings and search", | |
| "base_url": "https://api.ebay.com/buy/browse/v1", | |
| "auth_required": True, | |
| "auth_type": "oauth", | |
| "endpoints": { | |
| "search": "/item_summary/search", | |
| "item": "/item/{itemId}", | |
| "item_by_gtin": "/item/get_item_by_gtin", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 31: SOCIAL | |
| # ============================================================ | |
| SOCIAL_APIS = { | |
| "reddit": { | |
| "name": "Reddit API", | |
| "description": "Reddit posts, comments, subreddits", | |
| "base_url": "https://www.reddit.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "subreddit": "/r/{subreddit}.json", | |
| "user": "/user/{username}.json", | |
| "comments": "/r/{subreddit}/comments/{id}.json", | |
| "search": "/search.json?q={query}", | |
| "popular": "/subreddits/popular.json", | |
| } | |
| }, | |
| "twitter_api_v2": { | |
| "name": "Twitter API v2 (X)", | |
| "description": "Tweets, users, and trends (requires Bearer token)", | |
| "base_url": "https://api.twitter.com/2", | |
| "auth_required": True, | |
| "auth_type": "bearer", | |
| "endpoints": { | |
| "tweets": "/tweets", | |
| "tweet": "/tweets/{id}", | |
| "users": "/users", | |
| "user": "/users/{id}", | |
| "search": "/tweets/search/recent", | |
| "timeline": "/users/{id}/tweets", | |
| "mentions": "/users/{id}/mentions", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 32: SPORTS & FITNESS | |
| # ============================================================ | |
| SPORTS_APIS = { | |
| "football_data": { | |
| "name": "Football-Data.org", | |
| "description": "Football/soccer data, leagues, matches (free tier available)", | |
| "base_url": "https://api.football-data.org/v4", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "competitions": "/competitions", | |
| "matches": "/matches", | |
| "teams": "/teams", | |
| "standings": "/competitions/{id}/standings", | |
| "scorers": "/competitions/{id}/scorers", | |
| } | |
| }, | |
| "api_football": { | |
| "name": "API-Football", | |
| "description": "Football data from 800+ leagues (API key required)", | |
| "base_url": "https://v3.football.api-sports.io", | |
| "auth_required": True, | |
| "auth_type": "header", | |
| "endpoints": { | |
| "leagues": "/leagues", | |
| "teams": "/teams", | |
| "fixtures": "/fixtures", | |
| "standings": "/standings", | |
| "players": "/players", | |
| } | |
| }, | |
| "api_nba": { | |
| "name": "API-NBA", | |
| "description": "NBA basketball data (API key required)", | |
| "base_url": "https://v2.nba.api-sports.io", | |
| "auth_required": True, | |
| "auth_type": "header", | |
| "endpoints": { | |
| "games": "/games", | |
| "teams": "/teams", | |
| "players": "/players", | |
| "standings": "/standings", | |
| "seasons": "/seasons", | |
| } | |
| }, | |
| "basketball_data": { | |
| "name": "Basketball Data", | |
| "description": "NBA data (no API key needed for basic)", | |
| "base_url": "https://www.balldontlie.io/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "games": "/games", | |
| "players": "/players", | |
| "teams": "/teams", | |
| "stats": "/stats", | |
| } | |
| }, | |
| "ergast_f1": { | |
| "name": "Ergast F1", | |
| "description": "Formula 1 historical data", | |
| "base_url": "https://ergast.com/api/f1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "seasons": "/seasons.json", | |
| "races": "/{season}.json", | |
| "results": "/{season}/{round}/results.json", | |
| "drivers": "/{season}/drivers.json", | |
| "constructors": "/{season}/constructors.json", | |
| "standings": "/{season}/driverStandings.json", | |
| "circuits": "/circuits.json", | |
| } | |
| }, | |
| "nfl_venue": { | |
| "name": "NFL Arrest Data", | |
| "description": "NFL player arrest records", | |
| "base_url": "https://nflarrest.com/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "crime": "/crime", | |
| "team": "/team", | |
| "player": "/player", | |
| } | |
| }, | |
| "strava": { | |
| "name": "Strava API", | |
| "description": "Fitness activities and athlete data (OAuth required)", | |
| "base_url": "https://www.strava.com/api/v3", | |
| "auth_required": True, | |
| "auth_type": "oauth", | |
| "endpoints": { | |
| "athlete": "/athlete", | |
| "activities": "/athlete/activities", | |
| "activity": "/activities/{id}", | |
| "segments": "/segments/{id}", | |
| } | |
| }, | |
| "city_bikes": { | |
| "name": "CityBikes", | |
| "description": "Bike sharing data for cities worldwide", | |
| "base_url": "https://api.citybik.es/v2", | |
| "auth_required": False, | |
| "endpoints": { | |
| "networks": "/networks", | |
| "network": "/networks/{id}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 33: TEST DATA | |
| # ============================================================ | |
| TEST_DATA_APIS = { | |
| "faker_api": { | |
| "name": "Faker API", | |
| "description": "Generate fake data for testing", | |
| "base_url": "https://fakerapi.it/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "persons": "/persons", | |
| "companies": "/companies", | |
| "addresses": "/addresses", | |
| "books": "/books", | |
| "creditcards": "/credit_cards", | |
| "images": "/images", | |
| "products": "/products", | |
| "text": "/texts", | |
| "users": "/users", | |
| "custom": "/custom", | |
| } | |
| }, | |
| "mockaroo": { | |
| "name": "Mockaroo", | |
| "description": "Generate realistic test data", | |
| "base_url": "https://api.mockaroo.com/api", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "generate": "/generate.{format}", | |
| } | |
| }, | |
| "uinames": { | |
| "name": "uinames.com", | |
| "description": "Randomly generated user names", | |
| "base_url": "https://uinames.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "name": "", | |
| "region": "/?region={region}", | |
| "gender": "/?gender={gender}", | |
| "amount": "/?amount={count}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 34: TEXT ANALYSIS | |
| # ============================================================ | |
| TEXT_APIS = { | |
| "systran": { | |
| "name": "SYSTRAN Translate", | |
| "description": "Text translation API (API key required)", | |
| "base_url": "https://api-translate.systran.net", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "translate": "/translation/text/translate", | |
| "supported_languages": "/translation/supportedLanguages", | |
| } | |
| }, | |
| "libretranslate": { | |
| "name": "LibreTranslate", | |
| "description": "Free and Open Source Translation API", | |
| "base_url": "https://libretranslate.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "translate": "/translate", | |
| "languages": "/languages", | |
| "detect": "/detect", | |
| } | |
| }, | |
| "text_processing": { | |
| "name": "Text Processing", | |
| "description": "Text analysis and processing", | |
| "base_url": "https://text-processing.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "sentiment": "/sentiment", | |
| "phrase": "/phrase", | |
| "stem": "/stem", | |
| "tag": "/tag", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 35: TRACKING | |
| # ============================================================ | |
| TRACKING_APIS = { | |
| "package_track": { | |
| "name": "Package Tracking APIs", | |
| "description": "Various package tracking endpoints", | |
| "base_url": "https://api.packagetracker.io/v1", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "track": "/track/{carrier}/{tracking_number}", | |
| "carriers": "/carriers", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 36: TRANSPORTATION | |
| # ============================================================ | |
| TRANSPORTATION_APIS = { | |
| "transportapi": { | |
| "name": "Transport API", | |
| "description": "UK public transport data", | |
| "base_url": "https://transportapi.com/v3/uk", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "bus_stops": "/bus/stops/near.json", | |
| "bus_live": "/bus/stop/{atcocode}/live.json", | |
| "train_stations": "/train/stations/near.json", | |
| "train_live": "/train/station/{station_code}/live.json", | |
| } | |
| }, | |
| "resrobot": { | |
| "name": "ResRobot (Swedish Transport)", | |
| "description": "Swedish public transport", | |
| "base_url": "https://api.resrobot.se/v2.1", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "trip": "/trip", | |
| "departureBoard": "/departureBoard", | |
| "arrivalBoard": "/arrivalBoard", | |
| "location.name": "/location.name", | |
| } | |
| }, | |
| "amadeus": { | |
| "name": "Amadeus for Developers", | |
| "description": "Flight, hotel, car rental search (API key required)", | |
| "base_url": "https://api.amadeus.com/v2", | |
| "auth_required": True, | |
| "auth_type": "oauth", | |
| "endpoints": { | |
| "flight_search": "/shopping/flight-offers", | |
| "flight Inspiration": "/shopping/flight-destinations", | |
| "hotel_search": "/shopping/hotel-offers", | |
| "airport": "/reference-data/locations", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 37: URL SHORTENERS | |
| # ============================================================ | |
| URL_SHORTENER_APIS = { | |
| "cleanuri": { | |
| "name": "CleanURI", | |
| "description": "URL shortening service", | |
| "base_url": "https://cleanuri.com/api/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "shorten": "/shorten", | |
| } | |
| }, | |
| "is_gd": { | |
| "name": "is.gd", | |
| "description": "URL shortening", | |
| "base_url": "https://is.gd", | |
| "auth_required": False, | |
| "endpoints": { | |
| "shorten": "/create.php?format=simple&url={url}", | |
| "stats": "/usagestats.php", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 38: VEHICLE | |
| # ============================================================ | |
| VEHICLE_APIS = { | |
| "nhtsa": { | |
| "name": "NHTSA", | |
| "description": "Vehicle safety ratings and recalls (US)", | |
| "base_url": "https://api.nhtsa.gov", | |
| "auth_required": False, | |
| "endpoints": { | |
| "recalls": "/products/vehicle/recalls", | |
| "rating": "/SafetyRatings", | |
| "vin_decode": "/vehicles/DecodeVin/{vin}", | |
| "complaints": "/complaints/complaintsByVehicle", | |
| } | |
| }, | |
| "car_query": { | |
| "name": "Car Query", | |
| "description": "Car database and specifications", | |
| "base_url": "https://www.carqueryapi.com/api/0.3", | |
| "auth_required": False, | |
| "endpoints": { | |
| "makes": "?cmd=getMakes", | |
| "models": "?cmd=getModels", | |
| "trims": "?cmd=getTrims", | |
| "model": "?cmd=getModel", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 39: WEATHER | |
| # ============================================================ | |
| WEATHER_APIS = { | |
| "open_meteo": { | |
| "name": "Open-Meteo Weather", | |
| "description": "Global weather forecast API - completely free, no API key needed", | |
| "base_url": "https://api.open-meteo.com/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "forecast": "/forecast", | |
| "air_quality": "/air-quality", | |
| "elevation": "/elevation", | |
| "flood": "/flood", | |
| "climate_change": "/climate", | |
| } | |
| }, | |
| "openweather": { | |
| "name": "OpenWeatherMap", | |
| "description": "Weather data and forecasts (free tier available with API key)", | |
| "base_url": "https://api.openweathermap.org/data/2.5", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "weather": "/weather", | |
| "forecast": "/forecast", | |
| "onecall": "/onecall", | |
| "air_pollution": "/air_pollution", | |
| } | |
| }, | |
| "wttr_in": { | |
| "name": "wttr.in", | |
| "description": "Console-oriented weather forecast (no API key)", | |
| "base_url": "https://wttr.in", | |
| "auth_required": False, | |
| "endpoints": { | |
| "weather": "/{location}?format={format}", | |
| "moon": "/Moon", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 40: JOKES & ENTERTAINMENT | |
| # ============================================================ | |
| JOKES_APIS = { | |
| "joke_api": { | |
| "name": "JokeAPI", | |
| "description": "Programming and general jokes", | |
| "base_url": "https://v2.jokeapi.dev/joke", | |
| "auth_required": False, | |
| "endpoints": { | |
| "any": "/Any", | |
| "programming": "/Programming", | |
| "misc": "/Misc", | |
| "dark": "/Dark", | |
| "pun": "/Pun", | |
| "spooky": "/Spooky", | |
| "christmas": "/Christmas", | |
| "custom": "/{categories}?type={type}&amount={amount}", | |
| } | |
| }, | |
| "official_joke": { | |
| "name": "Official Joke API", | |
| "description": "Simple random jokes", | |
| "base_url": "https://official-joke-api.appspot.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random_joke", | |
| "ten": "/random_ten", | |
| "by_type": "/jokes/{type}/random", | |
| "types": "/types", | |
| } | |
| }, | |
| "meme_api": { | |
| "name": "Meme API", | |
| "description": "Random memes from Reddit", | |
| "base_url": "https://meme-api.com/gimme", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "", | |
| "subreddit": "/{subreddit}/{count}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 41: IP & NETWORK | |
| # ============================================================ | |
| IP_APIS = { | |
| "ip_api_co": { | |
| "name": "ipapi.co", | |
| "description": "IP address geolocation (free tier)", | |
| "base_url": "https://ipapi.co", | |
| "auth_required": False, | |
| "endpoints": { | |
| "my_ip": "/json", | |
| "specific_ip": "/{ip}/json", | |
| } | |
| }, | |
| "ipwhois": { | |
| "name": "IPWhois.io", | |
| "description": "IP geolocation", | |
| "base_url": "https://ipwho.is", | |
| "auth_required": False, | |
| "endpoints": { | |
| "my_ip": "", | |
| "specific_ip": "/{ip}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 42: CODING CHALLENGES | |
| # ============================================================ | |
| CODING_APIS = { | |
| "leetcode_api": { | |
| "name": "LeetCode unofficial API", | |
| "description": "LeetCode problems and user data", | |
| "base_url": "https://leetcode-api-faisalshohag.vercel.app", | |
| "auth_required": False, | |
| "endpoints": { | |
| "user": "/{username}", | |
| "daily": "/daily", | |
| } | |
| }, | |
| "codeforces": { | |
| "name": "Codeforces API", | |
| "description": "Codeforces competitive programming data", | |
| "base_url": "https://codeforces.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "user_info": "/user.info", | |
| "contest_list": "/contest.list", | |
| "problemset": "/problemset.problems", | |
| "user_status": "/user.status", | |
| "recent_submissions": "/recentActions", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 43: AI & NLP SERVICES | |
| # ============================================================ | |
| AI_APIS = { | |
| "huggingface_inference": { | |
| "name": "Hugging Face Inference API", | |
| "description": "Run thousands of ML models - text generation, sentiment, NER, etc.", | |
| "base_url": "https://api-inference.huggingface.co/models", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "models": "", | |
| "run": "/{model_id}", | |
| } | |
| }, | |
| "openrouter": { | |
| "name": "OpenRouter", | |
| "description": "Access many LLM models with unified API, free tier available", | |
| "base_url": "https://openrouter.ai/api/v1", | |
| "auth_required": True, | |
| "auth_type": "bearer", | |
| "endpoints": { | |
| "chat": "/chat/completions", | |
| "models": "/models", | |
| "limits": "/auth/key", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 44: QR CODES | |
| # ============================================================ | |
| QR_APIS = { | |
| "goqr": { | |
| "name": "goQR.me", | |
| "description": "QR code generation API", | |
| "base_url": "https://api.qrserver.com/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "create": "/create-qr-code", | |
| "read": "/read-qr-code", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 45: QUOTES & INSPIRATION | |
| # ============================================================ | |
| QUOTES_APIS = { | |
| "quotable": { | |
| "name": "Quotable", | |
| "description": "Random quotes from famous people", | |
| "base_url": "https://api.quotable.io", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/quotes/random", | |
| "quotes": "/quotes", | |
| "authors": "/authors", | |
| "tags": "/tags", | |
| "author_quotes": "/quotes?author={author}", | |
| } | |
| }, | |
| "zen_quotes": { | |
| "name": "Zen Quotes", | |
| "description": "Inspirational quotes", | |
| "base_url": "https://zenquotes.io/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "today": "/today", | |
| "quotes": "/quotes", | |
| } | |
| }, | |
| "breaking_bad": { | |
| "name": "Breaking Bad Quotes", | |
| "description": "Quotes from Breaking Bad", | |
| "base_url": "https://api.breakingbadquotes.xyz/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "quote": "/quotes", | |
| "quotes": "/quotes/{count}", | |
| } | |
| }, | |
| "game_of_thrones": { | |
| "name": "Game of Thrones Quotes", | |
| "description": "Quotes from Game of Thrones", | |
| "base_url": "https://api.gameofthronesquotes.xyz/v1", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "author": "/author/{author}/{count}", | |
| } | |
| }, | |
| "favqs": { | |
| "name": "FavQs", | |
| "description": "Quote of the day and search", | |
| "base_url": "https://favqs.com/api", | |
| "auth_required": True, | |
| "auth_type": "token", | |
| "endpoints": { | |
| "qotd": "/qotd", | |
| "quotes": "/quotes", | |
| "quote": "/quotes/{id}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 46: COLORS | |
| # ============================================================ | |
| COLOR_APIS = { | |
| "color": { | |
| "name": "The Color API", | |
| "description": "Color information, schemes, conversion", | |
| "base_url": "https://www.thecolorapi.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "id": "/id", | |
| "scheme": "/scheme", | |
| "random": "/random", | |
| } | |
| }, | |
| "x_color": { | |
| "name": "xColor API", | |
| "description": "Color conversion", | |
| "base_url": "https://x-colors.herokuapp.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "hex2rgb": "/hex2rgb", | |
| "rgb2hex": "/rgb2hex", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 47: UNIVERSITIES | |
| # ============================================================ | |
| UNIVERSITY_APIS = { | |
| "universities": { | |
| "name": "Universities List", | |
| "description": "Database of universities worldwide", | |
| "base_url": "http://universities.hipolabs.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search", | |
| "by_country": "/search?country={country}", | |
| "by_name": "/search?name={name}", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 48: TV & MOVIES | |
| # ============================================================ | |
| TV_MOVIE_APIS = { | |
| "tvmaze": { | |
| "name": "TVmaze", | |
| "description": "TV show data and schedules", | |
| "base_url": "https://api.tvmaze.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "search": "/search/shows?q={query}", | |
| "show": "/shows/{id}", | |
| "episodes": "/shows/{id}/episodes", | |
| "schedule": "/schedule", | |
| "people": "/search/people?q={query}", | |
| } | |
| }, | |
| "omdb": { | |
| "name": "OMDb API", | |
| "description": "Movie and TV show data (API key required for higher limits)", | |
| "base_url": "https://www.omdbapi.com", | |
| "auth_required": True, | |
| "auth_type": "apikey", | |
| "endpoints": { | |
| "by_title": "?t={title}&apikey={api_key}", | |
| "by_id": "?i={id}&apikey={api_key}", | |
| "search": "?s={query}&apikey={api_key}", | |
| } | |
| }, | |
| "streaming_availability": { | |
| "name": "Streaming Availability", | |
| "description": "Where to watch movies and shows", | |
| "base_url": "https://streaming-availability.p.rapidapi.com", | |
| "auth_required": True, | |
| "auth_type": "rapidapi", | |
| "endpoints": { | |
| "search": "/search/basic", | |
| "title": "/get/basic", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # CATEGORY 49: FACTS & TRIVIA | |
| # ============================================================ | |
| FACTS_APIS = { | |
| "useless_facts": { | |
| "name": "Useless Facts", | |
| "description": "Random useless but interesting facts", | |
| "base_url": "https://uselessfacts.jsph.pl/api/v2/facts", | |
| "auth_required": False, | |
| "endpoints": { | |
| "random": "/random", | |
| "today": "/today", | |
| } | |
| }, | |
| "cat_facts": { | |
| "name": "Cat Facts", | |
| "description": "Random facts about cats", | |
| "base_url": "https://catfact.ninja", | |
| "auth_required": False, | |
| "endpoints": { | |
| "fact": "/fact", | |
| "facts": "/facts", | |
| } | |
| }, | |
| "dog_facts": { | |
| "name": "Dog Facts", | |
| "description": "Random facts about dogs", | |
| "base_url": "https://dog-api.kinduff.com/api", | |
| "auth_required": False, | |
| "endpoints": { | |
| "facts": "/facts", | |
| "fact_by_id": "/facts?id={id}", | |
| } | |
| }, | |
| "trivia_api": { | |
| "name": "Open Trivia Database", | |
| "description": "Trivia questions in various categories", | |
| "base_url": "https://opentdb.com/api.php", | |
| "auth_required": False, | |
| "endpoints": { | |
| "questions": "?amount={amount}&category={category}&difficulty={difficulty}&type={type}", | |
| "categories": "https://opentdb.com/api_category.php", | |
| "token": "https://opentdb.com/api_token.php?command=request", | |
| } | |
| }, | |
| "numbers_facts": { | |
| "name": "Numbers API", | |
| "description": "Interesting facts about numbers", | |
| "base_url": "http://numbersapi.com", | |
| "auth_required": False, | |
| "endpoints": { | |
| "trivia": "/{number}", | |
| "math": "/{number}/math", | |
| "year": "/{number}/year", | |
| "date": "/{month}/{day}/date", | |
| "random": "/random", | |
| } | |
| }, | |
| } | |
| # ============================================================ | |
| # MASTER REGISTRY - All API Categories | |
| # ============================================================ | |
| MASTER_REGISTRY = { | |
| "animals": ANIMALS_APIS, | |
| "anime": ANIME_APIS, | |
| "art": ART_APIS, | |
| "books": BOOKS_APIS, | |
| "business": BUSINESS_APIS, | |
| "calendar": CALENDAR_APIS, | |
| "cryptocurrency": CRYPTO_APIS, | |
| "currency": CURRENCY_APIS, | |
| "validation": VALIDATION_APIS, | |
| "development": DEV_APIS, | |
| "dictionaries": DICTIONARY_APIS, | |
| "environment": ENVIRONMENT_APIS, | |
| "finance": FINANCE_APIS, | |
| "food": FOOD_APIS, | |
| "games": GAMES_APIS, | |
| "geocoding": GEOCODING_APIS, | |
| "government": GOVERNMENT_APIS, | |
| "health": HEALTH_APIS, | |
| "jobs": JOBS_APIS, | |
| "machine_learning": ML_APIS, | |
| "music": MUSIC_APIS, | |
| "news": NEWS_APIS, | |
| "open_data": OPEN_DATA_APIS, | |
| "patent": PATENT_APIS, | |
| "phone": PHONE_APIS, | |
| "photography": PHOTOGRAPHY_APIS, | |
| "programming": PROGRAMMING_APIS, | |
| "science": SCIENCE_APIS, | |
| "security": SECURITY_APIS, | |
| "shopping": SHOPPING_APIS, | |
| "social": SOCIAL_APIS, | |
| "sports": SPORTS_APIS, | |
| "test_data": TEST_DATA_APIS, | |
| "text_analysis": TEXT_APIS, | |
| "tracking": TRACKING_APIS, | |
| "transportation": TRANSPORTATION_APIS, | |
| "url_shortener": URL_SHORTENER_APIS, | |
| "vehicle": VEHICLE_APIS, | |
| "weather": WEATHER_APIS, | |
| "jokes": JOKES_APIS, | |
| "ip": IP_APIS, | |
| "coding": CODING_APIS, | |
| "ai": AI_APIS, | |
| "qr": QR_APIS, | |
| "quotes": QUOTES_APIS, | |
| "colors": COLOR_APIS, | |
| "universities": UNIVERSITY_APIS, | |
| "tv_movies": TV_MOVIE_APIS, | |
| "facts": FACTS_APIS, | |
| } | |
| def get_all_apis() -> Dict[str, Dict]: | |
| """Return a flat dictionary of all APIs across all categories""" | |
| all_apis = {} | |
| for category, apis in MASTER_REGISTRY.items(): | |
| for api_id, api_info in apis.items(): | |
| all_apis[api_id] = { | |
| **api_info, | |
| "category": category | |
| } | |
| return all_apis | |
| def get_api_by_id(api_id: str) -> Optional[Dict]: | |
| """Get a specific API by its ID""" | |
| all_apis = get_all_apis() | |
| return all_apis.get(api_id) | |
| def get_apis_by_category(category: str) -> Dict[str, Dict]: | |
| """Get all APIs in a specific category""" | |
| return MASTER_REGISTRY.get(category, {}) | |
| def count_apis() -> Dict[str, int]: | |
| """Count APIs per category and total""" | |
| counts = {category: len(apis) for category, apis in MASTER_REGISTRY.items()} | |
| counts["total"] = sum(counts.values()) | |
| return counts | |
| def search_apis(query: str) -> List[Dict]: | |
| """Search APIs by name, description, or category""" | |
| query = query.lower() | |
| results = [] | |
| all_apis = get_all_apis() | |
| for api_id, api_info in all_apis.items(): | |
| if (query in api_id.lower() or | |
| query in api_info.get("name", "").lower() or | |
| query in api_info.get("description", "").lower() or | |
| query in api_info.get("category", "").lower()): | |
| results.append({ | |
| "id": api_id, | |
| **api_info | |
| }) | |
| return results | |
| # Generate API statistics | |
| if __name__ == "__main__": | |
| counts = count_apis() | |
| print(f"\n{'='*60}") | |
| print("HERMES API REGISTRY STATISTICS") | |
| print(f"{'='*60}") | |
| print(f"\nTotal Categories: {len(MASTER_REGISTRY)}") | |
| print(f"Total APIs: {counts['total']}") | |
| print(f"\nBreakdown by category:") | |
| for category, count in sorted(counts.items()): | |
| if category != "total": | |
| print(f" {category}: {count} APIs") | |
| # Count total endpoints | |
| all_apis = get_all_apis() | |
| total_endpoints = sum(len(api.get("endpoints", {})) for api in all_apis.values()) | |
| print(f"\nTotal Endpoints: {total_endpoints}") | |
| print(f"\n{'='*60}") | |