Packages
open_api_spex
3.19.0
3.22.3
3.22.2
3.22.1
3.22.0
3.21.5
3.21.4
3.21.3
3.21.2
3.21.1
3.21.0
3.20.1
3.20.0
3.19.1
3.19.0
3.18.3
3.18.2
3.18.1
3.18.0
3.17.3
3.17.2
3.17.1
3.17.0
3.16.4
3.16.3
3.16.2
3.16.1
3.16.0
3.15.0
3.14.0
3.13.0
3.12.0
3.11.0
3.10.0
3.9.0
3.8.0
3.7.0
3.6.0
3.5.2
3.5.1
3.5.0
3.4.0
3.3.0
3.2.1
3.2.0
3.1.0
3.0.0
2.3.1
2.3.0
2.2.0
2.1.1
2.1.0
2.0.0
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
Leverage Open Api Specification 3 (swagger) to document, test, validate and explore your Plug and Phoenix APIs.
Current section
Files
Jump to
Current section
Files
lib/open_api_spex/response.ex
defmodule OpenApiSpex.Response do
@moduledoc """
Defines the `OpenApiSpex.Response.t` type.
"""
alias OpenApiSpex.{Components, Header, Link, MediaType, Reference, Response}
@enforce_keys :description
defstruct [
:description,
:headers,
:content,
:links,
:extensions
]
@typedoc """
[Response Object](https://swagger.io/specification/#responseObject)
Describes a single response from an API Operation, including design-time, static links to operations based on the response.
"""
@type t :: %__MODULE__{
description: String.t(),
headers: %{String.t() => Header.t() | Reference.t()} | nil,
content: %{String.t() => MediaType.t()} | nil,
links: %{String.t() => Link.t() | Reference.t()} | nil,
extensions: %{String.t() => any()} | nil
}
@doc """
Resolve a `Reference` to the `Response` it refers to.
## Examples
iex> alias OpenApiSpex.{Response, Reference}
...> responses = %{"aresponse" => %Response{description: "Some response"}}
...> Response.resolve_response(%Reference{"$ref": "#/components/responses/aresponse"}, responses)
%OpenApiSpex.Response{description: "Some response"}
"""
@spec resolve_response(Reference.t(), Components.responses_map()) :: Response.t() | nil
def resolve_response(%Response{} = response, _responses), do: response
def resolve_response(%Reference{"$ref": "#/components/responses/" <> name}, responses),
do: responses[name]
end