Table of Contents

CLI Tool

The tool is packaged as a .NET Tool and is published to nuget.org. You can install the latest version of this tool like this:

dotnet tool install --global Refitter

Usage

refitter --help
USAGE:
    refitter [URL or input file] [OPTIONS]

EXAMPLES:
    refitter ./openapi.json
    refitter https://petstore3.swagger.io/api/v3/openapi.yaml
    refitter ./openapi.json --settings-file ./openapi.refitter --output ./GeneratedCode.cs
    refitter ./openapi.json --namespace "Your.Namespace.Of.Choice.GeneratedCode" --output ./GeneratedCode.cs
    refitter ./openapi.json --namespace "Your.Namespace.Of.Choice.GeneratedCode" --internal
    refitter ./openapi.json --output ./IGeneratedCode.cs --interface-only
    refitter ./openapi.json --output ./GeneratedContracts.cs --contract-only
    refitter ./openapi.json --use-api-response
    refitter ./openapi.json --cancellation-tokens
    refitter ./openapi.json --no-operation-headers
    refitter ./openapi.json --no-accept-headers
    refitter ./openapi.json --use-iso-date-format
    refitter ./openapi.json --additional-namespace "Your.Additional.Namespace" --additional-namespace "Your.Other.Additional.Namespace"
    refitter ./openapi.json --multiple-interfaces ByEndpoint
    refitter ./openapi.json --tag Pet --tag Store --tag User
    refitter ./openapi.json --match-path '^/pet/.*'
    refitter ./openapi.json --trim-unused-schema
    refitter ./openapi.json --trim-unused-schema  --keep-schema '^Model$' --keep-schema '^Person.+'
    refitter ./openapi.json --no-deprecated-operations
    refitter ./openapi.json --operation-name-template '{operationName}Async'
    refitter ./openapi.json --optional-nullable-parameters
    refitter ./openapi.json --use-polymorphic-serialization

ARGUMENTS:
    [URL or input file]    URL or file path to OpenAPI Specification file

OPTIONS:
                                                DEFAULT                                                                                                                                                    
    -h, --help                                                   Prints help information                                                                                                                   
    -v, --version                                                Prints version information                                                                                                                
    -s, --settings-file                                          Path to .refitter settings file. Specifying this will ignore all other settings (except for --output)                                     
    -n, --namespace                             GeneratedCode    Default namespace to use for generated types                                                                                              
        --contracts-namespace                                    Default namespace to use for generated contracts                                                                                          
    -o, --output                                Output.cs        Path to Output file or folder (if multiple files are generated)                                                                           
        --contracts-output                                       Output path for generated contracts. Enabling this automatically enables generating multiple files                                        
        --no-auto-generated-header                               Don't add <auto-generated> header to output file                                                                                          
        --no-accept-headers                                      Don't add <Accept> header to output file                                                                                                  
        --interface-only                                         Don't generate contract types                                                                                                             
        --contract-only                                          Don't generate clients                                                                                                                    
        --use-api-response                                       Return Task<IApiResponse<T>> instead of Task<T>                                                                                           
        --use-observable-response                                Return IObservable instead of Task                                                                                                        
        --internal                                               Set the accessibility of the generated types to 'internal'                                                                                
        --cancellation-tokens                                    Use cancellation tokens                                                                                                                   
        --no-operation-headers                                   Don't generate operation headers                                                                                                          
        --no-logging                                             Don't log errors or collect telemetry                                                                                                     
        --additional-namespace                                   Add additional namespace to generated types                                                                                               
        --exclude-namespace                                      Exclude namespace on generated types                                                                                                      
        --use-iso-date-format                                    Explicitly format date query string parameters in ISO 8601 standard date format using delimiters (2023-06-15)                             
        --multiple-interfaces                                    Generate a Refit interface for each endpoint. May be one of ByEndpoint, ByTag                                                             
        --multiple-files                                         Generate multiple files instead of a single large file.                                                                                   
                                                                 The output files can be the following:                                                                                                    
                                                                 - RefitInterfaces.cs                                                                                                                      
                                                                 - DependencyInjection.cs                                                                                                                  
                                                                 - Contracts.cs                                                                                                                            
        --match-path                                             Only include Paths that match the provided regular expression. May be set multiple times                                                  
        --tag                                                    Only include Endpoints that contain this tag. May be set multiple times and result in OR'ed evaluation                                    
        --skip-validation                                        Skip validation of the OpenAPI specification                                                                                              
        --no-deprecated-operations                               Don't generate deprecated operations                                                                                                      
        --operation-name-template                                Generate operation names using pattern. When using --multiple-interfaces ByEndpoint, this is name of the Execute() method in the interface
        --optional-nullable-parameters                           Generate nullable parameters as optional parameters                                                                                       
        --trim-unused-schema                                     Removes unreferenced components schema to keep the generated output to a minimum                                                          
        --keep-schema                                            Force to keep matching schema, uses regular expressions. Use together with "--trim-unused-schema". Can be set multiple times              
        --no-banner                                              Don't show donation banner                                                                                                                
        --skip-default-additional-properties                     Set to true to skip default additional properties                                                                                         
        --operation-name-generator              Default          The NSwag IOperationNameGenerator implementation to use.                                                                                  
                                                                 May be one of:                                                                                                                            
                                                                 - Default                                                                                                                                 
                                                                 - MultipleClientsFromOperationId                                                                                                          
                                                                 - MultipleClientsFromPathSegments                                                                                                         
                                                                 - MultipleClientsFromFirstTagAndOperationId                                                                                               
                                                                 - MultipleClientsFromFirstTagAndOperationName                                                                                             
                                                                 - MultipleClientsFromFirstTagAndPathSegments                                                                                              
                                                                 - SingleClientFromOperationId                                                                                                             
                                                                 - SingleClientFromPathSegments                                                                                                            
                                                                 See https://refitter.github.io/api/Refitter.Core.OperationNameGeneratorTypes.html for more information                                    
        --immutable-records                                      Generate contracts as immutable records instead of classes                                                                                
        --use-apizr                                              Set to true to use Apizr by:                                                                                                              
                                                                 - Adding a final IApizrRequestOptions options parameter to all generated methods                                                          
                                                                 - Providing cancellation tokens by Apizr request options instead of a dedicated parameter                                                 
                                                                 - Using method overloads instead of optional parameters                                                                                   
                                                                 See https://refitter.github.io for more information and https://www.apizr.net to get started with Apizr                                   
        --use-dynamic-querystring-parameters                     Set to <c>true</c> to wrap multiple query parameters into a single complex one. Default is <c>false</c> (no wrapping).                    
                                                                 See https://github.com/reactiveui/refit?tab=readme-ov-file#dynamic-querystring-parameters for more information
        --use-polymorphic-serialization                          Replaces NSwag JsonInheritanceConverter attributes with System.Text.Json JsonPolymorphicAttributes. To have the native support of inheritance (de)serialization and fallback to base types when payloads with (yet) unknown types are offered by newer versions of an API.
                                                                 See https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/polymorphism for more information

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

refitter [path to OpenAPI spec file] --namespace "[Your.Namespace.Of.Choice.GeneratedCode]"

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

The settings file uses the .refitter file format

System requirements

.NET 8.0