···203203 }
204204 ["repo"] = new StringType {
205205 type = "string"
206206- description =
207207- "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo."
206206+ description = "A git repository URL to clone into the sandbox, e.g. a GitHub/Tangled repo."
208207 format = "uri"
209208 }
210209 ["vcpus"] = new IntegerType {
···239238 }
240239 ["value"] = new StringType {
241240 type = "string"
242242- description = "The value of the secret. This will be encrypted at rest and redacted in any API responses."
241241+ description =
242242+ "The value of the secret. This will be encrypted at rest and redacted in any API responses."
243243 }
244244 }
245245 }
···253253 }
254254 ["value"] = new StringType {
255255 type = "string"
256256- description = "The value of the variable. This will be visible in API responses and should not contain sensitive information."
256256+ description =
257257+ "The value of the variable. This will be visible in API responses and should not contain sensitive information."
257258 }
258259 }
259260 description = "A variable to add to the sandbox"
···296297 description =
297298 "The mount path within the sandbox where the volume will be attached, e.g. '/data', '/logs', etc."
298299 }
299299- ["readOnly"] = new BooleanType {
300300+ ["readOnly"] = new BooleanType {
300301 type = "boolean"
301302 description = "Whether the volume should be mounted as read-only"
302302- }
303303+ }
303304 }
304305 description = "A volume to add to the sandbox"
305306 }
···307308 type = "array"
308309 items = new Union {
309310 type = "union"
310310- refs = List(
311311- "#sandboxDetailsPref",
312312- "#secretPref",
313313- "#variablePref",
314314- "#filePref",
315315- "#volumePref"
316316- )
311311+ refs =
312312+ List(
313313+ "#sandboxDetailsPref",
314314+ "#secretPref",
315315+ "#variablePref",
316316+ "#filePref",
317317+ "#volumePref",
318318+ )
317319 }
318320 }
319321 ["sshKeysView"] = new ObjectType {
···343345 }
344346 }
345347 }
346346- ["tailscaleTokenView"] = new ObjectType {
348348+ ["tailscaleAuthKeyView"] = new ObjectType {
347349 type = "object"
348350 properties {
349351 ["id"] = new StringType {
350352 type = "string"
351351- description = "Unique identifier of the Tailscale token."
353353+ description = "Unique identifier of the Tailscale Auth Key."
352354 }
353353- ["token"] = new StringType {
355355+ ["authKey"] = new StringType {
354356 type = "string"
355355- description = "The Tailscale auth token (redacted in API responses)"
357357+ description = "The Tailscale auth key (redacted in API responses)"
358358+ }
359359+ ["redacted"] = new StringType {
360360+ type = "string"
361361+ description = "The redacted Auth Key."
356362 }
357363 ["createdAt"] = new StringType {
358364 type = "string"
359359- description = "The timestamp when the Tailscale token was created."
365365+ description = "The timestamp when the Tailscale Auth Key was created."
360366 format = "datetime"
361367 }
362368 ["updatedAt"] = new StringType {
363369 type = "string"
364364- description = "The timestamp when the Tailscale token was last updated."
370370+ description = "The timestamp when the Tailscale Auth Key was last updated."
365371 format = "datetime"
366372 }
367373 }
···403409 }
404410 }
405411}
406406-
···11+CREATE TABLE "tailscale_auth_keys" (
22+ "id" text PRIMARY KEY DEFAULT xata_id() NOT NULL,
33+ "sandbox_id" text NOT NULL,
44+ "auth_key" text NOT NULL,
55+ "redacted" text NOT NULL,
66+ "created_at" timestamp DEFAULT now() NOT NULL
77+);
88+--> statement-breakpoint
99+DROP TABLE "tailscale_tokens" CASCADE;--> statement-breakpoint
1010+ALTER TABLE "tailscale_auth_keys" ADD CONSTRAINT "tailscale_auth_keys_sandbox_id_sandboxes_id_fk" FOREIGN KEY ("sandbox_id") REFERENCES "public"."sandboxes"("id") ON DELETE no action ON UPDATE no action;