um `User` ou um `BannedUser` # de acordo com o valor de `banned` paths: "/users/{id}": get: # ... responses: "200": content: application/json: schema: oneOf: - $ref: "#/components/schemas/User" - $ref: "#/components/schemas/BannedUser" # Opcional: discriminator: property_name: banned mapping: true: "#/components/schemas/BannedUser" false: "#/components/schemas/User" 32
data is valid (MyAppWeb.UserControllerTest) test/my_app_web/controllers/user_controller_test.exs:53 Value does not conform to schema UserResponse: Missing field: name at /user/name Missing field: email at /user/email %{"user" => %{"birthday" => "1964-07-12", "id" => 15, "inserted_at" => "2024-07-27T23:14:09Z", "updated_at" => "2024-07-27T23:14:09Z"}} code: |> assert_schema("UserResponse", api_spec) stacktrace: test/my_app_web/controllers/user_controller_test.exs:62: (test) 52
import OpenApiSpex.TestAssertions test "all examples are valid" do api_spec = MyAppWeb.ApiSpec.spec() for {name, schema} <- api_spec.components.schemas do example = OpenApiSpex.Schema.example(schema) assert_schema(example, name, api_spec) end end end 55
OpenApiSpex.Plug.SwaggerUI # Atualiza `conn.params` e `conn.body_params` de acordo com a spec OpenApiSpex.Plug.Cast # Responde com `422` caso a requisição seja inválida OpenApiSpex.Plug.Validate OpenApiSpex.Plug.CastAndValidate 62
require "remote" Remote.configure do |config| config.access_token = ENV["ACCESS_TOKEN"] end countries = Remote::CountriesApi.new response = countries.get_index_holiday("", "BRA", "2024") response.data.last(5).each do |holiday| puts "* #{holiday.observed_day} - #{holiday.name}" end # * 2024-10-12 - Our Lady of Aparecida (Nossa Senhora Aparecida) # * 2024-11-02 - Day of the Dead (Dia de Finados) # * 2024-11-15 - Proclamation of the Republic (Proclamação da República) # * 2024-11-20 - Black Awareness Day (Dia da Consciência Negra) # * 2024-12-25 - Christmas Day (Natal) 79
alias RemoteAPI.Api.Countries alias RemoteAPI.Connection token = System.get_env("ACCESS_TOKEN") conn = Connection.new with {:ok, %{data: data}} <- Countries.get_index_holiday(conn, "Bearer #{token}", "BRA", "2024"), holidays <- Enum.take(data, -5) do for holiday <- holidays do IO.puts("* #{holiday.observed_day} - #{holiday.name}") end end # * 2024-10-12 - Our Lady of Aparecida (Nossa Senhora Aparecida) # * 2024-11-02 - Day of the Dead (Dia de Finados) # * 2024-11-15 - Proclamation of the Republic (Proclamação da República) # * 2024-11-20 - Black Awareness Day (Dia da Consciência Negra) # * 2024-12-25 - Christmas Day (Natal) 81