Skip to content

OpenAPI_Operation

mattpolzin edited this page Aug 21, 2023 · 12 revisions

OpenAPI.Operation

OpenAPI Spec "Operation Object"

public struct Operation: Equatable, CodableVendorExtendable 

See OpenAPI Operation Object.

Inheritance

CodableVendorExtendable, Decodable, Encodable, Equatable, LocallyDereferenceable

Initializers

init(tags:summary:description:externalDocs:operationId:parameters:requestBody:responses:callbacks:deprecated:security:servers:vendorExtensions:)

Create an Operation with a request body specified by an Either<JSONReference<OpenAPI.Request>, OpenAPI.Request>.

public init(
            tags: [String]? = nil,
            summary: String? = nil,
            description: String? = nil,
            externalDocs: OpenAPI.ExternalDocumentation? = nil,
            operationId: String? = nil,
            parameters: Parameter.Array = [],
            requestBody: Either<JSONReference<OpenAPI.Request>, OpenAPI.Request>,
            responses: OpenAPI.Response.Map,
            callbacks: OpenAPI.CallbacksMap = [:],
            deprecated: Bool = false,
            security: [OpenAPI.SecurityRequirement]? = nil,
            servers: [OpenAPI.Server]? = nil,
            vendorExtensions: [String: AnyCodable] = [:]
        ) 

init(tags:summary:description:externalDocs:operationId:parameters:requestBody:responses:callbacks:deprecated:security:servers:vendorExtensions:)

Create an Operation that optionally specifies a request body.

public init(
            tags: [String]? = nil,
            summary: String? = nil,
            description: String? = nil,
            externalDocs: OpenAPI.ExternalDocumentation? = nil,
            operationId: String? = nil,
            parameters: Parameter.Array = [],
            requestBody: OpenAPI.Request? = nil,
            responses: OpenAPI.Response.Map,
            callbacks: OpenAPI.CallbacksMap = [:],
            deprecated: Bool = false,
            security: [OpenAPI.SecurityRequirement]? = nil,
            servers: [OpenAPI.Server]? = nil,
            vendorExtensions: [String: AnyCodable] = [:]
        ) 

init(tags:summary:description:externalDocs:operationId:parameters:requestBody:responses:callbacks:deprecated:security:servers:vendorExtensions:)

Create an Operation with a variadic list of tags as the first argument.

public init(
            tags: String...,
            summary: String? = nil,
            description: String? = nil,
            externalDocs: OpenAPI.ExternalDocumentation? = nil,
            operationId: String? = nil,
            parameters: Parameter.Array = [],
            requestBody: OpenAPI.Request? = nil,
            responses: OpenAPI.Response.Map,
            callbacks: OpenAPI.CallbacksMap = [:],
            deprecated: Bool = false,
            security: [OpenAPI.SecurityRequirement]? = nil,
            servers: [OpenAPI.Server]? = nil,
            vendorExtensions: [String: AnyCodable] = [:]
        ) 

init(from:)

public init(from decoder: Decoder) throws 

Properties

tags

public var tags: [String]?

summary

public var summary: String?

description

public var description: String?

externalDocs

public var externalDocs: OpenAPI.ExternalDocumentation?

operationId

public var operationId: String?

parameters

Parameters that apply to this endpoint. See the parameters on the PathItem containing this endpoint as well for a complete picture of the parameters this endpoint supports.

public var parameters: Parameter.Array

A Parameter.Array is an array of "either parameter or reference to parameter" entries. You can use the lookup(_:) method on the OpenAPI.Components found at document.components to resolve one of these entries to an OpenAPI.Parameter.

requestBody

public var requestBody: Either<JSONReference<OpenAPI.Request>, OpenAPI.Request>?

responses

The possible responses for this operation, keyed by status code.

public var responses: OpenAPI.Response.Map

The status code keys can be integer values, ranges, or even the default which just refers to the response to expect where no other respones apply.

Because the map is ordered, you can access responses by either status code or index. Notice that the values of this dictionary are actually Either an inline Response or a reference to a Response that is defined elsewhere.

Example:

let firstResponse: (OpenAPI.Response.StatusCode, Either<JSONReference<OpenAPI.Response>, OpenAPI.Response>)
firstResponse = operation.responses[0]!

// literally documented as "200" status code:
let successResponse: Either<JSONReference<OpenAPI.Response>, OpenAPI.Response>
successResponse = operation.responses[status: 200]!

// documented as "2XX" status code:
let successResponse2: Either<JSONReference<OpenAPI.Response>, OpenAPI.Response>
successResponse2 = operation.responses[.range(.success)]!

If you want to access the response (assuming it is inlined) you need to grab it out of the Either.

Example:

let inlinedResponse = successResponse.responseValue

You can also look the response up in the Components. For convenience, you can ask to have the Either looked up and the result will be the Response regardless of whether the Response was inlined or found in the Components.

Example:

let foundResponse: OpenAPI.Response
foundResponse = document.components.lookup(successResponse)!

callbacks

A map of possible out-of band callbacks related to the parent operation.

public let callbacks: OpenAPI.CallbacksMap

The key is a unique identifier for the Callback Object. Each value in the map is a Callback Object that describes a request that may be initiated by the API provider and the expected responses.

deprecated

Indicates that the operation is deprecated or not.

public var deprecated: Bool

By default, deprecated is false.

security

If defined, overrides the security requirements in the root OpenAPI.Document security array.

public var security: [OpenAPI.SecurityRequirement]?

Each secutity requirement in this array is an alternative, only one of which must be met for the request to be authorized.

By contrast, all entries in an individual SecurityRequirement (which is itself a dictionary) must be met.

nil indicates this operation uses the security requirements defined at the root of the OpenAPI.Document.

servers

If defined, overrides the servers in the root of the OpenAPI.Document.

public var servers: [OpenAPI.Server]?

nil indicates the operation uses the servers defined at the root of the OpenAPI.Document.

vendorExtensions

Dictionary of vendor extensions.

public var vendorExtensions: [String: AnyCodable]

These should be of the form: [ "x-extensionKey": <anything>] where the values are anything codable.

responseOutcomes

Get all response outcomes for this operation.

public var responseOutcomes: [ResponseOutcome] 

Returns

An array of ResponseOutcomes with the status and the response for the status.

Methods

_dereferenced(in:following:dereferencedFromComponentNamed:)

An internal-use method that facilitates reference cycle detection by tracking past references followed in the course of dereferencing.

public func _dereferenced(
        in components: OpenAPI.Components,
        following references: Set<AnyHashable>,
        dereferencedFromComponentNamed name: String?
    ) throws -> DereferencedOperation 

For all external-use, see dereferenced(in:) (provided by the LocallyDereferenceable protocol). All types that provide a _dereferenced(in:following:) implementation have a dereferenced(in:) implementation for free.

encode(to:)

public func encode(to encoder: Encoder) throws 
Types
Protocols
Global Functions
Extensions
Clone this wiki locally