SdkGenerator 1.3.3
See the version list below for details.
dotnet tool install --global SdkGenerator --version 1.3.3
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local SdkGenerator --version 1.3.3
#tool dotnet:?package=SdkGenerator&version=1.3.3
nuke :add-package SdkGenerator --version 1.3.3
Swashbuckle SDK Generator
This program allows you to generate a hand-optimized software development kit for different programming languages for your REST API. It can also generate documentation in Markdown or Readme formats.
Example usage of this program:
This opinionated software makes assumptions about your API and attempts to create a SDK that matches good practices in each programming language. The OpenAPI / Swagger spec permits lots of different ways of doing things; this tool is intended to work only with commonly seen use cases.
Using this program
Here's how to use this program.
- Install the program using NuGet
> dotnet tool install --global SdkGenerator
- Create a project file, then fill out all the values you want to use in it
> sdkgenerator create -p .\myapi.json
- Run the program and build a single language OR build all languages
> sdkgenerator build -p .\myapi.json
You can automate these steps in a Github workflow to execute this program automatically on new releases.
Automating SDK patches
If you publish updates to your API regularly, you can use GitHub Actions to automatically check for changes to your OpenAPI / Swagger file and generate a new software development kit.
Create a GitHub action using this template:
name: Check for OpenAPI updates
on:
schedule:
- cron: "0 0 * * 0" # Run once per week
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET Core @ Latest
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Add the SDK Generator
run: dotnet tool install SdkGenerator --global
- name: Generate the latest SDK
run: SdkGenerator build -p ./sdk-config.json
- name: Save patch notes
id: patch-notes
run: SdkGenerator get-patch-notes -p ./sdk-config.json
- name: Save pull request name
id: pr-name
run: SdkGenerator get-release-name -p ./sdk-config.json
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
with:
commit-message: ${{ steps.patch-notes.outputs }}
title: ${{ steps.pr-name.outputs }}
Supported Languages
Language | Supported | Github Workflows | Notes |
---|---|---|---|
C# | Yes | Automated | Live |
Dart | In Progress | No | In development |
Java | Yes | No | |
Python | Yes | No | Live |
Ruby | In Progress | No | Somewhat supported |
TypeScript | Yes | No | Live |
Supported Tools
Language | Supported | Notes |
---|---|---|
Readme | Yes | Markdown-formatted documentation can upload to Guide pages |
Workato | Partially | Somewhat supported |
OpenAPI assumptions
Examples of assumptions about OpenAPI made by this program:
- Only supports OpenAPI 3.0
- Your server supports GZIP encoding and HTTPS connection pooling
- An endpoint returns only a single data type and a single error type
- Each API has a single-word category, a four-word title, and a long remarks section that is a description
- You have a list of public environments (e.g. production, sandbox) that are documented in the SDK
- For test environments or dedicated servers, an SDK user must define a custom environment URL
- Enums are sometimes unsafe for SDK usage; all enums are converted to integers or strings
- Nobody intentionally adds HttpStatusCode to their swagger file; if it appears, ignore it
- Each API has a unique
summary
value in the swagger file which will be used as method names for the SDK
Attribution
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
This package has no dependencies.
Version | Downloads | Last updated | |
---|---|---|---|
1.3.8 | 83 | 10/30/2024 | |
1.3.7 | 128 | 10/20/2024 | |
1.3.6 | 115 | 10/18/2024 | |
1.3.5 | 103 | 10/5/2024 | |
1.3.4 | 78 | 9/30/2024 | |
1.3.3 | 104 | 9/13/2024 | |
1.3.2 | 106 | 9/3/2024 | |
1.3.1 | 134 | 8/18/2024 | |
1.3.0 | 125 | 8/13/2024 | |
1.2.9 | 114 | 8/13/2024 | |
1.2.8 | 116 | 8/13/2024 | |
1.2.7 | 124 | 8/13/2024 | |
1.2.6 | 110 | 7/25/2024 | |
1.2.5 | 194 | 3/14/2024 | |
1.2.4 | 191 | 2/10/2024 | |
1.2.3 | 210 | 1/29/2024 | |
1.2.2 | 201 | 1/12/2024 | |
1.2.1 | 319 | 10/22/2023 | |
1.2.0 | 267 | 10/11/2023 | |
1.1.9 | 246 | 10/9/2023 | |
1.1.8 | 219 | 9/14/2023 | |
1.1.7 | 226 | 9/10/2023 | |
1.1.6 | 315 | 8/22/2023 | |
1.1.5 | 263 | 8/22/2023 | |
1.1.4 | 269 | 8/22/2023 | |
1.1.3 | 275 | 8/22/2023 | |
1.1.2 | 184 | 8/22/2023 | |
1.1.2-beta | 186 | 8/22/2023 | |
1.1.1 | 171 | 8/19/2023 | |
1.1.0 | 146 | 8/18/2023 | |
1.0.0 | 194 | 7/28/2023 |
# 1.3.3
September 14, 2024
* Improvements for Dart SDK - maybe not functional for everyone but works for one client