Skip to content

feat(dashboard-api): add internal team creation - #2824

Merged
matthewlouisbrockman merged 6 commits into
mainfrom
admin-create-team-in-dashboard-eng-4143
May 26, 2026
Merged

matthewlouisbrockman merged 6 commits into
mainfrom
admin-create-team-in-dashboard-eng-4143

Conversation

@matthewlouisbrockman

@matthewlouisbrockman matthewlouisbrockman commented May 26, 2026 •

Copy link
Copy Markdown
Contributor

Adds an endpoint for internally calling create team using the internal sending token.

@linear-code

linear-code Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

ENG-4143

@cla-bot cla-bot Bot added the cla-signed label May 26, 2026
@cursor

cursor Bot commented May 26, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Creates teams and triggers billing provisioning behind admin auth; failures roll back DB rows but misconfiguration or abuse of the admin token could create orphaned billing or unwanted teams.

Overview
Adds an admin-only POST /admin/teams/bootstrap endpoint (protected by X-Admin-Token) so internal callers can create a team with an explicit name and billing/contact email, without tying it to a user membership.

The handler trims the name, validates required fields, then runs new bootstrapTeam logic: persist a base-tier team, trigger team billing provisioning (ReasonAdditionalTeam, no creator user), and return id/slug like other team-resolve responses. If provisioning fails, the team row is deleted and clients can receive 502 for upstream errors (new shared 502 response in the OpenAPI spec).

Generated API types/routes and handler tests cover happy path, rollback on provisioning failure, and missing-field validation.

Reviewed by Cursor Bugbot for commit a3691d0. Bugbot is set up for automated code reviews on this repo. Configure here.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

@codecov

codecov Bot commented May 26, 2026 •

Copy link
Copy Markdown

❌ 7 Tests Failed:

Tests completed Failed Passed Skipped
2660 7 2653 7
View the full list of 7 ❄️ flaky test(s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestSandboxListPaginationRunningLargerLimit

Flake rate in main: 44.08% (Passed 623 times, Failed 491 times)

Stack Traces | 32.6s run time
=== RUN   TestSandboxListPaginationRunningLargerLimit
    sandbox_list_test.go:327: Created sandbox 1/12: iq2n408tv2i62fob9argk
    sandbox_list_test.go:327: Created sandbox 2/12: ilhwsl3eismja6ibyzdnb
    sandbox_list_test.go:327: Created sandbox 3/12: ikaxlq65j8a7gz6ela4wr
    sandbox_list_test.go:327: Created sandbox 4/12: ivv4f6jcv2wo6ntut0xiq
    sandbox_list_test.go:327: Created sandbox 5/12: ikjhwcum2ma69wodkdh1y
    sandbox_list_test.go:327: Created sandbox 6/12: iu1jlt4mk3c7voc3jqbuc
    sandbox_list_test.go:327: Created sandbox 7/12: i0crgfoxrlc1bpbqk9aj2
    sandbox_list_test.go:327: Created sandbox 8/12: iex3hdolsbsn3msehaua9
    sandbox_list_test.go:327: Created sandbox 9/12: igkofle2fynb0rnmh28xa
    sandbox_list_test.go:327: Created sandbox 10/12: iwmt0y30l5wqklrvbtgh5
    sandbox_list_test.go:327: Created sandbox 11/12: ihn73rbivbn95oelvdcqi
    sandbox_list_test.go:327: Created sandbox 12/12: idbqca3f1qaqmoylispq2
--- FAIL: TestSandboxListPaginationRunningLargerLimit (32.63s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list

Flake rate in main: 44.19% (Passed 620 times, Failed 491 times)

Stack Traces | 0.02s run time
=== RUN   TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list
=== PAUSE TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list
=== CONT  TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list
    sandbox_list_test.go:339: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:339
        	Error:      	"[{0xf7e6afe120 6532622b 2 1982 2026-05-26 21:06:27.493935452 +0000 UTC 0.6.1 512 0xf7e6b82060 idbqca3f1qaqmoylispq2 2026-05-26 21:05:57.493935452 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c258} {0xf7e6afe170 6532622b 2 1982 2026-05-26 21:06:25.947470502 +0000 UTC 0.6.1 512 0xf7e6b820b8 ihn73rbivbn95oelvdcqi 2026-05-26 21:05:55.947470502 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c288} {0xf7e6afe1c0 6532622b 2 1982 2026-05-26 21:06:25.047889677 +0000 UTC 0.6.1 512 0xf7e6b820c0 iwmt0y30l5wqklrvbtgh5 2026-05-26 21:05:55.047889677 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c2b8} {0xf7e6afe220 6532622b 2 1982 2026-05-26 21:06:17.047710733 +0000 UTC 0.6.1 512 0xf7e6b820c8 igkofle2fynb0rnmh28xa 2026-05-26 21:05:47.047710733 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c2e8} {0xf7e6afe580 6532622b 2 1982 2026-05-26 21:06:16.388767398 +0000 UTC 0.6.1 512 0xf7e6b820d0 iex3hdolsbsn3msehaua9 2026-05-26 21:05:46.388767398 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c390} {0xf7e6afe5c0 6532622b 2 1982 2026-05-26 21:06:15.615203991 +0000 UTC 0.6.1 512 0xf7e6b820e8 i0crgfoxrlc1bpbqk9aj2 2026-05-26 21:05:45.615203991 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c678} {0xf7e6afe610 6532622b 2 1982 2026-05-26 21:06:14.383813761 +0000 UTC 0.6.1 512 0xf7e6b820f8 iu1jlt4mk3c7voc3jqbuc 2026-05-26 21:05:44.383813761 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669c6a8} {0xf7e6afe670 6532622b 2 1982 2026-05-26 21:06:12.719776654 +0000 UTC 0.6.1 512 0xf7e6b82100 ikjhwcum2ma69wodkdh1y 2026-05-26 21:05:42.719776654 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669d488} {0xf7e6afe6d0 6532622b 2 1982 2026-05-26 21:06:10.249210911 +0000 UTC 0.6.1 512 0xf7e6b82158 ivv4f6jcv2wo6ntut0xiq 2026-05-26 21:05:40.249210911 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669d4d0} {0xf7e6afea20 6532622b 2 1982 2026-05-26 21:06:01.323917216 +0000 UTC 0.6.1 512 0xf7e6b82180 ikaxlq65j8a7gz6ela4wr 2026-05-26 21:05:31.323917216 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669d500} {0xf7e6afea70 6532622b 2 1982 2026-05-26 21:05:59.669273478 +0000 UTC 0.6.1 512 0xf7e6b82188 ilhwsl3eismja6ibyzdnb 2026-05-26 21:05:29.669273478 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e669d530}]" should have 12 item(s), but has 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list
--- FAIL: TestSandboxListPaginationRunningLargerLimit/check_all_sandboxes_list (0.02s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestSandboxListPaginationRunningLargerLimit/check_paginated_list

Flake rate in main: 44.19% (Passed 620 times, Failed 491 times)

Stack Traces | 0.1s run time
=== RUN   TestSandboxListPaginationRunningLargerLimit/check_paginated_list
=== PAUSE TestSandboxListPaginationRunningLargerLimit/check_paginated_list
=== CONT  TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:368: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:368
        	Error:      	Not equal: 
        	            	expected: 12
        	            	actual  : 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:368: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:368
        	Error:      	Not equal: 
        	            	expected: 12
        	            	actual  : 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:368: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:368
        	Error:      	Not equal: 
        	            	expected: 12
        	            	actual  : 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:368: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:368
        	Error:      	Not equal: 
        	            	expected: 12
        	            	actual  : 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:368: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:368
        	Error:      	Not equal: 
        	            	expected: 12
        	            	actual  : 11
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
    sandbox_list_test.go:362: 
        	Error Trace:	.../api/sandboxes/sandbox_list_test.go:362
        	Error:      	"[{0xf7e6c0bb60 6532622b 2 1982 2026-05-26 21:05:59.669273478 +0000 UTC 0.6.1 512 0xf7e68020d8 ilhwsl3eismja6ibyzdnb 2026-05-26 21:05:29.669273478 +0000 UTC running 2j6ly824owf4awgai1xo 0xf7e66a6558}]" should have 2 item(s), but has 1
        	Test:       	TestSandboxListPaginationRunningLargerLimit/check_paginated_list
--- FAIL: TestSandboxListPaginationRunningLargerLimit/check_paginated_list (0.10s)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxMemoryIntegrity

Flake rate in main: 58.94% (Passed 625 times, Failed 897 times)

Stack Traces | 67.4s run time
=== RUN   TestSandboxMemoryIntegrity
=== PAUSE TestSandboxMemoryIntegrity
=== CONT  TestSandboxMemoryIntegrity
    sandbox_memory_integrity_test.go:27: Build completed successfully
--- FAIL: TestSandboxMemoryIntegrity (67.38s)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxMemoryIntegrity/tmpfs_hash

Flake rate in main: 59.08% (Passed 615 times, Failed 888 times)

Stack Traces | 103s run time
=== RUN   TestSandboxMemoryIntegrity/tmpfs_hash
=== PAUSE TestSandboxMemoryIntegrity/tmpfs_hash
=== CONT  TestSandboxMemoryIntegrity/tmpfs_hash
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{start:{pid:1260}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stdout:"Total memory: 985 MB\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stdout:"Used memory before tmpfs mount: 190 MB\nFree memory before tmpfs mount: 794 MB\nMemory to use in integrity test (80% of free, min 64MB): 635 MB\n"}}
Executing command bash in sandbox ikvu9efpuwc5habivq31u (user: root)
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"635+0 records in\n635+0 records out\n665845760 bytes (666 MB, 635 MiB) copied, 3.45063 s, 193 MB/s\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"C"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"o"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"a"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"d"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"b"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"e"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"i"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"g"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"i"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"e"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"d"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:":"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\""}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"dd"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"if=/dev/urandom"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"of=/mnt/testfile"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"bs=1M"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"count=635"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\""}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"U"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"s"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"e"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"r"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"i"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"e"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"("}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"s"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"e"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"c"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"o"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"d"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"s"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:")"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:": "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"0.00\n\tSystem time (seconds):"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"3.44"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\n\tPercent of CPU this job got: 99%\n\tElapsed (wall clock) time "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"(h:mm:ss or m:ss): 0:03.45\n\tAverage shared text size (kbytes): 0\n\tAverage unshared data size (kbytes): 0\n\tAverage stack size (kbytes): 0\n\tAverage total size (kbytes): 0\n\tMaximum resident set size (kbytes): 2700\n\tAverage resident set size (kbytes): 0\n\tMajor (requiring I/O) page faults: 3\n\tMinor (reclaiming a frame) page faults: 345\n\tVoluntary context switches: 4\n\tInvoluntary context switches: 42\n\tSwaps: 0\n\tFile system inputs: 176\n\tFile system outputs: 0\n\tSocket messages sent: 0\n\tSocket messages received: 0\n\tSignals delivered: 0\n\tPage size (bytes): 4096\n\tExit status: 0\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stdout:"Used memory after tmpfs mount and file fill: 831 MB\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
    sandbox_memory_integrity_test.go:70: Command [bash] completed successfully in sandbox ievqhco3a7hll9ad28i7l
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
    sandbox_memory_integrity_test.go:80: Command [bash] output: event:{start:{pid:1276}}
    sandbox_memory_integrity_test.go:80: Command [bash] output: event:{data:{stdout:"83a9585619bbef913c9e49b5b1bba42f92607195e87cb9d172a868e1ad2c42d3\n"}}
    sandbox_memory_integrity_test.go:80: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
    sandbox_memory_integrity_test.go:80: Command [bash] completed successfully in sandbox ievqhco3a7hll9ad28i7l
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
    sandbox_memory_integrity_test.go:80: Command [bash] output: event:{start:{pid:1279}}
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
Executing command bash in sandbox ievqhco3a7hll9ad28i7l (user: root)
    sandbox_memory_integrity_test.go:110: 
        	Error Trace:	.../tests/orchestrator/sandbox_memory_integrity_test.go:81
        	            				.../hostedtoolcache/go/1.26.3.../src/runtime/asm_amd64.s:1771
        	Error:      	Received unexpected error:
        	            	failed to execute command bash in sandbox ievqhco3a7hll9ad28i7l: unavailable: HTTP status 502 Bad Gateway
    sandbox_memory_integrity_test.go:110: 
        	Error Trace:	.../tests/orchestrator/sandbox_memory_integrity_test.go:78
        	            				.../tests/orchestrator/sandbox_memory_integrity_test.go:110
        	Error:      	Condition never satisfied
        	Test:       	TestSandboxMemoryIntegrity/tmpfs_hash
--- FAIL: TestSandboxMemoryIntegrity/tmpfs_hash (102.95s)
github.com/e2b-dev/infra/tests/integration/internal/tests/proxies::TestEnvdAccessTokenAutoResumeViaProxy

Flake rate in main: 44.49% (Passed 620 times, Failed 497 times)

Stack Traces | 10.6s run time
=== RUN   TestEnvdAccessTokenAutoResumeViaProxy
=== PAUSE TestEnvdAccessTokenAutoResumeViaProxy
=== CONT  TestEnvdAccessTokenAutoResumeViaProxy
    traffic_access_token_test.go:357: 
        	Error Trace:	.../tests/proxies/traffic_access_token_test.go:357
        	Error:      	Received unexpected error:
        	            	Get "http://localhost:3002/health": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
        	Test:       	TestEnvdAccessTokenAutoResumeViaProxy
--- FAIL: TestEnvdAccessTokenAutoResumeViaProxy (10.55s)
github.com/e2b-dev/infra/tests/integration/internal/tests/proxies::TestSandboxAutoResumeViaProxy

Flake rate in main: 45.17% (Passed 619 times, Failed 510 times)

Stack Traces | 12s run time
=== RUN   TestSandboxAutoResumeViaProxy
=== PAUSE TestSandboxAutoResumeViaProxy
=== CONT  TestSandboxAutoResumeViaProxy
Executing command ls in sandbox i5l5eqq0336v5fgc4npkw
    auto_resume_test.go:116: 
        	Error Trace:	.../tests/proxies/auto_resume_test.go:116
        	Error:      	Received unexpected error:
        	            	Get "http://localhost:3002": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
        	Test:       	TestSandboxAutoResumeViaProxy
--- FAIL: TestSandboxAutoResumeViaProxy (11.96s)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@matthewlouisbrockman
matthewlouisbrockman marked this pull request as ready for review May 26, 2026 18:29
@e2b-atlantis

e2b-atlantis Bot commented May 26, 2026

Copy link
Copy Markdown
Error: This repo is not allowlisted for Atlantis.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1520013cd3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread spec/openapi-dashboard.yml

@ben-fornefeld ben-fornefeld left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

check the naming again as discussed irl, otherwise lgtm

@matthewlouisbrockman
matthewlouisbrockman merged commit 375051b into main May 26, 2026
51 checks passed
@matthewlouisbrockman
matthewlouisbrockman deleted the admin-create-team-in-dashboard-eng-4143 branch May 26, 2026 21:21
charlie-e2b added a commit that referenced this pull request Jul 30, 2026
🤖 I have created a release *beep* *boop*
---


## 0.0.1 (2026-07-30)


### Features

* add workspace admin API foundations
([#3314](#3314))
([0f72030](0f72030))
* **api:** LD-gated ClickHouse read switcher
([#3061](#3061))
([29e74ca](29e74ca))
* **api:** soft-delete build layers in DB on user delete
([#3121](#3121))
([ee88776](ee88776))
* **auth:** support admin token team auth
([#2934](#2934))
([5496666](5496666))
* **auth:** verifiers on one axis, and a reusable authenticator
constructor ([#3423](#3423))
([923b99b](923b99b))
* **dashboard-api:** add internal admin route for deleting a user
([#2986](#2986))
([ecc1291](ecc1291))
* **dashboard-api:** add internal team creation
([#2824](#2824))
([375051b](375051b))
* **dashboard-api:** add OIDC admin user bootstrap endpoint
([#2841](#2841))
([6a7a59e](6a7a59e))
* **dashboard-api:** add Ory user profile provider and auth middleware
fix ([#2840](#2840))
([30d40d2](30d40d2))
* **dashboard-api:** add template tags handlers
([#2885](#2885))
([bf52a4b](bf52a4b))
* **dashboard-api:** batch member sync route, and unenumerate
project_type ([#3427](#3427))
([cc16acf](cc16acf))
* **dashboard-api:** expose auth profile admin routes
([#2743](#2743))
([b673a10](b673a10))
* **dashboard-api:** flag sandboxes past data retention
([#3102](#3102))
([9b162bf](9b162bf))
* **dashboard-api:** implement upsertProjectLimits
([#3438](#3438))
([ec1ed29](ec1ed29))
* **dashboard-api:** include build resources in /builds response
([#3009](#3009))
([bf49c32](bf49c32))
* **dashboard-api:** map Ory SSO organizations to E2B teams
([#3094](#3094))
([dbd098f](dbd098f))
* **dashboard-api:** populate Ory identity external_id on admin
bootstrap ([#3062](#3062))
([6c51232](6c51232))
* **dashboard-api:** project upsert, member sync and user purge
([#3442](#3442))
([f997c39](f997c39))
* **dashboard-api:** templates list pagination
([#2904](#2904))
([6882463](6882463))
* **db:** add project_limits, an override the limits owner can write
([#3429](#3429))
([021c2a4](021c2a4))
* improve templates list sorting
([#2983](#2983))
([51ad7ff](51ad7ff))
* **otel:** instrument auth service HTTP client with otelhttp
([#2722](#2722))
([69b085d](69b085d))
* per-team events TTL limit (tier + addons)
([#3181](#3181))
([f76b2cb](f76b2cb))


### Bug Fixes

* added api and orch
([#3454](#3454))
([fda5e45](fda5e45))
* **api:** copy auth/internal into api and dashboard-api image builds
([#3323](#3323))
([bda1fee](bda1fee))
* **api:** invalidate auth cache on API key deletion
([#3324](#3324))
([8b02910](8b02910))
* correct 3 CVES ([#3218](#3218))
([076823b](076823b))
* **dashboard-api:** avoid repeated Ory bootstrap provisioning
([#2940](#2940))
([da5ce59](da5ce59))
* **dashboard-api:** drop removed read-replica accessor in provisioning
tests ([#3340](#3340))
([6addc91](6addc91))
* **dashboard-api:** pass signup metadata to billing provisioning
([#2978](#2978))
([d0ea5b4](d0ea5b4))
* **dashboard-api:** set Ory external_id only after the bootstrap commit
([#3133](#3133))
([00ad04b](00ad04b))
* push client-proxy, dashboard-api, and docker-reverse-proxy image…
([#2953](#2953))
([1d930ee](1d930ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: e2b-release-please[bot] <298072688+e2b-release-please[bot]@users.noreply.github.com>
Co-authored-by: Charlie Wyse <charlie.wyse@e2b.dev>
charlie-e2b pushed a commit that referenced this pull request Jul 31, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.1.0](dashboard-api-v0.0.1...dashboard-api-v0.1.0)
(2026-07-31)


### Features

* add workspace admin API foundations
([#3314](#3314))
([0f72030](0f72030))
* **api:** LD-gated ClickHouse read switcher
([#3061](#3061))
([29e74ca](29e74ca))
* **api:** soft-delete build layers in DB on user delete
([#3121](#3121))
([ee88776](ee88776))
* **auth:** support admin token team auth
([#2934](#2934))
([5496666](5496666))
* **auth:** verifiers on one axis, and a reusable authenticator
constructor ([#3423](#3423))
([923b99b](923b99b))
* **dashboard-api:** add internal admin route for deleting a user
([#2986](#2986))
([ecc1291](ecc1291))
* **dashboard-api:** add internal team creation
([#2824](#2824))
([375051b](375051b))
* **dashboard-api:** add OIDC admin user bootstrap endpoint
([#2841](#2841))
([6a7a59e](6a7a59e))
* **dashboard-api:** add Ory user profile provider and auth middleware
fix ([#2840](#2840))
([30d40d2](30d40d2))
* **dashboard-api:** add template tags handlers
([#2885](#2885))
([bf52a4b](bf52a4b))
* **dashboard-api:** batch member sync route, and unenumerate
project_type ([#3427](#3427))
([cc16acf](cc16acf))
* **dashboard-api:** expose auth profile admin routes
([#2743](#2743))
([b673a10](b673a10))
* **dashboard-api:** flag sandboxes past data retention
([#3102](#3102))
([9b162bf](9b162bf))
* **dashboard-api:** implement upsertProjectLimits
([#3438](#3438))
([ec1ed29](ec1ed29))
* **dashboard-api:** include build resources in /builds response
([#3009](#3009))
([bf49c32](bf49c32))
* **dashboard-api:** map Ory SSO organizations to E2B teams
([#3094](#3094))
([dbd098f](dbd098f))
* **dashboard-api:** populate Ory identity external_id on admin
bootstrap ([#3062](#3062))
([6c51232](6c51232))
* **dashboard-api:** project upsert, member sync and user purge
([#3442](#3442))
([f997c39](f997c39))
* **dashboard-api:** templates list pagination
([#2904](#2904))
([6882463](6882463))
* **db:** add project_limits, an override the limits owner can write
([#3429](#3429))
([021c2a4](021c2a4))
* improve templates list sorting
([#2983](#2983))
([51ad7ff](51ad7ff))
* **otel:** instrument auth service HTTP client with otelhttp
([#2722](#2722))
([69b085d](69b085d))
* per-team events TTL limit (tier + addons)
([#3181](#3181))
([f76b2cb](f76b2cb))


### Bug Fixes

* added api and orch
([#3454](#3454))
([fda5e45](fda5e45))
* **api:** copy auth/internal into api and dashboard-api image builds
([#3323](#3323))
([bda1fee](bda1fee))
* **api:** invalidate auth cache on API key deletion
([#3324](#3324))
([8b02910](8b02910))
* correct 3 CVES ([#3218](#3218))
([076823b](076823b))
* creating whitespace to test publish
([#3476](#3476))
([5158cc9](5158cc9))
* **dashboard-api:** avoid repeated Ory bootstrap provisioning
([#2940](#2940))
([da5ce59](da5ce59))
* **dashboard-api:** drop removed read-replica accessor in provisioning
tests ([#3340](#3340))
([6addc91](6addc91))
* **dashboard-api:** pass signup metadata to billing provisioning
([#2978](#2978))
([d0ea5b4](d0ea5b4))
* **dashboard-api:** set Ory external_id only after the bootstrap commit
([#3133](#3133))
([00ad04b](00ad04b))
* push client-proxy, dashboard-api, and docker-reverse-proxy image…
([#2953](#2953))
([1d930ee](1d930ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: e2b-release-please[bot] <298072688+e2b-release-please[bot]@users.noreply.github.com>
jakubno pushed a commit that referenced this pull request Aug 3, 2026
🤖 I have created a release *beep* *boop*
---


## 0.0.1 (2026-07-30)


### Features

* add workspace admin API foundations
([#3314](#3314))
([0f72030](0f72030))
* **api:** LD-gated ClickHouse read switcher
([#3061](#3061))
([29e74ca](29e74ca))
* **api:** soft-delete build layers in DB on user delete
([#3121](#3121))
([ee88776](ee88776))
* **auth:** support admin token team auth
([#2934](#2934))
([5496666](5496666))
* **auth:** verifiers on one axis, and a reusable authenticator
constructor ([#3423](#3423))
([f68e713](f68e713))
* **dashboard-api:** add internal admin route for deleting a user
([#2986](#2986))
([ecc1291](ecc1291))
* **dashboard-api:** add internal team creation
([#2824](#2824))
([375051b](375051b))
* **dashboard-api:** add OIDC admin user bootstrap endpoint
([#2841](#2841))
([6a7a59e](6a7a59e))
* **dashboard-api:** add Ory user profile provider and auth middleware
fix ([#2840](#2840))
([30d40d2](30d40d2))
* **dashboard-api:** add template tags handlers
([#2885](#2885))
([bf52a4b](bf52a4b))
* **dashboard-api:** batch member sync route, and unenumerate
project_type ([#3427](#3427))
([6d8dc38](6d8dc38))
* **dashboard-api:** expose auth profile admin routes
([#2743](#2743))
([b673a10](b673a10))
* **dashboard-api:** flag sandboxes past data retention
([#3102](#3102))
([9b162bf](9b162bf))
* **dashboard-api:** implement upsertProjectLimits
([#3438](#3438))
([f4ee390](f4ee390))
* **dashboard-api:** include build resources in /builds response
([#3009](#3009))
([bf49c32](bf49c32))
* **dashboard-api:** map Ory SSO organizations to E2B teams
([#3094](#3094))
([dbd098f](dbd098f))
* **dashboard-api:** populate Ory identity external_id on admin
bootstrap ([#3062](#3062))
([6c51232](6c51232))
* **dashboard-api:** project upsert, member sync and user purge
([#3442](#3442))
([8c90702](8c90702))
* **dashboard-api:** templates list pagination
([#2904](#2904))
([6882463](6882463))
* **db:** add project_limits, an override the limits owner can write
([#3429](#3429))
([5ab6259](5ab6259))
* improve templates list sorting
([#2983](#2983))
([51ad7ff](51ad7ff))
* **otel:** instrument auth service HTTP client with otelhttp
([#2722](#2722))
([69b085d](69b085d))
* per-team events TTL limit (tier + addons)
([#3181](#3181))
([f76b2cb](f76b2cb))


### Bug Fixes

* added api and orch
([#3454](#3454))
([d56e0a8](d56e0a8))
* **api:** copy auth/internal into api and dashboard-api image builds
([#3323](#3323))
([bda1fee](bda1fee))
* **api:** invalidate auth cache on API key deletion
([#3324](#3324))
([8b02910](8b02910))
* correct 3 CVES ([#3218](#3218))
([076823b](076823b))
* **dashboard-api:** avoid repeated Ory bootstrap provisioning
([#2940](#2940))
([da5ce59](da5ce59))
* **dashboard-api:** drop removed read-replica accessor in provisioning
tests ([#3340](#3340))
([6addc91](6addc91))
* **dashboard-api:** pass signup metadata to billing provisioning
([#2978](#2978))
([d0ea5b4](d0ea5b4))
* **dashboard-api:** set Ory external_id only after the bootstrap commit
([#3133](#3133))
([00ad04b](00ad04b))
* push client-proxy, dashboard-api, and docker-reverse-proxy image…
([#2953](#2953))
([1d930ee](1d930ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: e2b-release-please[bot] <298072688+e2b-release-please[bot]@users.noreply.github.com>
Co-authored-by: Charlie Wyse <charlie.wyse@e2b.dev>
jakubno pushed a commit that referenced this pull request Aug 3, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.1.0](dashboard-api-v0.0.1...dashboard-api-v0.1.0)
(2026-07-31)


### Features

* add workspace admin API foundations
([#3314](#3314))
([0f72030](0f72030))
* **api:** LD-gated ClickHouse read switcher
([#3061](#3061))
([29e74ca](29e74ca))
* **api:** soft-delete build layers in DB on user delete
([#3121](#3121))
([ee88776](ee88776))
* **auth:** support admin token team auth
([#2934](#2934))
([5496666](5496666))
* **auth:** verifiers on one axis, and a reusable authenticator
constructor ([#3423](#3423))
([f68e713](f68e713))
* **dashboard-api:** add internal admin route for deleting a user
([#2986](#2986))
([ecc1291](ecc1291))
* **dashboard-api:** add internal team creation
([#2824](#2824))
([375051b](375051b))
* **dashboard-api:** add OIDC admin user bootstrap endpoint
([#2841](#2841))
([6a7a59e](6a7a59e))
* **dashboard-api:** add Ory user profile provider and auth middleware
fix ([#2840](#2840))
([30d40d2](30d40d2))
* **dashboard-api:** add template tags handlers
([#2885](#2885))
([bf52a4b](bf52a4b))
* **dashboard-api:** batch member sync route, and unenumerate
project_type ([#3427](#3427))
([6d8dc38](6d8dc38))
* **dashboard-api:** expose auth profile admin routes
([#2743](#2743))
([b673a10](b673a10))
* **dashboard-api:** flag sandboxes past data retention
([#3102](#3102))
([9b162bf](9b162bf))
* **dashboard-api:** implement upsertProjectLimits
([#3438](#3438))
([f4ee390](f4ee390))
* **dashboard-api:** include build resources in /builds response
([#3009](#3009))
([bf49c32](bf49c32))
* **dashboard-api:** map Ory SSO organizations to E2B teams
([#3094](#3094))
([dbd098f](dbd098f))
* **dashboard-api:** populate Ory identity external_id on admin
bootstrap ([#3062](#3062))
([6c51232](6c51232))
* **dashboard-api:** project upsert, member sync and user purge
([#3442](#3442))
([8c90702](8c90702))
* **dashboard-api:** templates list pagination
([#2904](#2904))
([6882463](6882463))
* **db:** add project_limits, an override the limits owner can write
([#3429](#3429))
([5ab6259](5ab6259))
* improve templates list sorting
([#2983](#2983))
([51ad7ff](51ad7ff))
* **otel:** instrument auth service HTTP client with otelhttp
([#2722](#2722))
([69b085d](69b085d))
* per-team events TTL limit (tier + addons)
([#3181](#3181))
([f76b2cb](f76b2cb))


### Bug Fixes

* added api and orch
([#3454](#3454))
([d56e0a8](d56e0a8))
* **api:** copy auth/internal into api and dashboard-api image builds
([#3323](#3323))
([bda1fee](bda1fee))
* **api:** invalidate auth cache on API key deletion
([#3324](#3324))
([8b02910](8b02910))
* correct 3 CVES ([#3218](#3218))
([076823b](076823b))
* creating whitespace to test publish
([#3476](#3476))
([6b4177f](6b4177f))
* **dashboard-api:** avoid repeated Ory bootstrap provisioning
([#2940](#2940))
([da5ce59](da5ce59))
* **dashboard-api:** drop removed read-replica accessor in provisioning
tests ([#3340](#3340))
([6addc91](6addc91))
* **dashboard-api:** pass signup metadata to billing provisioning
([#2978](#2978))
([d0ea5b4](d0ea5b4))
* **dashboard-api:** set Ory external_id only after the bootstrap commit
([#3133](#3133))
([00ad04b](00ad04b))
* push client-proxy, dashboard-api, and docker-reverse-proxy image…
([#2953](#2953))
([1d930ee](1d930ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: e2b-release-please[bot] <298072688+e2b-release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants