Module: GrapeOpenapi3

Defined in:
lib/grape_openapi3.rb,
lib/grape_openapi3/config.rb,
lib/grape_openapi3/railtie.rb,
lib/grape_openapi3/version.rb,
lib/grape_openapi3/document.rb,
lib/grape_openapi3/type_mapper.rb,
lib/grape_openapi3/path_normalizer.rb,
lib/grape_openapi3/readers/route_reader.rb,
lib/grape_openapi3/readers/entity_reader.rb,
lib/grape_openapi3/builders/operation_builder.rb,
lib/grape_openapi3/builders/parameter_builder.rb,
lib/generators/grape_openapi3/install_generator.rb,
lib/grape_openapi3/builders/operation_id_builder.rb

Defined Under Namespace

Modules: Builders, Readers Classes: Config, Document, Error, InstallGenerator, PathNormalizer, Railtie, TypeMapper

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.generate(app, info:, servers: [], security_schemes: {}, security: [], tags: []) ⇒ Hash

Generate an OpenAPI 3.0 document from a Grape API class.

Reads routes, params, and Grape::Entity response classes directly —no grape-swagger, no Swagger 2.0 conversion step.

Examples:

Minimal

GrapeOpenapi3.generate(V2::ApiGrape,
  info: { title: "My API", version: "v2" },
  servers: [{ url: "https://api.example.com/api" }]
)

With auth

GrapeOpenapi3.generate(V2::ApiGrape,
  info: { title: "My API", version: "v2" },
  servers: [{ url: "#{request.base_url}/api" }],
  security_schemes: {
    "Bearer" => { type: "http", scheme: "bearer", bearerFormat: "JWT" }
  },
  security: [{ "Bearer" => [] }]
)

Parameters:

  • app (Class)

    Grape API class (e.g. V2::ApiGrape)

  • info (Hash)

    OpenAPI info: { title:, version:, description: }

  • servers (Array<Hash>) (defaults to: [])
    { url: “api.example.com/api” }
  • security_schemes (Hash) (defaults to: {})

    e.g. { “Bearer” => { type: “http”, scheme: “bearer”, bearerFormat: “JWT” } }

  • security (Array<Hash>) (defaults to: [])

    global security: [{ “Bearer” => [] }]

  • tags (Array<Hash>) (defaults to: [])

    manual tag list: [{ name: “lessons”, description: “…” }]

Returns:

  • (Hash)

    OpenAPI 3.0 document (string keys)



47
48
49
50
51
52
53
54
55
56
# File 'lib/grape_openapi3.rb', line 47

def generate(app, info:, servers: [], security_schemes: {}, security: [], tags: [])
  config = Config.new(
    info:             info,
    servers:          servers,
    security_schemes: security_schemes,
    security:         security,
    tags:             tags,
  )
  Document.build(app, config)
end