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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions