Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/centeredge/yardarm

OpenAPI 3 SDK Generator for C#
https://github.com/centeredge/yardarm

csharp hacktoberfest openapi

Last synced: 9 days ago
JSON representation

OpenAPI 3 SDK Generator for C#

Awesome Lists containing this project

README

        

# Yardarm

![Build](https://github.com/CenterEdge/Yardarm/workflows/Build/badge.svg?branch=main&event=push)
[![NuGet](https://img.shields.io/nuget/dt/Yardarm?label=NuGet&logo=NuGet)](https://www.nuget.org/packages/Yardarm)
[![Join the chat at https://gitter.im/CenterEdgeYardarm/community](https://badges.gitter.im/CenterEdgeYardarm/community.svg)](https://gitter.im/CenterEdgeYardarm/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Yardarm is an OpenAPI 3 SDK Generator for C#. It provides various tools that will generate an SDK for a valid OpenAPI specification.

## Project Goals

- Present a .NET SDK that uses modern .NET/C# paradigms
- High performance, both for generating SDKs and SDK consumers
- Highly extensible
- Mitigate backward compatibility issues as new SDKs are generated from new versions of an OpenAPI specification

## Features

- Works with valid OpenAPI 3 specs, in JSON or YAML format
- Many generation options
- Command Line Application
- Docker Image
- In-code via library
- .NET Global Tool
- MSBuild SDK
- Generates a SDK using modern C# patterns and practices as follows:
- Asynchronous methods with cancellation tokens
- Nullable reference types
- Polymorphism
- Interfaces with concrete implementations
- XML documentation for IntelliSense
- Portable PDBs with embedded source code
- Fast SDK generation
- Doesn't make C# files on disk and run MSBuild
- Uses Roslyn to directly generate AST and compile in memory
- Built-in NuGet support
- Generate valid `.nupkg` files directly, with correct dependencies
- Target multiple framework versions in one package automatically
- Automatically restore packages required for compilation
- Highly extensible SDK generation
- Built around plugable extensions that add additional features or modify the C# code used for compilation
- Includes out-of-the-box plugins for common scenarios
- `Newtonsoft.Json` serialization/deserialization
- `System.Text.Json` serialization/deserialization
- `Microsoft.Extensions.Http` for dependency injection
- Highly extensible SDK
- Will allow the SDK consumer to extend the behaviors on the client side
- Pluggable configuration for things like TLS and base urls
- Add `HttpMessageHandler` instances to the `HttpClient` stack
- Mockable API interfaces for unit testing

## Consuming Yardarm SDKs

See [the detailed documentation](./docs/consuming) on consuming SDKs generated by Yardarm.

## Generating Yardarm SDKs

See [the detailed documentation](./docs/generating) on generating SDKs using Yardarm.

## Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

## Authors

- **Brant Burnett** - *Initial work* - [BrantBurnett](https://github.com/brantburnett)

See also the list of [contributors](https://github.com/CenterEdge/Yardarm/graphs/contributors) who participated in this project.

## License

This project is licensed under the Apache 2.0 License - see the [LICENSE.md](LICENSE.md) file for details