From 965ba0013115a62059a0f81c1f486040457ada85 Mon Sep 17 00:00:00 2001 From: Taylor Meek Date: Tue, 2 Dec 2025 16:33:12 -0800 Subject: [PATCH 1/4] sc-35229: Aptible Managed AI --- lib/aptible/api/account.rb | 1 + lib/aptible/api/ai_token.rb | 23 +++++++++++++++++++++++ lib/aptible/api/resource.rb | 1 + 3 files changed, 25 insertions(+) create mode 100644 lib/aptible/api/ai_token.rb diff --git a/lib/aptible/api/account.rb b/lib/aptible/api/account.rb index f1b5477..0cfa641 100644 --- a/lib/aptible/api/account.rb +++ b/lib/aptible/api/account.rb @@ -5,6 +5,7 @@ module Api class Account < Resource belongs_to :stack + has_many :ai_tokens has_many :apps has_many :backups has_many :certificates diff --git a/lib/aptible/api/ai_token.rb b/lib/aptible/api/ai_token.rb new file mode 100644 index 0000000..96a7b64 --- /dev/null +++ b/lib/aptible/api/ai_token.rb @@ -0,0 +1,23 @@ +module Aptible + module Api + class AiToken < Resource + belongs_to :account + + field :id + field :name + field :created_at + field :updated_at + field :expires_at + field :last_used_at + field :revoked_at + + # Note: The 'token' field from API response is accessible via + # attributes['token'] to avoid conflict with aptible-resource's + # internal token handling (used for auth bearer token) + def api_key + attributes['token'] + end + end + end +end + diff --git a/lib/aptible/api/resource.rb b/lib/aptible/api/resource.rb index f4add09..54cd30c 100644 --- a/lib/aptible/api/resource.rb +++ b/lib/aptible/api/resource.rb @@ -15,6 +15,7 @@ def root_url end require 'aptible/api/account' +require 'aptible/api/ai_token' require 'aptible/api/ami' require 'aptible/api/ami_release' require 'aptible/api/app' From 1f777a211f424b2116eed665411012e76edd7c2a Mon Sep 17 00:00:00 2001 From: Taylor Meek Date: Fri, 12 Dec 2025 13:50:32 -0800 Subject: [PATCH 2/4] sc-35229: managed ai includes gateway_url in responses --- lib/aptible/api/ai_token.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/aptible/api/ai_token.rb b/lib/aptible/api/ai_token.rb index 96a7b64..477dd47 100644 --- a/lib/aptible/api/ai_token.rb +++ b/lib/aptible/api/ai_token.rb @@ -10,6 +10,7 @@ class AiToken < Resource field :expires_at field :last_used_at field :revoked_at + field :gateway_url # Note: The 'token' field from API response is accessible via # attributes['token'] to avoid conflict with aptible-resource's From 83267334ed1b1dcba559120fa40b75871d2cd547 Mon Sep 17 00:00:00 2001 From: Taylor Meek Date: Tue, 16 Dec 2025 15:23:47 -0800 Subject: [PATCH 3/4] sc-35229: user and actor for revoke and create --- lib/aptible/api/ai_token.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/aptible/api/ai_token.rb b/lib/aptible/api/ai_token.rb index 477dd47..9ad5d8e 100644 --- a/lib/aptible/api/ai_token.rb +++ b/lib/aptible/api/ai_token.rb @@ -11,6 +11,22 @@ class AiToken < Resource field :last_used_at field :revoked_at field :gateway_url + # User (on whose behalf) details + field :created_by_user_id + field :created_by_user_name + field :created_by_user_email + # Actor (who performed) details + field :created_by_actor_id + field :created_by_actor_name + field :created_by_actor_email + # Revoked by user details + field :revoked_by_user_id + field :revoked_by_user_name + field :revoked_by_user_email + # Revoked by actor details + field :revoked_by_actor_id + field :revoked_by_actor_name + field :revoked_by_actor_email # Note: The 'token' field from API response is accessible via # attributes['token'] to avoid conflict with aptible-resource's From 0f71733bf7318c4a565e462658482aed678dabb1 Mon Sep 17 00:00:00 2001 From: Taylor Meek Date: Tue, 16 Dec 2025 15:26:16 -0800 Subject: [PATCH 4/4] sc-35229: trailing line --- lib/aptible/api/ai_token.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/aptible/api/ai_token.rb b/lib/aptible/api/ai_token.rb index 9ad5d8e..b9bc564 100644 --- a/lib/aptible/api/ai_token.rb +++ b/lib/aptible/api/ai_token.rb @@ -37,4 +37,3 @@ def api_key end end end -