Skip to content

Support for OpenAPI v3.1.0 #1268

@LeoBorai

Description

@LeoBorai

Hi team at Oxide Computer!

Thanks for such a cool library. I'm using progenitor to create API bindings for an OpenAPI compliant
server builded using utoipa to generate the OpenAPI spec from Rust
source code on build time.

When I attempt to generate API bindings with progenitor I get an error complaining about the OpenAPI
version if it is 3.1.0.

error: generation error for assets/openapi.json: unexpected or unhandled format in the OpenAPI document invalid version: 3.1.0
 --> src/client/src/lib.rs:3:15
  |
3 | generate_api!("assets/openapi.json");
  |               ^^^^^^^^^^^^^^^^^^^^^

error: could not compile `ipchat-client` (lib) due to 1 previous error

Here is the OpenAPI spec for reference:

OpenAPI Spec Example
{
  "openapi": "3.1.0",
  "info": {
    "title": "IPChat API",
    "description": "API for IPChat application",
    "license": { "name": "MIT", "identifier": "MIT" },
    "version": "0.0.0"
  },
  "paths": {
    "api/v0/node": {
      "get": {
        "tags": ["node"],
        "operationId": "nodeInfo",
        "responses": {
          "200": { "description": "Info retrieved successfully" },
          "500": { "description": "Internal server error" }
        }
      }
    },
    "api/v0/user": {
      "get": {
        "tags": ["user"],
        "operationId": "userRegister",
        "responses": {
          "201": { "description": "User registered successfully" },
          "500": { "description": "Internal server error" }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "NodeObject": {
        "type": "object",
        "required": ["installPath", "clientIp", "localIp", "webSocketAddr"],
        "properties": {
          "clientIp": {
            "type": "string",
            "description": "Client's IP Address"
          },
          "installPath": {
            "type": "string",
            "description": "Installation path of the node"
          },
          "localIp": {
            "type": "string",
            "description": "Node's Local IP Address"
          },
          "webSocketAddr": {
            "type": "string",
            "description": "WebSocket Address"
          }
        }
      }
    }
  },
  "tags": [
    { "name": "node", "description": "Node Management" },
    { "name": "user", "description": "User Management" }
  ]
}

The code is open source so it can be checked out here: https://github.com/LeoBorai/ipchat

Thanks in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions