From b331402854f31ca9811d5d418e7dca1ea4677f23 Mon Sep 17 00:00:00 2001 From: Brooke Kuhlmann Date: Thu, 11 Dec 2025 13:50:36 -0700 Subject: [PATCH] Added palette contract Necessary to validate the Palette API response. I've logged and issue against our Core project to improve upon this further since the API design is inconsistent so hoping this will improve soon. Milestone: minor --- lib/trmnl/api/container.rb | 1 + lib/trmnl/api/contracts/palette.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lib/trmnl/api/contracts/palette.rb diff --git a/lib/trmnl/api/container.rb b/lib/trmnl/api/container.rb index 43d2fea..3d13410 100644 --- a/lib/trmnl/api/container.rb +++ b/lib/trmnl/api/container.rb @@ -26,6 +26,7 @@ module TRMNL register :firmware, Contracts::Firmware register :ip_address, Contracts::IPAddress register :model, Contracts::Model + register :palette, Contracts::Palette register :setup, Contracts::Setup end diff --git a/lib/trmnl/api/contracts/palette.rb b/lib/trmnl/api/contracts/palette.rb new file mode 100644 index 0000000..376b975 --- /dev/null +++ b/lib/trmnl/api/contracts/palette.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "dry/schema" + +module TRMNL + module API + module Contracts + # Validates API response. + Palette = 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 + end + end +end