Skip to content

OpenAPI_Operation

mattpolzin edited this page Dec 28, 2020 · 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:)

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:)

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:)

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

var tags: [String]?

summary

var summary: String?

description

var description: String?

externalDocs

var externalDocs: OpenAPI.ExternalDocumentation?

operationId

var operationId: String?

parameters

var parameters: Parameter.Array

requestBody

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

responses

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

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.

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.

var deprecated: Bool

By default, deprecated is false.

security

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

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.

var servers: [OpenAPI.Server]?

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

vendorExtensions

Dictionary of vendor extensions.

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.

var responseOutcomes: [ResponseOutcome]

Returns

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

Methods

_dereferenced(in:following:)

Create a DereferencedOperation if all references in the operation can be found in the given Components Object.

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

Throws

ReferenceError.cannotLookupRemoteReference or ReferenceError.missingOnLookup(name:​key:​) depending on whether an unresolvable reference points to another file or just points to a component in the same file that cannot be found in the Components Object.

encode(to:)

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