[GIN] 2026/04/17 - 17:50:15 | 200 | 32.873µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:16 | 200 | 36.051µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:50:20.076Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-multi-sub-valid","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"4e3844bc-4ff1-4df5-a45b-e39217cf0e50","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:50:20.076Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"4e3844bc-4ff1-4df5-a45b-e39217cf0e50","keyPrefix":"sk-oai-119QwDX0SW8k...","username":"system:serviceaccount:models-as-a-service:e2e-sa-multi-sub-valid","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:50:20 | 201 | 2.169052ms | 100.64.0.2 | POST "/v1/api-keys" {"level":"info","timestamp":"2026-04-17T17:50:20.112Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-multi-sub-valid","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"49d89eaa-840b-4d09-8f86-3045bd442db0","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:50:20.112Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"49d89eaa-840b-4d09-8f86-3045bd442db0","keyPrefix":"sk-oai-rvcqgSoDBksl...","username":"system:serviceaccount:models-as-a-service:e2e-sa-multi-sub-valid","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:50:20 | 201 | 1.661128ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:50:20 | 200 | 504.874µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:50:20 | 200 | 173.033µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:50:20 | 200 | 512.228µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:50:20 | 200 | 168.962µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:50:20 | 200 | 35.984µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:25 | 200 | 35.02µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:26 | 200 | 36.158µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:30 | 200 | 36.849µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:35 | 200 | 41.276µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:36 | 200 | 34.22µs | 10.133.0.2 | GET "/health" {"level":"warn","timestamp":"2026-04-17T17:50:37.768Z","caller":"api_keys/service.go:130","message":"Subscription selection failed when creating API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-user","requestedSubscription":"e2e-test-other-subscription","error":"access denied to requested subscription"} {"level":"error","timestamp":"2026-04-17T17:50:37.768Z","caller":"api_keys/handler.go:189","message":"Failed to create API key","error":"access denied to requested subscription","stacktrace":"github.com/opendatahub-io/models-as-a-service/maas-api/internal/api_keys.(*Handler).CreateAPIKey\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/api_keys/handler.go:189\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\nmain.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:121\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 17:50:37 | 400 | 221.469µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:50:40 | 200 | 33.013µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:45 | 200 | 38.438µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:46 | 200 | 38.128µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:50 | 200 | 50.64µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:50:55.171Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-group","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"9a8705ee-c9e3-4448-a945-72f32f8b3a7b","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:50:55.171Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"9a8705ee-c9e3-4448-a945-72f32f8b3a7b","keyPrefix":"sk-oai-afnfAjDJU1xF...","username":"system:serviceaccount:models-as-a-service:e2e-sa-group","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:50:55 | 201 | 2.469659ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:50:55 | 200 | 879.303µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:50:55 | 200 | 332.756µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:50:55 | 200 | 38.92µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:50:56 | 200 | 43.032µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:00 | 200 | 34.272µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:51:04.236Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-group-auth-only","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"d3538116-5a42-41e7-a7b4-306defaa7456","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:51:04.236Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"d3538116-5a42-41e7-a7b4-306defaa7456","keyPrefix":"sk-oai-vQTSQqFjEVGT...","username":"system:serviceaccount:models-as-a-service:e2e-sa-group-auth-only","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:51:04 | 201 | 2.113749ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:51:05 | 200 | 46.341µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:06 | 200 | 35.29µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:10 | 200 | 33.853µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:12 | 200 | 928.556µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:51:12 | 200 | 341.345µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:51:15 | 200 | 35.638µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:16 | 200 | 51.439µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:20 | 200 | 33.842µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:25 | 200 | 37.393µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:26 | 200 | 44.143µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:51:29.773Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-sa-group-sub-only","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"05a1d99b-478f-491e-864a-db0a4f31d345","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:51:29.773Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"05a1d99b-478f-491e-864a-db0a4f31d345","keyPrefix":"sk-oai-d3OA68znBwxJ...","username":"system:serviceaccount:models-as-a-service:e2e-sa-group-sub-only","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:51:29 | 201 | 1.972133ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:51:29 | 200 | 499.6µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:51:29 | 200 | 223.435µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:51:30 | 200 | 51.16µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:35 | 200 | 52.78µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:36 | 200 | 39.901µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:40 | 200 | 39.892µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:45 | 200 | 35.625µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:46 | 200 | 40.127µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:50 | 200 | 48.231µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:55 | 200 | 34.179µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:51:56 | 200 | 32.832µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:00 | 200 | 36.208µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:05 | 200 | 32.179µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:06 | 200 | 33.065µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:10 | 200 | 34.386µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:15 | 200 | 35.911µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:16 | 200 | 35.186µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:20 | 200 | 36.216µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:25 | 200 | 36.911µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:26 | 200 | 34.212µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:30 | 200 | 37.559µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:35 | 200 | 33.997µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:36 | 200 | 33.102µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:40 | 200 | 43.967µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:45 | 200 | 42.52µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:46 | 200 | 34.573µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:50 | 200 | 33.49µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:55 | 200 | 42.134µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:52:56 | 200 | 34.349µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:52:57.368Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-single-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"73fd25cd-0949-4cbf-b7cd-908bbc1d3910","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:52:57.368Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"73fd25cd-0949-4cbf-b7cd-908bbc1d3910","keyPrefix":"sk-oai-yNwXtbwHbxrF...","username":"system:serviceaccount:default:e2e-models-single-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:52:57 | 201 | 10.843024ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:53:00 | 200 | 32.575µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:05 | 200 | 41.489µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:06 | 200 | 62.339µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:10 | 200 | 31.262µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:15 | 200 | 32.41µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:16 | 200 | 29.443µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:20 | 200 | 28.158µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:25 | 200 | 54.82µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:26 | 200 | 34.922µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:27 | 200 | 1.621917ms | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:53:27 | 200 | 343.879µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:53:27 | 200 | 792.102µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:53:27 | 200 | 641.737µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:53:27 | 200 | 189.911µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:53:27 | 200 | 24.599769ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 17:53:30 | 200 | 34.186µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:35 | 200 | 48.547µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:36 | 200 | 36.857µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:40 | 200 | 65.566µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:44 | 200 | 346.573µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:53:44 | 200 | 16.676272ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:53:45 | 200 | 35.237µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:46 | 200 | 36.308µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:50 | 200 | 53.588µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:53:53.173Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"39701fe6-d98d-4098-bb90-2f2f214e2f4c","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:53:53.173Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"39701fe6-d98d-4098-bb90-2f2f214e2f4c","keyPrefix":"sk-oai-15ALkNk3qBA6...","username":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:53:53 | 201 | 2.046435ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:53:55 | 200 | 35.387µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:53:56 | 200 | 37.657µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:00 | 200 | 34.489µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:01 | 200 | 993.769µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:01 | 200 | 716.916µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:01 | 200 | 340.357µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:01 | 200 | 11.017001ms | 100.64.0.2 | GET "/v1/models" {"level":"info","timestamp":"2026-04-17T17:54:01.715Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"1367708c-b748-4457-b4b7-2862821266ee","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:54:01.715Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"1367708c-b748-4457-b4b7-2862821266ee","keyPrefix":"sk-oai-HC0SJXSJq09U...","username":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:54:01 | 201 | 1.708546ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:54:05 | 200 | 57.4µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:06 | 200 | 37.563µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:09 | 200 | 917.178µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:09 | 200 | 508.781µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:09 | 200 | 186.505µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:09 | 200 | 7.592487ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:54:09 | 200 | 530.235µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:09 | 200 | 556.567µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:09 | 200 | 162.471µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:09 | 200 | 7.032162ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:54:10 | 200 | 43.352µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:54:10.669Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"ecfa2093-65c1-42a5-96a7-0679f0c194ef","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:54:10.669Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"ecfa2093-65c1-42a5-96a7-0679f0c194ef","keyPrefix":"sk-oai-IKgmxCyfCvgI...","username":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:54:10 | 201 | 1.976095ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:54:15 | 200 | 37.888µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:16 | 200 | 31.88µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:18 | 200 | 836.756µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:18 | 200 | 503.501µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:18 | 200 | 214.115µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:18 | 200 | 9.842607ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:54:20 | 200 | 36.085µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:25 | 200 | 40.779µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:26 | 200 | 36.974µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:54:27.806Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"40111cc0-dd99-4b9e-bca7-0ff8ac403d61","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:54:27.806Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"40111cc0-dd99-4b9e-bca7-0ff8ac403d61","keyPrefix":"sk-oai-6VL2apnMmPgv...","username":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:54:27 | 201 | 1.971273ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:54:30 | 200 | 37.546µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:35 | 200 | 35.767µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:35 | 200 | 824.664µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:35 | 200 | 624.643µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:35 | 200 | 225.054µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:35 | 200 | 481.145µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:35 | 200 | 140.033µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:35 | 200 | 20.371331ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 17:54:36 | 200 | 39.874µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:40 | 200 | 38.028µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:54:44.932Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-distinct-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"0065e9be-7737-467e-b1e3-0b5c50b25301","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:54:44.932Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"0065e9be-7737-467e-b1e3-0b5c50b25301","keyPrefix":"sk-oai-e1AbQYNhqvIK...","username":"system:serviceaccount:default:e2e-models-distinct-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:54:44 | 201 | 1.930257ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:54:45 | 200 | 65.467µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:46 | 200 | 34.017µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:50 | 200 | 42.645µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:52 | 200 | 785.998µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:52 | 200 | 458.504µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:52 | 200 | 118.047µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:52 | 200 | 10.164499ms | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:54:52 | 200 | 152.385µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:54:52 | 200 | 24.322558ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 17:54:55 | 200 | 50.663µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:54:56 | 200 | 37.914µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:00 | 200 | 32.125µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:05 | 200 | 44.418µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:06 | 200 | 35.446µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:06 | 200 | 145.792µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:06 | 200 | 159.663µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:06 | 200 | 145.299µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:07 | 200 | 41.797886ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:55:10 | 200 | 33.992µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:15 | 200 | 33.258µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:16 | 200 | 38.1µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:20 | 200 | 32.645µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:24 | 200 | 124.628µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:24 | 200 | 13.648947ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:55:25 | 200 | 34.583µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:26 | 200 | 37.428µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:30 | 200 | 39.476µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:55:33.438Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"dd511fe9-b69d-475f-a6ab-c2c3d1d77941","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:55:33.438Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"dd511fe9-b69d-475f-a6ab-c2c3d1d77941","keyPrefix":"sk-oai-wxuC3Pwy5Tzx...","username":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:55:33 | 201 | 2.140476ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:55:35 | 200 | 38.048µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:36 | 200 | 35.496µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:40 | 200 | 34.309µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:41 | 200 | 819.49µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:55:41 | 200 | 3.289942ms | 100.64.0.2 | GET "/v1/models" {"level":"info","timestamp":"2026-04-17T17:55:42.064Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"444285a4-2a92-4181-8768-20c37cb98a10","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:55:42.064Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"444285a4-2a92-4181-8768-20c37cb98a10","keyPrefix":"sk-oai-12IqUYpnn0nn...","username":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:55:42 | 201 | 1.849663ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:55:45 | 200 | 32.913µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:46 | 200 | 35.567µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:50 | 200 | 791.037µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:55:50 | 200 | 498.252µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:55:50 | 200 | 94.744µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:50 | 200 | 10.705919ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:55:50 | 200 | 37.87µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:55:50.479Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"530e6f19-3953-4788-b834-0c442a099933","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:55:50.479Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"530e6f19-3953-4788-b834-0c442a099933","keyPrefix":"sk-oai-chagzrDfERLG...","username":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:55:50 | 201 | 1.770016ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:55:55 | 200 | 33.843µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:56 | 200 | 34.95µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:55:58 | 200 | 842.685µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:55:58 | 200 | 456.254µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:55:58 | 200 | 98.131µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:55:58 | 200 | 9.721977ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-17T17:55:59.129Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"622d7127-7dff-4781-b42e-b3435609df6a","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:55:59.129Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"622d7127-7dff-4781-b42e-b3435609df6a","keyPrefix":"sk-oai-xcwzKpy9zSwP...","username":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:55:59 | 201 | 1.788438ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:56:00 | 200 | 36.103µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:05 | 200 | 36.087µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:06 | 200 | 32.754µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:07 | 200 | 754.864µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:56:07 | 200 | 435.848µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:56:07 | 200 | 105.961µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:56:07 | 200 | 9.394223ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:56:10 | 200 | 32.593µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:15 | 200 | 35.015µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:56:16.217Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-api-key-deleted-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"669bf0f7-365c-4a6f-bcfc-629cf5c47c4a","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:56:16.217Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"669bf0f7-365c-4a6f-bcfc-629cf5c47c4a","keyPrefix":"sk-oai-lSLngbnjYDn9...","username":"system:serviceaccount:models-as-a-service:e2e-api-key-deleted-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:56:16 | 201 | 1.962433ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:56:16 | 200 | 31.318µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:20 | 200 | 39.673µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:25 | 200 | 36.69µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:26 | 200 | 33.95µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:30 | 200 | 43.533µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:32 | 200 | 741.813µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:56:32 | 403 | 91.751µs | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 17:56:35 | 200 | 36.598µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:36 | 200 | 49.412µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:40 | 200 | 39.371µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:45 | 200 | 32.458µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:46 | 200 | 36.808µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:49 | 403 | 79.898µs | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:56:50 | 200 | 37.933µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:55 | 200 | 34.522µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:56:56 | 200 | 47.419µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:00 | 200 | 35.658µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:05 | 200 | 34.492µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:06 | 200 | 34.594µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:06 | 403 | 78.683µs | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:57:10 | 200 | 36.82µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:15 | 200 | 39.64µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:16 | 200 | 34.4µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:20 | 200 | 41.253µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:24 | 403 | 84.566µs | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:57:25 | 200 | 35.681µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:26 | 200 | 38.289µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:30 | 200 | 32.106µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:35 | 200 | 72.045µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:36 | 200 | 45.39µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:40 | 200 | 35.608µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:57:41.650Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-api-key-ignores-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"0db9bda6-dcea-4f7a-be02-732f0662e00a","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:57:41.650Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"0db9bda6-dcea-4f7a-be02-732f0662e00a","keyPrefix":"sk-oai-YBGIdTxSo2L6...","username":"system:serviceaccount:default:e2e-api-key-ignores-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:57:41 | 201 | 1.61538ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:57:45 | 200 | 38.64µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:46 | 200 | 37.876µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:49 | 200 | 657.004µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:57:49 | 200 | 471.303µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:57:49 | 200 | 117.803µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:57:49 | 200 | 21.673645ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:57:50 | 200 | 31.893µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:55 | 200 | 33.133µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:57:56 | 200 | 49.736µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:00 | 200 | 39.22µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:05 | 200 | 43.887µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:06 | 200 | 53.777µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:58:07.457Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"bf1d423b-c68e-4ff4-b674-a3ed34e20699","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:58:07.457Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"bf1d423b-c68e-4ff4-b674-a3ed34e20699","keyPrefix":"sk-oai-tBVehvkwXyPR...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:58:07 | 201 | 2.267465ms | 100.64.0.4 | POST "/v1/api-keys" {"level":"info","timestamp":"2026-04-17T17:58:07.494Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"aacb3632-5861-48e7-ac62-df3cea7cd76c","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:58:07.494Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"aacb3632-5861-48e7-ac62-df3cea7cd76c","keyPrefix":"sk-oai-hbcc0x7OZUAB...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:58:07 | 201 | 1.550623ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:58:10 | 200 | 40.275µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:15 | 200 | 38.198µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:15 | 200 | 823.819µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:58:15 | 200 | 422.925µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:58:15 | 200 | 123.939µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:15 | 200 | 14.938008ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 17:58:15 | 200 | 513.266µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:58:15 | 200 | 466.915µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:58:15 | 200 | 127.035µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:15 | 200 | 10.163565ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:58:16 | 200 | 35.786µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:20 | 200 | 33.898µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:25 | 200 | 59.308µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:26 | 200 | 36.474µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:30 | 200 | 33.091µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:32 | 200 | 144.854µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:32 | 200 | 138.364µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:32 | 200 | 128.609µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:32 | 200 | 38.051868ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:58:35 | 200 | 32.748µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:36 | 200 | 32.72µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:40 | 200 | 36.311µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:45 | 200 | 40.025µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:46 | 200 | 34.908µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:48 | 200 | 114.925µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:48 | 200 | 12.578639ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 17:58:48 | 200 | 134.754µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:58:48 | 200 | 12.429886ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:58:50 | 200 | 34.058µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:55 | 200 | 34.269µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:58:56 | 200 | 33.09µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:00 | 200 | 31.595µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:05 | 200 | 37.367µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:06 | 200 | 41.143µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:10 | 200 | 34.287µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:59:14.275Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"551eca99-9710-467b-8352-e50542a685db","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:59:14.275Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"551eca99-9710-467b-8352-e50542a685db","keyPrefix":"sk-oai-16yDGtDAZ5Rd...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:59:14 | 201 | 1.929613ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:59:14 | 200 | 462.434µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 201.256µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:14 | 200 | 497.88µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 161.355µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:14 | 200 | 562.158µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 211.777µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:14 | 200 | 496.191µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 223.589µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:14 | 200 | 580.746µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 467.412µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:14 | 200 | 212.006µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:14 | 200 | 10.994466ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/17 - 17:59:15 | 200 | 31.206µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:16 | 200 | 31.003µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:20 | 200 | 36.24µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:25 | 200 | 37.568µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:26 | 200 | 36.127µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T17:59:30.091Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"200bec89-5b69-477b-a462-c2d89da2f6cf","ephemeral":false} {"level":"info","timestamp":"2026-04-17T17:59:30.091Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"200bec89-5b69-477b-a462-c2d89da2f6cf","keyPrefix":"sk-oai-sAMfOEdUPwea...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/17 - 17:59:30 | 201 | 2.302973ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 17:59:30 | 200 | 30.842µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:30 | 200 | 803.935µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 17:59:30 | 200 | 116.97µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 17:59:35 | 200 | 54.8µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:36 | 200 | 35.847µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:40 | 200 | 32.634µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:45 | 200 | 33.087µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:46 | 200 | 34.949µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:50 | 200 | 36.54µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:55 | 200 | 40.352µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 17:59:56 | 200 | 32.59µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:00 | 200 | 36.588µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:05 | 200 | 35.043µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:06 | 200 | 38.337µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:00:08.415Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"8962c7ab-84c3-473d-bc80-1f9cc30bc4da","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:00:08.415Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"8962c7ab-84c3-473d-bc80-1f9cc30bc4da","keyPrefix":"sk-oai-cGTqXO1x9lnt...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:00:08 | 201 | 10.770742ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-17T18:00:08.978Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:08 | 500 | 110.319µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:10 | 200 | 39.264µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:14.011Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:14 | 500 | 131.322µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:15 | 200 | 34.081µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:16 | 200 | 35.112µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:00:19.047Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Site-Reliability"],"id":"2040e8b4-7ff9-42d5-b7de-10e48c9452f6","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:00:19.047Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"2040e8b4-7ff9-42d5-b7de-10e48c9452f6","keyPrefix":"sk-oai-1SegUmoxzXBv...","username":"","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/17 - 18:00:19 | 201 | 1.894704ms | 100.64.0.2 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-17T18:00:19.274Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:19 | 500 | 89.83µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:20 | 200 | 32.507µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:24.304Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:24 | 500 | 87.232µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:25 | 200 | 36.028µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:26 | 200 | 39.664µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:29.337Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:29 | 500 | 90.47µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:30 | 200 | 35.353µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:34.367Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:34 | 500 | 89.829µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:35 | 200 | 31.14µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:36 | 200 | 35.2µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:00:39.402Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"bcd53db2-6b21-4886-aa62-5b9b79ca7de9","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:00:39.402Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"bcd53db2-6b21-4886-aa62-5b9b79ca7de9","keyPrefix":"sk-oai-ewFQn061wAVC...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:00:39 | 201 | 1.915019ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:39 | 200 | 1.282311ms | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:00:39 | 200 | 645.016µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:00:39 | 200 | 198.578µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 18:00:39 | 200 | 20.937718ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 18:00:39 | 200 | 663.947µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:00:39 | 200 | 196.61µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" {"level":"info","timestamp":"2026-04-17T18:00:39.594Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"307de821-4d1f-4a5e-8793-86e5d6b05e6f","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:00:39.594Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"307de821-4d1f-4a5e-8793-86e5d6b05e6f","keyPrefix":"sk-oai-6dHBRkNat0nk...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:00:39 | 201 | 1.748902ms | 100.64.0.4 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-17T18:00:39.617Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:39 | 500 | 78.958µs | 100.64.0.2 | DELETE "/v1/api-keys/307de821-4d1f-4a5e-8793-86e5d6b05e6f" {"level":"error","timestamp":"2026-04-17T18:00:39.974Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:39 | 500 | 92.797µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:40 | 200 | 33.835µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:45.005Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:45 | 500 | 86.198µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:45 | 200 | 32.075µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:46 | 200 | 33.789µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:50.034Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:50 | 500 | 86.002µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:50 | 200 | 36.537µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:00:55.068Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:00:55 | 500 | 86.923µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:00:55 | 200 | 37.389µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:00:56 | 200 | 33.118µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:00.104Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:00 | 500 | 82.598µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:00 | 200 | 47.096µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:05.140Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"aeb2463f-1881-4fbf-b896-bb43f27f04cf","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:05.140Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"aeb2463f-1881-4fbf-b896-bb43f27f04cf","keyPrefix":"sk-oai-gg3FL6eBB6WX...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:05 | 201 | 1.991351ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-17T18:01:05.166Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:05 | 500 | 86.582µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:05 | 200 | 37.235µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:01:06 | 200 | 39.464µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:10.197Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:10 | 500 | 86.423µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:10 | 200 | 43.361µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:15.230Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:15 | 500 | 92.28µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:15 | 200 | 36.492µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:01:16 | 200 | 33.449µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:20.269Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Site-Reliability"],"id":"9783b107-d155-4e7d-a79c-4dbe69ba7c8c","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:20.269Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"9783b107-d155-4e7d-a79c-4dbe69ba7c8c","keyPrefix":"sk-oai-vxjM5HUKJFfP...","username":"","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:20 | 201 | 1.935107ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:20 | 200 | 37.524µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:20.368Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:20 | 500 | 83.396µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:25 | 200 | 45.162µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:25.400Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:25 | 500 | 87.005µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:26 | 200 | 38.084µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:01:30 | 200 | 32.494µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:30.437Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"09f0c7a4-6586-41cb-b2c6-745f8af975b4","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:30.437Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"09f0c7a4-6586-41cb-b2c6-745f8af975b4","keyPrefix":"sk-oai-MMEHr4i7Cnva...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:30 | 201 | 1.925882ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-17T18:01:30.464Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:30 | 500 | 86.36µs | 100.64.0.4 | DELETE "/v1/api-keys/09f0c7a4-6586-41cb-b2c6-745f8af975b4" {"level":"error","timestamp":"2026-04-17T18:01:30.573Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:30 | 500 | 86.201µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:35 | 200 | 35.911µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:35.605Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:35 | 500 | 87.964µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:36 | 200 | 36.495µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:01:40 | 200 | 38.447µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:40.641Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"bbf81d40-30ed-4e57-9665-57ff4a68f4bd","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:40.641Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"bbf81d40-30ed-4e57-9665-57ff4a68f4bd","keyPrefix":"sk-oai-1Q0lCBEDZTi3...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:40 | 201 | 2.009162ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:40 | 200 | 563.586µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:40 | 200 | 474.495µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:40 | 200 | 88.554µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 18:01:40 | 200 | 18.857893ms | 100.64.0.2 | GET "/v1/models" {"level":"error","timestamp":"2026-04-17T18:01:40.799Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:40 | 500 | 96.713µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:45 | 200 | 33.925µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:45.840Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"98e799a3-c8c8-468a-a320-4af6f04de845","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:45.840Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"98e799a3-c8c8-468a-a320-4af6f04de845","keyPrefix":"sk-oai-H1WJdUcRJ59f...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:45 | 201 | 2.006215ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:45 | 200 | 585.986µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:45 | 403 | 64.354µs | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/17 - 18:01:45 | 200 | 460.105µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:45 | 200 | 387.736µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:45 | 200 | 103.335µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 18:01:45 | 200 | 8.906467ms | 100.64.0.3 | GET "/v1/models" {"level":"error","timestamp":"2026-04-17T18:01:45.991Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:45 | 500 | 107.721µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:46 | 200 | 41.774µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:01:50 | 200 | 42.813µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-17T18:01:51.040Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"7a9629c6-22f9-40c6-82a8-9546d3ec3d0c","ephemeral":false} {"level":"info","timestamp":"2026-04-17T18:01:51.040Z","caller":"api_keys/handler.go:208","message":"Created API key","keyId":"7a9629c6-22f9-40c6-82a8-9546d3ec3d0c","keyPrefix":"sk-oai-1b9XbgEeQ3tT...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/17 - 18:01:51 | 201 | 1.963141ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:51 | 200 | 494.35µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:51 | 200 | 349.825µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:51 | 200 | 97.619µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 18:01:51 | 200 | 9.394208ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/17 - 18:01:51 | 200 | 474.904µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:51 | 200 | 400.842µs | 10.134.0.40 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/17 - 18:01:51 | 200 | 97.494µs | 10.134.0.40 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/17 - 18:01:51 | 200 | 8.800863ms | 100.64.0.3 | GET "/v1/models" {"level":"error","timestamp":"2026-04-17T18:01:51.213Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:51 | 500 | 118.406µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:55 | 200 | 38.229µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:01:56.246Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:01:56 | 500 | 90.557µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:01:56 | 200 | 32.391µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:02:00 | 200 | 34.052µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:02:01.282Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:02:01 | 500 | 116.78µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:02:05 | 200 | 31.387µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:02:06 | 200 | 37.664µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:02:06.312Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:02:06 | 500 | 89.225µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:02:10 | 200 | 33.121µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:02:11.346Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:02:11 | 500 | 123.403µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:02:15 | 200 | 33.297µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/17 - 18:02:16 | 200 | 35.414µs | 10.133.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-17T18:02:16.374Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/17 - 18:02:16 | 500 | 83.906µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/17 - 18:02:20 | 200 | 32.844µs | 10.133.0.2 | GET "/health"