Skip to content

feat: support Platform API 1.113 features (SSH keys) - #686

Merged
cristianrcv merged 3 commits into
masterfrom
feat/NOTASK-api-1.113-catch-up
Oct 7, 2026
Merged

cristianrcv merged 3 commits into
masterfrom
feat/NOTASK-api-1.113-catch-up

Conversation

@cristianrcv

@cristianrcv cristianrcv commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Exposes the SSH public key endpoints introduced in Platform API 1.113.0.

This is one PR in a stack that catches tw up with Platform API 1.230.0, one PR per API version that introduced the features, then one PR per topic for agents and actions. Each PR adds the items whose API elements all exist in that version.

Changes

  • feat(ssh-keys): add ssh-keys list, add, view and delete commands (075f501)
  • docs: document the ssh-keys commands added for API 1.113 (5247a4b)
  • build(native): register reflection metadata for the ssh-keys commands (349ef6b)

Verification

  • ./gradlew test: 828 tests, 0 failures. Every new command and option has MockServer tests that assert the request (method, path, query, body) and the output.
  • Each item was checked against the OpenAPI spec of this version and the previous one (tower-sdk-gencode history) to confirm where it first appears.
  • CI runs the full suite against the native binary on Linux, macOS and Windows.

🤖 Generated with Claude Code

@educalleja educalleja left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usage of the new commands

This PR adds one new command group, tw ssh-keys, with four subcommands. The keys belong to your user account, so none of these commands take a --workspace or --organization option.

tw ssh-keys

A new top-level command, "Manage your SSH public keys", registered in Tower.java.

1. tw ssh-keys list

Lists your SSH public keys. It takes no options.

  • The output is a table with ID, Name, Created and Last used, sorted by ID.
  • With no keys, it prints "No SSH keys found".

2. tw ssh-keys add

Adds an SSH public key.

Option Description
-n, --name Key name (required). Must be unique. Names can use letters, numbers, hyphens and underscores
-k, --key Path to the public key file, such as ~/.ssh/id_ed25519.pub (required). - reads the key from stdin. Create a key pair with ssh-keygen
  • Leading and trailing whitespace is stripped from the key before it's sent.
  • The output is the new key's ID and name.

3. tw ssh-keys view

Shows the details of one key.

Option Description
-i, --id / -n, --name The key to show, by numeric ID or by name. You must give exactly one
  • The output shows ID, Name, Public key, Created and Last used.

4. tw ssh-keys delete

Deletes an SSH public key.

Option Description
-i, --id / -n, --name The key to delete, by numeric ID or by name. You must give exactly one
  • The output is the ID and name of the deleted key.

For view and delete, a name that doesn't match any key fails with "Unknown SSH key '<name>'".

USAGE.md

The PR adds a new "SSH keys" subsection under "Personal access", just before "Access tokens":

tw ssh-keys add -n laptop -k ~/.ssh/id_ed25519.pub

🤖 Generated with Claude Code

@cristianrcv
cristianrcv removed this pull request from stack #693 October 5, 2026 16:19
@cristianrcv
cristianrcv added this pull request to stack #705 October 5, 2026 16:20
@cristianrcv
cristianrcv force-pushed the feat/NOTASK-api-1.101-catch-up branch from ed484ab to 4148f96 Compare October 7, 2026 09:39
@cristianrcv
cristianrcv force-pushed the feat/NOTASK-api-1.113-catch-up branch from 349ef6b to 7fc52bb Compare October 7, 2026 09:39
@cristianrcv
cristianrcv removed this pull request from stack #705 October 7, 2026 13:26
@cristianrcv
cristianrcv changed the base branch from feat/NOTASK-api-1.101-catch-up to master October 7, 2026 13:31
cristianrcv and others added 3 commits October 7, 2026 16:35
Platform API 1.113 added user-scoped SSH public keys (/ssh-keys), used
for SSH access to Studios, but tw had no way to manage them. The new
'tw ssh-keys' group lists, adds (from a .pub file or stdin), views and
deletes the authenticated user's keys, looking them up by id or name.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An SSH keys section with an example. SSH keys belong to the user account, so the commands take no workspace or organization option.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Entries for the ssh-keys commands and responses, taken from a full test run under the GraalVM tracing agent. Response classes register allDeclaredFields, since Jackson serializes every field for -o json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@cristianrcv
cristianrcv force-pushed the feat/NOTASK-api-1.113-catch-up branch from db960c5 to a6df9eb Compare October 7, 2026 14:35
@cristianrcv
cristianrcv merged commit cad07e4 into master Oct 7, 2026
10 checks passed
@cristianrcv
cristianrcv deleted the feat/NOTASK-api-1.113-catch-up branch October 8, 2026 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants