Refitter 0.1.5-alpha

This is a prerelease version of Refitter.
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Refitter --version 0.1.5-alpha
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Refitter --version 0.1.5-alpha
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Refitter&version=0.1.5-alpha&prerelease
                    
nuke :add-package Refitter --version 0.1.5-alpha
                    

Build Smoke Tests NuGet

Refitter

Refitter is a CLI tool for generating a C# REST API Client using the Refit library.

Usage:

To generate code from an OpenAPI specifications file, run the following:

$ refitter [path to OpenAPI spec file]

This will generate a file called Output.cs which contains the Refit interface and contract classes generated using NSwag

Here's an example generated output from the Swagger Petstore example

using Refit;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace GeneratedCode
{
    public interface ISwaggerPetstore
    {
        [Put("/pet")]
        Task<Pet> UpdatePet([Body]Pet body);

        [Post("/pet")]
        Task<Pet> AddPet([Body]Pet body);

        [Get("/pet/findByStatus")]
        Task<ICollection<Pet>> FindPetsByStatus();

        [Get("/pet/findByTags")]
        Task<ICollection<Pet>> FindPetsByTags();

        [Get("/pet/{petId}")]
        Task<Pet> GetPetById(long? petId);

        [Post("/pet/{petId}")]
        Task UpdatePetWithForm(long? petId);

        [Delete("/pet/{petId}")]
        Task DeletePet(long? petId);

        [Post("/pet/{petId}/uploadImage")]
        Task<ApiResponse> UploadFile(long? petId, [Body]FileParameter body);

        [Get("/store/inventory")]
        Task<IDictionary<string, int>> GetInventory();

        [Post("/store/order")]
        Task<Order> PlaceOrder([Body]Order body);

        [Get("/store/order/{orderId}")]
        Task<Order> GetOrderById(long? orderId);

        [Delete("/store/order/{orderId}")]
        Task DeleteOrder(long? orderId);

        [Post("/user")]
        Task CreateUser([Body]User body);

        [Post("/user/createWithList")]
        Task<User> CreateUsersWithListInput([Body]ICollection<User> body);

        [Get("/user/login")]
        Task<string> LoginUser();

        [Get("/user/logout")]
        Task LogoutUser();

        [Get("/user/{username}")]
        Task<User> GetUserByName(string username);

        [Put("/user/{username}")]
        Task UpdateUser(string username, [Body]User body);

        [Delete("/user/{username}")]
        Task DeleteUser(string username);
    }
}

Here's an example usage of the generated code above

using Refit;
using System;
using System.Threading.Tasks;

namespace GeneratedCode;

internal class Program
{
    private static async Task Main(string[] args)
    {
        var client = RestService.For<ISwaggerPetstore>("https://petstore3.swagger.io/api/v3");
        var pet = await client.GetPetById(2);

        Console.WriteLine($"Name: {pet.Name}");
        Console.WriteLine($"Category: {pet.Category.Name}");
        Console.WriteLine($"Status: {pet.Status}");
    }
}

The RestService class generates an implementation of ISwaggerPetstore that uses HttpClient to make its calls.

The code above when run will output something like this:

Name: Gatitotototo
Category: Chaucito
Status: Sold

System requirements

.NET 7.0

For tips and tricks on software development, check out my blog

If you find this useful and feel a bit generous then feel free to buy me a coffee ☕

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
2.0.0-preview.105 61 4/21/2026
1.8.0-preview.104 38 4/21/2026
1.8.0-preview.103 73 4/17/2026
1.8.0-preview.102 128 4/7/2026
1.8.0-preview.101 128 3/27/2026
1.8.0-preview.100 60 3/26/2026
1.8.0-preview.99 191 3/8/2026
1.7.3 368,003 1/25/2026
1.7.3-preview.98 92 1/23/2026
1.7.3-preview.97 66 1/23/2026
1.7.3-preview.96 59 1/23/2026
1.7.3-preview.95 54 1/23/2026
1.7.3-preview.94 55 1/23/2026
1.7.3-preview.93 56 1/23/2026
1.7.3-preview.92 62 1/23/2026
1.7.3-preview.91 62 1/23/2026
1.7.3-preview.89 62 1/23/2026
1.7.3-preview.88 65 1/23/2026
1.7.2 65,222 1/21/2026
0.1.5-alpha 413 2/18/2023
Loading failed