module Scorpio::OpenAPI::V3::Operation

Describes a single API operation on a path.

github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#operationObject

Public Instance Methods

request_schema(media_type: self.request_media_type) click to toggle source

@return [JSI::Schema]

# File lib/scorpio/openapi/operation.rb, line 209
def request_schema(media_type: self.request_media_type)
  # TODO typechecking on requestBody & children
  schema_object = requestBody &&
    requestBody['content'] &&
    requestBody['content'][media_type] &&
    requestBody['content'][media_type]['schema']
  schema_object ? JSI::Schema.from_object(schema_object) : nil
end
request_schemas() click to toggle source

@return [Array<JSI::Schema>]

# File lib/scorpio/openapi/operation.rb, line 219
def request_schemas
  if requestBody && requestBody['content']
    # oamt is for Scorpio::OpenAPI::V3::MediaType
    oamts = requestBody['content'].values.select { |oamt| oamt.key?('schema') }
    oamts.map { |oamt| JSI::Schema.from_object(oamt['schema']) }
  else
    []
  end
end
response_schema(status: , media_type: ) click to toggle source

@return [JSI::Schema]

# File lib/scorpio/openapi/operation.rb, line 230
def response_schema(status: , media_type: )
  oa_response = self.oa_response(status: status)
  oa_media_types = oa_response ? oa_response['content'] : nil # Scorpio::OpenAPI::V3::MediaTypes
  oa_media_type = oa_media_types ? oa_media_types[media_type] : nil # Scorpio::OpenAPI::V3::MediaType
  oa_schema = oa_media_type ? oa_media_type['schema'] : nil # Scorpio::OpenAPI::V3::Schema
  oa_schema ? JSI::Schema.new(oa_schema) : nil
end