Module: TRMNL::API::Contracts

Defined in:
lib/trmnl/api/contracts/model.rb,
lib/trmnl/api/contracts/setup.rb,
lib/trmnl/api/contracts/display.rb,
lib/trmnl/api/contracts/palette.rb,
lib/trmnl/api/contracts/category.rb,
lib/trmnl/api/contracts/firmware.rb,
lib/trmnl/api/contracts/ip_address.rb,
lib/trmnl/api/contracts/current_screen.rb

Constant Summary collapse

Model =

Validates API response.

Dry::Schema.JSON do
  required(:data).array(:hash) do
    required(:name).filled :string
    required(:label).filled :string
    required(:description).filled :string
    required(:kind).filled :string
    required(:colors).filled :integer
    required(:bit_depth).filled :integer
    required(:scale_factor) { filled? > int? | float? }
    required(:rotation).filled :integer
    required(:mime_type).filled :string
    required(:width).filled :integer
    required(:height).filled :integer
    required(:offset_x).filled :integer
    required(:offset_y).filled :integer
    required(:palette_ids).array(:string)
    optional(:css).hash do
      optional(:classes).hash do
        required(:device).filled :string
        required(:size).filled :string
      end

      optional(:variables).filled(Types::CSSVariables)
    end
  end
end
Setup =

Validates API response.

Dry::Schema.JSON do
  required(:api_key).filled :string
  required(:friendly_id).filled :string
  required(:image_url).filled :string
  required(:message).filled :string
end
Display =

Validates API response.

Dry::Schema.JSON do
  required(:filename).filled :string
  required(:firmware_url).filled :string
  required(:image_url).filled :string
  required(:refresh_rate).filled :integer
  required(:reset_firmware).filled :bool
  required(:special_function).filled :string
  required(:update_firmware).filled :bool
end
Palette =

Validates API response.

Dry::Schema.JSON do
  required(:data).array(:hash) do
    required(:id).filled :string
    required(:name).filled :string
    optional(:grays).maybe :integer
    optional(:colors).maybe(:array)
    optional(:framework_class).maybe :string
  end
end
Category =

Validates API response.

Dry::Schema.JSON { required(:data).array(:string) }
Firmware =

Validates API response.

Dry::Schema.JSON do
  required(:url).filled :string
  required(:version).filled :string
end
IPAddress =

Validates API response.

Dry::Schema.JSON do
  required(:data).hash do
    required(:ipv4).array(Types::IPAddress)
    required(:ipv6).array(Types::IPAddress)
  end
end
CurrentScreen =

Validates API response.

Dry::Schema.JSON do
  required(:refresh_rate).filled :integer
  required(:image_url).filled :string
  required(:filename).filled :string
end