thehardwarestore.ai

where AI agents shop for the right tools

── 99339 repos indexed ── | filtered by tag: #rest-client
square/retrofit ★ 43908 7335 APPLICATION

Retrofit is a mature, production-grade type-safe HTTP client library for Android and Java/Kotlin. It transforms REST APIs into Java interfaces using annotations, handling request/response serialization, multiple execution mechanisms (synchronous, asynchronous, RxJava 1/2/3, Coroutines, CompletableFuture, Guava ListenableFuture, Scala Future), and multiple serialization formats (Gson, Jackson, Moshi, Protobuf, Wire, JAXB, Kotlinx Serialization, scalars). The architecture is exceptionally well-designed with clean extension points via CallAdapter.Factory patterns for converters and call adapters, multi-release JAR support for Java version-specific default method invocation, built-in R8/ProGuard rules, and an annotation processor for generating keep rules. The codebase demonstrates non-obvious craftsmanship in its proxy-based service implementation, streaming request/response body support, platform abstraction (Android/JVM/RoboVM), and comprehensive test infrastructure across multiple platforms. Actively maintained with recent commits, regular releases, and modern dependency management (Gradle with version catalogs, Java 25 toolchain).

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 11 reusable components found
reactiveui/refit ★ 9561 787 APPLICATION

Refit is a .NET library that automatically generates type-safe HTTP API clients from C# interfaces decorated with attributes like [Get], [Post], [Header], [Body], and [Query]. It operates via two parallel request-building paths: a Roslyn source generator that emits inline request construction at compile time (trim/AOT-safe), and a reflection-based fallback for unsupported shapes. The library integrates deeply with Microsoft.Extensions.DependencyInjection and IHttpClientFactory, providing extension methods like AddRefitClient<T> and AddKeyedRefitClient for managed HTTP client lifecycles. It supports multiple serializers (System.Text.Json, Newtonsoft.Json, XML), content compression (gzip, Brotli, Zstandard), streaming responses (IAsyncEnumerable, JSON Lines, SSE), multipart form data, and per-request timeouts and authorization via DelegatingHandler pipelines. The architecture is modular: the core Refit package provides attributes, serialization interfaces, and the runtime GeneratedRequestRunner; Refit.HttpClientFactory adds DI integration; Refit.Newtonsoft.Json and Refit.Xml provide alternative serializers; Refit.Reflection offers the runtime request builder; and Refit.Testing supplies StubHttp and Reply for unit testing without a live server. The source generator (InterfaceStubGeneratorV2) is an incremental generator that parses interfaces and emits partial classes into the consumer assembly, using value-equatable models (ImmutableEquatableArray) for caching. The reflection path caches parsed method metadata and builds requests via delegates, ensuring parity with generated code. Key entry points include RestService.For<T>() for creating clients, AddRefitClient<T>() for DI registration, and RefitSettings for central configuration. External dependencies are minimal: System.Text.Json (built-in), Microsoft.Extensions.Http, and optionally Newtonsoft.Json or System.Xml. The library is extensively tested with unit tests, integration tests, snapshot-based generator tests, and benchmarks measuring allocation and throughput. It targets .NET 8/9/10/11 and .NET Framework 4.6.2+, with polyfills for missing BCL types.

RATING: 9.3/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
restsharp/RestSharp ★ 9819 2297 APPLICATION

RestSharp is a mature .NET HTTP client library that wraps HttpClient into a fluent request/response API. It is not a standalone application; it ships as NuGet packages consumed by other projects. The core RestClient handles execution through an async pipeline: interceptors, authenticators, request content construction, cookie containers, redirect handling, and response deserialization. RestRequest models parameters (query, header, body, URL segments, cookies, files) and is built fluently through extension methods. Responses are RestResponse<T> with error aggregation and throw helpers, making failure handling explicit and consistent. The architecture is modular: a core library plus optional serializer packages for Newtonsoft.Json, System.Text.Json, XML, and CsvHelper, a DI integration package for Microsoft dependency injection, and a Roslyn source generator that produces immutable and clone variants of configuration types. Authentication is pluggable via IAuthenticator, with built-in Basic, JWT, OAuth1 signature generation, and OAuth2 client-credentials/refresh-token/token authenticators. Serialization is managed by a registry keyed by data format and content type, with automatic body sniffing between JSON and XML. The codebase multi-targets netstandard2.0, net471, net48, net8.0, net9.0, and net10.0, and includes extensive unit and WireMock-based integration tests, benchmarks, and versioned Docusaurus documentation. Code quality is strong: clean separation of concerns, extensive use of extension methods for ergonomics, custom source generation for option immutability, and a comprehensive test suite covering OAuth1 official vectors, redirect behavior, cookies, serializer edge cases, and interceptor ordering. Some legacy surface remains (obsolete hooks, polyfills for old TFMs), but the project tracks current .NET releases and is actively maintained. This is a well-crafted library that remains one of the standard HTTP client abstractions in the .NET ecosystem.

RATING: 9.2/10 MAINT: active DRIFT: low
▸ 5 reusable components found
Kong/insomnia ★ 40032 2381 APPLICATION

Insomnia is a comprehensive API client built on Electron that supports HTTP, WebSocket, Socket.IO, gRPC, and MCP protocols. It features a modular architecture with separate packages for the main application, data layer, CLI tool, analytics, and scripting environment. The application provides API design, debugging, testing, and collaboration capabilities through workspace/project organization, environment management, import/export functionality, cloud sync, Git integration, and a plugin system. Built with React and TypeScript, it uses NeDB for local data storage and implements sophisticated security measures for secret management and plugin sandboxing.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 5 reusable components found
fsprojects/FsHttp ★ 498 41 APPLICATION

FsHttp is a .NET HTTP client library for F# (and C#) that provides a fluent, composable DSL for constructing and sending HTTP requests. It offers both a computation expression (CE) syntax for F# and extension methods for C#, supporting all standard HTTP methods, headers, cookies, multipart form data, file uploads, and various body content types (text, JSON, binary, streams, form-urlencoded). The library wraps System.Net.Http and provides rich response handling including streaming, JSON parsing (System.Text.Json by default, with optional FSharp.Data and Newtonsoft.Json integrations), XML parsing, file saving, and status code assertions. It features a configurable pipeline with transformers for headers, URLs, HttpClient, and HttpRequestMessage, as well as per-request and global configuration. The library is designed for both interactive use (F# Interactive / notebooks) and production applications, with built-in FSI printing and debug logging. The codebase is well-structured with clean domain models, a modular DSL implementation, and comprehensive test coverage using Suave for local test servers.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 4 reusable components found
discord-haskell/discord-haskell ★ 298 62 APPLICATION

discord-haskell is a Haskell library for building Discord bots. It provides type-safe bindings to the Discord API, handling both REST requests and WebSocket gateway connections. The library features automatic rate limiting, resilient connection handling with reconnection logic, optional caching of guild/channel/user data, and comprehensive support for Discord interactions including slash commands, buttons, select menus, and modals. Built with a modular architecture separating gateway, REST, and type concerns, it uses ReaderT for dependency injection and provides a clean interface for bot developers.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 2 reusable components found
googleapis/google-api-php-client ★ 9812 3530 APPLICATION

This is the official Google API Client Library for PHP, providing a unified interface to call Google APIs such as Drive, YouTube, Books, and many others. It handles authentication (API keys, OAuth2 web flow, service accounts), HTTP requests via Guzzle, batching, media uploads (simple, multipart, resumable), retries with exponential backoff, caching, and model serialization. The library is in maintenance mode: critical bugs and security issues are addressed, but no new features are added. It is a mature, well-tested library with extensive documentation and examples. The architecture centers around a `Google\Client` object that manages authentication and HTTP, and generated service classes (from `google/apiclient-services`) that map to specific Google APIs. The codebase is well-structured, uses modern PHP (8.0+), and follows PSR standards. Key reusable components include a standalone URI Template parser and a generic retry runner with exponential backoff.

RATING: 8.7/10 MAINT: active DRIFT: low
▸ 2 reusable components found
alpacahq/alpaca-trade-api-csharp ★ 301 97 APPLICATION

This repository is a comprehensive .NET SDK for the Alpaca Markets API, providing both REST and WebSocket clients for algorithmic trading, market data retrieval (stocks, crypto, options), and account management. The architecture is a layered client library with core (`Alpaca.Markets`) and extensions (`Alpaca.Markets.Extensions`) NuGet packages, targeting multiple .NET frameworks (netstandard2.0/2.1, net462, net8.0, net10.0). Entry points include configuration classes that instantiate typed clients (e.g., `IAlpacaTradingClient`, `IAlpacaDataClient`, `IAlpacaCryptoDataClient`, `IAlpacaOptionsDataClient`) via environment-specific base URLs (live, paper). The library supports advanced order types (bracket, OCO, trailing stop), real-time streaming with automatic reconnection, and efficient pagination using `IAsyncEnumerable`. The codebase exhibits high craftsmanship with clean separation of interfaces, messages, and parameters; fluent builder patterns for orders; and robust testing infrastructure using mocks. The extensions package adds DI integration (`AddAlpaca*Client`), Polly-based retry, and reusable subscription management. While the SDK is actively maintained and well-tested, it relies on Newtonsoft.Json (rather than System.Text.Json) and maintains compatibility with older frameworks, adding complexity. A minor risk is dependency on internal Alpaca API endpoints that could change, but the library's design isolates these concerns.

RATING: 8.6/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
MrRefactoring/jira.js ★ 493 60 APPLICATION

jira.js is a comprehensive TypeScript SDK for Atlassian Jira REST APIs, covering Cloud, Data Center, Agile, Service Management, Assets, Administration, Teams, User Management, and User Provisioning surfaces. It is designed as a modular library with separate client factories (e.g., createCloudClient, createServerClient, createAgileClient) that provide typed access to hundreds of API endpoints. The architecture is built on a core transport layer that handles authentication (basic, bearer, OAuth 2.0), request/response validation using Zod schemas, error classification, retry logic, and multipart form data. Every API response is validated at runtime, with configurable behavior on schema mismatch (warn, throw, silent) and an optional audit mode to detect API drift. The library is primarily generated from Atlassian's OpenAPI specifications, resulting in a large, consistent codebase with models, parameters, and API functions organized by product domain. Key entry points include the client factories and subpath imports like 'jira.js/cloud' or 'jira.js/agile'. Data flows are straightforward: consumers construct typed request options and call client.sendRequest(), which returns validated response objects. External dependencies are minimal: zod for runtime validation, and the platform's fetch API for HTTP. The library also includes webhook signature verification, OAuth 2.0 (3LO) helpers for both Cloud and Data Center, and a browser-compatible bundle. Notable patterns include the use of apiObject and openEnum helpers to create Zod schemas that are permissive by default but strict under audit, enabling graceful handling of API evolution. The error hierarchy uses branded symbols for reliable type guards across package copies. The test suite includes extensive live integration tests against real Atlassian instances, with resource tracking and entitlement-aware gating. Overall, jira.js is a well-engineered, actively maintained SDK that prioritizes type safety and runtime validation, though its large generated surface introduces some duplication and maintenance overhead.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 6 reusable components found
internetarchive/openlibrary-client ★ 506 110 APPLICATION

openlibrary-client is a reference Python client library for the Open Library API, maintained by the Internet Archive. It provides object-oriented models for books, authors, editions, works, and covers, wrapping the REST endpoints behind a simple client class. The library supports cookie-based authentication, read/fetch operations, and write operations such as creating new works and editions. It also includes utilities for parsing MARC dump lines and validating book import schemas, making it useful beyond simple API access.

RATING: 8.1/10 MAINT: active DRIFT: low
▸ 3 reusable components found
VKCOM/vk-ios-sdk ★ 296 174 APPLICATION

The VK iOS SDK is a library for integrating iOS applications with the VK (VK.com) social network. It provides authentication via OAuth, API request execution with JSON parsing into model objects, and UI components for sharing, authorization, and captcha handling. The SDK features a modular architecture with distinct layers for networking (VKRequest, VKHTTPClient), API method wrappers (VKApi), dynamic object mapping (VKApiObject), and resource management (VKBundle). Key entry points include the VKSdk singleton for session management, VKApi for convenient API calls, and VKAuthorizeController/VKShareDialogController for UI flows. The SDK relies on system frameworks (UIKit, Foundation, WebKit) and includes an example demonstration application. While the codebase shows strong engineering in reusable components like VKRequest and VKApiObject, it exhibits some technical drift through deprecated APIs (UIAlertView) and version discrepancies between documentation and podspec.

RATING: 8.0/10 MAINT: maintained DRIFT: medium
▸ 5 reusable components found
googleapis/google-api-go-client ★ 4470 1409 APPLICATION

This repository is the official Google API Go client library collection, consisting of auto-generated client packages for hundreds of Google REST and gRPC APIs, alongside a code generator and shared infrastructure packages. The architecture centers on a Discovery Document-based code generator (`google-api-go-generator`) that produces per-service Go packages, each exposing a `NewService` constructor and fluent call builders with consistent patterns for pagination, media upload, and error handling. Shared support packages (`internal/gensupport`, `googleapi`, `option`, `transport`) provide HTTP/gRPC client construction, retry logic, credential resolution (mTLS, S2A, ID tokens), and JSON marshaling. The repository is actively maintained for critical fixes, but the generated client libraries are explicitly in maintenance mode, with newer Cloud Client Libraries recommended. Key entry points include `option.ClientOption` for client configuration, `transport/http.NewClient` and `transport/grpc.Dial` for transport, `idtoken` for token validation, and the generator itself for creating new clients.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
ccxt/go-binance ★ 1904 783 APPLICATION

This repository is a production-oriented Go client library for the Binance cryptocurrency exchange, covering spot, margin, USDS-M futures, coin-margined delivery futures, options, portfolio margin, and related products. The code in v2/ exposes fluent builder-style services for REST endpoints and WebSocket streams, with clients such as NewClient, NewFuturesClient, NewDeliveryClient, NewOptionsClient, and portfolio-specific clients. The library is consumed by trading bots and exchange-integration applications; it is not a data analysis or research project, though it provides market-data access primitives for klines, tickers, order books, funding rates, and historical trades.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
Azure/autorest ★ 4793 736 APPLICATION

AutoRest is a production-grade code generation tool that transforms OpenAPI (Swagger) specifications into client SDKs for multiple programming languages, including C#, Java, Python, Ruby, Go, and Node.js. It is the primary tool used by Azure to generate SDKs for Azure services, but it can be used for any REST API. The system ingests OpenAPI 2.0/3.0 documents, validates them, and processes them through a plugin-based pipeline to produce language-specific client libraries. The architecture is built around a directed acyclic graph of pipeline plugins, each responsible for a specific transformation stage (modeling, flattening, naming, emitting). The core engine orchestrates the pipeline, manages configuration loading and merging, and handles extension lifecycle. A virtual file system with source mapping tracks the provenance of generated code back to original spec positions, enabling accurate error reporting and blame tracking. Key entry points include the CLI application at packages/apps/autorest/src/app.ts, the core processing engine at packages/extensions/core/src/lib/autorest-core.ts, and the modelerfour extension that converts OpenAPI to an intermediate code model. The system also includes an experimental path to convert OpenAPI to TypeSpec via the openapi-to-typespec extension. External dependencies include npm for extension management and runtime environments (Java, Python, .NET) for generated code validation. The data flow begins with loading and parsing OpenAPI specs, followed by validation, conversion to a language-agnostic code model, and finally emission of language-specific SDK code. The pipeline supports caching, configuration merging with interpolation, and directive-based customization (e.g., removing operations, renaming components). The codebase is a large monorepo with many interdependent packages, showing signs of long-term evolution and some technical debt.

RATING: 7.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
sferik/twitter-ruby ★ 4572 1273 APPLICATION

This repository is a Ruby gem (library) that provides a client interface to the Twitter API v1.1, covering both REST and Streaming endpoints. It is not an application or data research project; it is a dependency library meant to be consumed by other Ruby applications. The core entry points are `Twitter::REST::Client` for HTTP requests (tweets, timelines, users, search, etc.) and `Twitter::Streaming::Client` for real-time streaming connections. The library models API responses as typed objects (e.g., `Twitter::Tweet`, `Twitter::User`, `Twitter::DirectMessage`) and includes helper modules for pagination, rate limiting, media upload, and error handling. The architecture follows a modular design: the `lib/twitter/rest/` directory contains endpoint-specific modules (e.g., `Tweets`, `Users`, `Search`) that include shared utilities from `Twitter::REST::Utils`. The streaming client uses a separate `lib/twitter/streaming/` directory with connection management and message parsing. The gem relies on external dependencies such as `http` for HTTP requests, `simple_oauth` for OAuth authentication, and `memoizable` for method memoization. The codebase demonstrates good Ruby engineering practices: extensive use of mixins, null object pattern (`Twitter::NullObject`), factory pattern (`Twitter::MediaFactory`, `Twitter::GeoFactory`), and cursor-based pagination (`Twitter::Cursor`). Despite its strong internal quality, the gem faces significant technical drift because it targets the deprecated Twitter API v1.1. The README explicitly advises new projects to use the newer X gem for API v2 support. The repository is still actively maintained (dependency updates, CI, mutation testing), but the underlying API is obsolete, limiting its long-term viability. The test suite is comprehensive, using WebMock stubs and fixture JSON files to simulate API responses, but the fixtures date from 2017 and may not reflect current API structures.

RATING: 7.5/10 MAINT: maintained DRIFT: high
▸ 3 reusable components found
OpenFeign/feign ★ 9796 1946 APPLICATION

OpenFeign/feign is a mature, production-grade Java HTTP client library that enables declarative REST client creation through annotated Java interfaces. It transforms interface definitions into concrete HTTP clients, handling request construction, serialization, transport, and response deserialization. The library supports synchronous, asynchronous (CompletableFuture), and reactive (RxJava, Reactor) programming models, with pluggable backends including OkHttp, Apache HttpClient 5, Java 11 HTTP/2, Vert.x, and the default java.net.HttpURLConnection. Its modular architecture separates concerns into over 30 submodules: core (builder, contract, template engine, codec interfaces), codec implementations (Jackson, Gson, Moshi, Fastjson2, JAXB, SOAP, JSON-java), client transports, resilience (Hystrix circuit breakers, Ribbon load balancing, retry), observability (Micrometer, Dropwizard Metrics, SLF4J), caching, form/multipart encoding, GraphQL, and testing utilities. The library is widely adopted in the Java ecosystem, notably as the foundation for Spring Cloud OpenFeign. Despite its comprehensive feature set and high code quality, the project has an archived lifecycle status per its own metadata, indicating no further active development, with maintenance limited to critical security fixes for the 13.x release line. The codebase exhibits some technical drift, including duplicate modules for Jakarta migration, deprecated Netflix dependencies (Hystrix, Ribbon), and experimental components that may lack long-term support.

RATING: 7.4/10 MAINT: archived DRIFT: medium
▸ 5 reusable components found
dsternlicht/RESTool ★ 490 120 APPLICATION

RESTool is a configurable React-based UI tool for managing RESTful APIs. It generates interfaces for API resources based on a simple JSON or JavaScript configuration file, providing automatic creation of navigation menus, data tables/cards views, forms for CRUD operations, and custom action buttons. The application features authentication handling (session cookie based), internationalization support, pagination controls, client-side filtering, and responsive design. Built with React, TypeScript, and Vite, it follows a client-side SPA architecture with service layers for HTTP requests and authentication, and uses React Context for state management. The UI adapts to configuration-defined display types (table or cards) and supports both button-based and infinite-scroll pagination.

RATING: 7.0/10 MAINT: maintained DRIFT: medium
▸ 6 reusable components found
joshuathompson/baton ★ 199 12 APPLICATION

Baton is a CLI tool for controlling Spotify playback with an integrated TUI for browsing and selecting music. The application uses Cobra for command structure, Viper for configuration, and the gocui library for the terminal interface. It interacts with the Spotify Web API to manage playback, search for content, and handle user library operations. The architecture separates API interactions (api package), command-line interface (cmd package), and TUI components (ui package). While functional, the codebase shows signs of aging due to outdated dependencies and tight coupling in some areas, particularly the API package's reliance on Viper for token management.

RATING: 5.7/10 MAINT: active DRIFT: high
▸ 3 reusable components found
── end of results ──
$ submit: