[GIN] 2026/04/21 - 15:26:50 | 200 | 176.029µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:26:50 | 200 | 29.117755ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:26:55 | 200 | 32.159µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:26:56 | 200 | 45.09µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:00 | 200 | 39.615µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:27:02.830Z","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":"e4d67ac3-171f-480b-b1dd-c59daa0eefad","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:27:02.830Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"e4d67ac3-171f-480b-b1dd-c59daa0eefad","keyPrefix":"sk-oai-1dfTAobmSg08...","username":"system:serviceaccount:default:e2e-models-single-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:27:02 | 201 | 2.255965ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:27:05 | 200 | 27.839µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:06 | 200 | 29.453µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:10 | 200 | 31.651µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:15 | 200 | 29.403µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:16 | 200 | 26.777µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:20 | 200 | 33.595µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:25 | 200 | 35.937µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:26 | 200 | 31.057µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:30 | 200 | 32.547µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:32 | 200 | 931.396µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:27:32 | 200 | 125.182µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:27:32 | 200 | 598.711µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:27:32 | 200 | 507.333µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:27:32 | 200 | 124.651µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:27:32 | 200 | 15.723717ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:27:35 | 200 | 40.22µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:36 | 200 | 35.469µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:40 | 200 | 49.472µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:45 | 200 | 26.604µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:46 | 200 | 28.026µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:50 | 200 | 117.274µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:27:50 | 200 | 14.680345ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:27:50 | 200 | 27.384µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:55 | 200 | 33.412µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:27:56 | 200 | 34.557µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:27:58.663Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"c508d69f-132f-4b98-a6ed-4db320dc8023","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:27:58.663Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"c508d69f-132f-4b98-a6ed-4db320dc8023","keyPrefix":"sk-oai-1OpvMXEvH7AS...","username":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:27:58 | 201 | 3.855548ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:28:00 | 200 | 34.711µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:05 | 200 | 33.87µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:06 | 200 | 37.308µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:06 | 200 | 849.366µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:06 | 200 | 418.12µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:06 | 200 | 121.544µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:06 | 200 | 10.683053ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:28:07.224Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"0b1551dd-dd73-4905-82d3-35455d283482","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:28:07.224Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"0b1551dd-dd73-4905-82d3-35455d283482","keyPrefix":"sk-oai-o5RrfiBvioA9...","username":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:28:07 | 201 | 1.809647ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:28:10 | 200 | 49.71µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:15 | 200 | 758.095µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:15 | 200 | 474.163µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:15 | 200 | 142.142µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:15 | 200 | 8.034359ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:28:15 | 200 | 516.652µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:15 | 200 | 428.693µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:15 | 200 | 128.771µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:15 | 200 | 11.785783ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:28:15 | 200 | 37.675µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:16 | 200 | 41.339µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:28:16.288Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"a69ecc2f-4ba9-4d3d-bbf3-3cf58fabf7aa","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:28:16.288Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"a69ecc2f-4ba9-4d3d-bbf3-3cf58fabf7aa","keyPrefix":"sk-oai-Pu3yY10ZtHQW...","username":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:28:16 | 201 | 2.008767ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:28:20 | 200 | 34.759µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:24 | 200 | 713.041µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:24 | 200 | 466.97µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:24 | 200 | 142.123µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:24 | 200 | 10.812844ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:28:25 | 200 | 40.811µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:26 | 200 | 42.327µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:30 | 200 | 34.467µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:28:33.494Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"7780af47-a825-4f53-b871-4ee99f4b6ddb","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:28:33.494Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"7780af47-a825-4f53-b871-4ee99f4b6ddb","keyPrefix":"sk-oai-1O3bP3XmGxth...","username":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:28:33 | 201 | 2.146347ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:28:35 | 200 | 40.956µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:36 | 200 | 50.403µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:40 | 200 | 35.524µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:41 | 200 | 805.022µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:41 | 200 | 434.851µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:41 | 200 | 155.172µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:41 | 200 | 446.347µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:28:41 | 200 | 140.571µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:28:41 | 200 | 18.752322ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:28:45 | 200 | 35.278µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:46 | 200 | 34.224µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:50 | 200 | 39.665µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:28:55.021Z","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":"fcd4997d-3335-41ee-8ea9-d4a4091e0b11","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:28:55.021Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"fcd4997d-3335-41ee-8ea9-d4a4091e0b11","keyPrefix":"sk-oai-hCRX203EtNNe...","username":"system:serviceaccount:default:e2e-models-distinct-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:28:55 | 201 | 2.073867ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:28:55 | 200 | 40.153µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:28:56 | 200 | 38.247µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:00 | 200 | 38.912µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:03 | 200 | 750.16µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:29:03 | 200 | 452.382µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:29:03 | 200 | 172.431µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:03 | 200 | 11.540976ms | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:29:03 | 200 | 142.841µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:03 | 200 | 37.47713ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:29:05 | 200 | 38.341µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:06 | 200 | 51.776µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:10 | 200 | 38.103µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:15 | 200 | 74.916µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:16 | 200 | 34.768µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:19 | 200 | 148.5µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:19 | 200 | 150.609µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:19 | 200 | 178.621µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:19 | 200 | 41.140131ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:29:20 | 200 | 39.095µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:25 | 200 | 35.231µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:26 | 200 | 40.344µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:30 | 200 | 37.372µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:35 | 200 | 34.509µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:36 | 200 | 40.516µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:36 | 200 | 143.42µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:29:36 | 200 | 14.650683ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:29:40 | 200 | 35.371µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:45 | 200 | 38.418µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:46 | 200 | 42.407µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:29:47.904Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"a04024a5-b438-4822-955e-fcc6705535c0","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:29:47.904Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"a04024a5-b438-4822-955e-fcc6705535c0","keyPrefix":"sk-oai-dSaWhRjFPD0v...","username":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:29:47 | 201 | 3.875358ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:29:50 | 200 | 35.962µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:55 | 200 | 34.122µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:29:55 | 200 | 839.247µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:29:55 | 200 | 5.457371ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:29:56 | 200 | 40.984µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:29:56.561Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"d4dd6f8a-ebba-45a8-b7b4-adc651391dcc","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:29:56.561Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"d4dd6f8a-ebba-45a8-b7b4-adc651391dcc","keyPrefix":"sk-oai-1dJmL9QkNJgY...","username":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:29:56 | 201 | 1.848533ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:30:00 | 200 | 42.766µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:04 | 200 | 868.04µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:04 | 200 | 481.605µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:04 | 200 | 133.749µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:30:04 | 200 | 9.640444ms | 100.64.0.2 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:30:04.991Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"99a4f2cb-f982-41b5-a289-dcba84c3b28c","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:30:04.991Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"99a4f2cb-f982-41b5-a289-dcba84c3b28c","keyPrefix":"sk-oai-1aJFOcxnhfCy...","username":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:30:04 | 201 | 2.000384ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:30:05 | 200 | 34.491µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:06 | 200 | 37.069µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:10 | 200 | 35.95µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:13 | 200 | 905.737µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:13 | 200 | 472.078µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:13 | 200 | 126.066µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:30:13 | 200 | 10.087246ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:30:13.834Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"82e4eea9-c5fb-4c27-b502-b06be5e57b57","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:30:13.834Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"82e4eea9-c5fb-4c27-b502-b06be5e57b57","keyPrefix":"sk-oai-eH52asx63FJE...","username":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:30:13 | 201 | 1.97183ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:30:15 | 200 | 35.326µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:16 | 200 | 38.051µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:20 | 200 | 37.016µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:21 | 200 | 861.965µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:21 | 200 | 433.005µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:21 | 200 | 125.628µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:30:21 | 200 | 9.835994ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:30:25 | 200 | 34.359µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:26 | 200 | 35.117µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:30 | 200 | 42.922µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:30:31.080Z","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":"db822e50-dead-430c-8564-097a2b06a40c","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:30:31.080Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"db822e50-dead-430c-8564-097a2b06a40c","keyPrefix":"sk-oai-jdA8QLicXrZS...","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/21 - 15:30:31 | 201 | 2.124728ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:30:35 | 200 | 35.629µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:36 | 200 | 34.411µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:40 | 200 | 37.56µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:45 | 200 | 35.75µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:46 | 200 | 42.48µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:47 | 200 | 791.566µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:30:47 | 403 | 109.579µs | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:30:50 | 200 | 39.459µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:55 | 200 | 34.192µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:30:56 | 200 | 36.431µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:00 | 200 | 32.775µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:04 | 403 | 94.388µs | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:31:05 | 200 | 40.14µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:06 | 200 | 36.423µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:10 | 200 | 36.795µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:15 | 200 | 34.986µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:16 | 200 | 35.02µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:20 | 200 | 49.016µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:21 | 403 | 98.145µs | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:31:25 | 200 | 38.028µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:26 | 200 | 33.923µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:30 | 200 | 42.785µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:35 | 200 | 39.773µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:36 | 200 | 33.442µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:39 | 403 | 117.204µs | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:31:40 | 200 | 43.419µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:45 | 200 | 36.327µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:46 | 200 | 38.477µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:50 | 200 | 36.543µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:31:51.117Z","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":"23a3a67c-5da9-4df6-956e-c6e24907f84f","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:31:51.117Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"23a3a67c-5da9-4df6-956e-c6e24907f84f","keyPrefix":"sk-oai-1aMzzGIArGoQ...","username":"system:serviceaccount:default:e2e-api-key-ignores-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:31:51 | 201 | 2.241077ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:31:55 | 200 | 32.213µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:56 | 200 | 32.594µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:31:59 | 200 | 1.00384ms | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:31:59 | 200 | 448.298µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:31:59 | 200 | 153.84µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:31:59 | 200 | 19.870303ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:00 | 200 | 39.188µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:05 | 200 | 37.198µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:06 | 200 | 35.1µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:10 | 200 | 42.4µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:32:13.517Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"ab08deeb-9c09-4dd7-8018-3dc10f3bb6b5","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:32:13.517Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"ab08deeb-9c09-4dd7-8018-3dc10f3bb6b5","keyPrefix":"sk-oai-tJxEj2Sbg1ss...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:32:13 | 201 | 2.137657ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"info","timestamp":"2026-04-21T15:32:13.557Z","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":"c71b0264-e306-4ab9-a93c-cfe5dc75e79c","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:32:13.557Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"c71b0264-e306-4ab9-a93c-cfe5dc75e79c","keyPrefix":"sk-oai-jA0XfLkSQmrR...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:32:13 | 201 | 2.372797ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:32:15 | 200 | 44.057µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:16 | 200 | 37.309µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:20 | 200 | 38.294µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:21 | 200 | 737.728µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:32:21 | 200 | 441.025µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:32:21 | 200 | 175.076µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:21 | 200 | 9.465853ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:21 | 200 | 439.307µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:32:21 | 200 | 381.335µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:32:21 | 200 | 137.45µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:21 | 200 | 12.191996ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:25 | 200 | 36.865µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:26 | 200 | 38.303µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:30 | 200 | 31.966µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:35 | 200 | 34.962µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:36 | 200 | 34.615µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:38 | 200 | 148.849µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:38 | 200 | 167.452µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:38 | 200 | 162.477µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:38 | 200 | 40.096173ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:40 | 200 | 41.349µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:45 | 200 | 38.817µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:46 | 200 | 42.688µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:50 | 200 | 37.329µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:55 | 200 | 166.609µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:55 | 200 | 14.34202ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:55 | 200 | 163.682µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:32:55 | 200 | 13.768516ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:32:55 | 200 | 36.767µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:32:56 | 200 | 44.865µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:00 | 200 | 41.239µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:05 | 200 | 44.474µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:06 | 200 | 35.821µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:10 | 200 | 37.809µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:15 | 200 | 36.95µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:16 | 200 | 45.869µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:20 | 200 | 43.807µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:33:20.802Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:tester-regular-user","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"a9bf66de-3357-492d-8214-45511773765b","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:33:20.802Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"a9bf66de-3357-492d-8214-45511773765b","keyPrefix":"sk-oai-1VC01tdEmDQe...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:33:20 | 201 | 3.592443ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:33:20 | 200 | 531.867µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:20 | 200 | 174.728µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:33:20 | 200 | 500.111µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:20 | 200 | 135.225µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:33:20 | 200 | 470.968µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:20 | 200 | 130.7µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:33:20 | 200 | 497.418µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:20 | 200 | 475µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:20 | 200 | 162.248µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:33:20 | 200 | 13.836405ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:33:25 | 200 | 41.436µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:26 | 200 | 37.767µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:30 | 200 | 45.161µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:35 | 200 | 36.356µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:36 | 200 | 36.837µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:33:36.589Z","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":"3f97f70a-1a04-41d5-bd8b-c140ab83a9c4","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:33:36.589Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"3f97f70a-1a04-41d5-bd8b-c140ab83a9c4","keyPrefix":"sk-oai-1dv2pjqCPUVJ...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:33:36 | 201 | 2.281544ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:33:37 | 200 | 584.578µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:33:37 | 200 | 182.145µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:33:40 | 200 | 36.129µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:45 | 200 | 41.915µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:46 | 200 | 35.597µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:50 | 200 | 58.412µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:55 | 200 | 40.113µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:33:56 | 200 | 38.944µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:00 | 200 | 34.004µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:05 | 200 | 38.08µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:06 | 200 | 33.128µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:10 | 200 | 52.548µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:14.870Z","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/21 - 15:34:14 | 500 | 101.079µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:15 | 200 | 39.604µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:16 | 200 | 36.002µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:19.905Z","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/21 - 15:34:19 | 500 | 169.906µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:20 | 200 | 40.78µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:24.941Z","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/21 - 15:34:24 | 500 | 87.781µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:25 | 200 | 39.679µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:26 | 200 | 53.535µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:29.972Z","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/21 - 15:34:29 | 500 | 94.735µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:30 | 200 | 42.108µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:35.010Z","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/21 - 15:34:35 | 500 | 95.822µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:35 | 200 | 57.662µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:36 | 200 | 48.356µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:34:40.060Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"9e38e763-18cb-44d4-86d5-587a94e1563a","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:34:40.060Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"9e38e763-18cb-44d4-86d5-587a94e1563a","keyPrefix":"sk-oai-UgbW1VUrNf6i...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:34:40 | 201 | 11.356497ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:40 | 200 | 39.227µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:34:40.646Z","caller":"api_keys/service.go:150","message":"Created API key","user":"bob_sre","groups":["system:authenticated","Site-Reliability"],"id":"b302c870-12bb-455a-8ad7-55ebd9454c05","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:34:40.646Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"b302c870-12bb-455a-8ad7-55ebd9454c05","keyPrefix":"sk-oai-14nYiHOvORTp...","username":"bob_sre","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/21 - 15:34:40 | 201 | 2.028128ms | 100.64.0.2 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:34:40.867Z","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/21 - 15:34:40 | 500 | 127.366µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:45 | 200 | 40.055µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:45.895Z","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/21 - 15:34:45 | 500 | 91.616µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:46 | 200 | 39.368µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:34:50 | 200 | 51.604µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:50.924Z","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/21 - 15:34:50 | 500 | 116.151µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:55 | 200 | 46.582µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:34:55.954Z","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/21 - 15:34:55 | 500 | 97.36µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:34:56 | 200 | 39.072µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:00 | 200 | 36.297µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:00.981Z","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/21 - 15:35:00 | 500 | 87.72µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:05 | 200 | 35.14µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:35:06.021Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"7dd30238-028f-41d0-ac1b-7dbcbbba4134","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:35:06.021Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"7dd30238-028f-41d0-ac1b-7dbcbbba4134","keyPrefix":"sk-oai-z5dY0ZlvSHhq...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:35:06 | 201 | 2.901414ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:06 | 200 | 1.271781ms | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:35:06 | 200 | 523.344µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:35:06 | 200 | 125.059µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:35:06 | 200 | 20.878594ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:35:06 | 200 | 547.262µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:35:06 | 200 | 143.063µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:35:06 | 200 | 39.7µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:06.233Z","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/21 - 15:35:06 | 500 | 81.426µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:10 | 200 | 36.766µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:11.266Z","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/21 - 15:35:11 | 500 | 87.348µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:15 | 200 | 36.368µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:16 | 200 | 40.191µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:16.297Z","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/21 - 15:35:16 | 500 | 91.346µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:20 | 200 | 49.432µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:21.327Z","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/21 - 15:35:21 | 500 | 107.466µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:25 | 200 | 53.646µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:26 | 200 | 35.12µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:35:26.360Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"e1359c0b-48ff-4b97-bc59-3f9dfbff5d16","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:35:26.360Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"e1359c0b-48ff-4b97-bc59-3f9dfbff5d16","keyPrefix":"sk-oai-AzrFRkAobBuL...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:35:26 | 201 | 1.971519ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:35:26.384Z","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/21 - 15:35:26 | 500 | 116.681µs | 100.64.0.2 | DELETE "/v1/api-keys/e1359c0b-48ff-4b97-bc59-3f9dfbff5d16" [GIN] 2026/04/21 - 15:35:30 | 200 | 37.528µs | 10.134.0.2 | GET "/health" {"level":"warn","timestamp":"2026-04-21T15:35:31.423Z","caller":"api_keys/handler.go:296","message":"Unauthorized API key revocation attempt","requestingUser":"","keyOwner":"alice_lead","keyId":"e1359c0b-48ff-4b97-bc59-3f9dfbff5d16"} [GIN] 2026/04/21 - 15:35:31 | 404 | 5.808367ms | 100.64.0.3 | DELETE "/v1/api-keys/e1359c0b-48ff-4b97-bc59-3f9dfbff5d16" {"level":"error","timestamp":"2026-04-21T15:35:31.806Z","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/21 - 15:35:31 | 500 | 88.378µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:35 | 200 | 36.441µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:36 | 200 | 34.321µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:36.836Z","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/21 - 15:35:36 | 500 | 87.153µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:40 | 200 | 37.541µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:41.869Z","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/21 - 15:35:41 | 500 | 96.108µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:45 | 200 | 39.764µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:46 | 200 | 41.687µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:46.902Z","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/21 - 15:35:46 | 500 | 93.724µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:50 | 200 | 36.44µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:35:51.934Z","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/21 - 15:35:51 | 500 | 114.63µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:35:55 | 200 | 35.041µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:35:56 | 200 | 44.819µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:35:56.971Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"85965467-cd7d-46a3-abf3-b17b49fd44f5","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:35:56.971Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"85965467-cd7d-46a3-abf3-b17b49fd44f5","keyPrefix":"sk-oai-7wCwfR7xH9E1...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:35:56 | 201 | 2.147415ms | 100.64.0.2 | POST "/v1/api-keys" {"level":"info","timestamp":"2026-04-21T15:35:57.001Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Site-Reliability"],"id":"d4fb9207-4adf-4f64-9dc1-3bbe5db2f659","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:35:57.001Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"d4fb9207-4adf-4f64-9dc1-3bbe5db2f659","keyPrefix":"sk-oai-14u02oAxz2A9...","username":"","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/21 - 15:35:57 | 201 | 1.702357ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:35:57.096Z","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/21 - 15:35:57 | 500 | 95.29µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:36:00 | 200 | 36.11µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:36:02.130Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"bd9623f5-257f-4e5a-9f62-569d09755152","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:36:02.130Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"bd9623f5-257f-4e5a-9f62-569d09755152","keyPrefix":"sk-oai-1bNQLjxDV5kI...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:36:02 | 201 | 2.030173ms | 100.64.0.2 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:36:02.162Z","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/21 - 15:36:02 | 500 | 86.897µs | 100.64.0.3 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:05 | 200 | 38.801µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:06 | 200 | 39.315µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:07.198Z","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/21 - 15:36:07 | 500 | 86.215µs | 100.64.0.4 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:10 | 200 | 32.23µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:12.228Z","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/21 - 15:36:12 | 500 | 91.438µs | 100.64.0.3 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:15 | 200 | 37.944µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:16 | 200 | 32.895µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:17.261Z","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/21 - 15:36:17 | 500 | 99.931µs | 100.64.0.2 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:20 | 200 | 42.254µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:22.293Z","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/21 - 15:36:22 | 500 | 95.791µs | 100.64.0.2 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:25 | 200 | 37.821µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:26 | 200 | 38.077µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:27.327Z","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/21 - 15:36:27 | 500 | 93.364µs | 100.64.0.4 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:30 | 200 | 37.591µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:36:32.361Z","caller":"api_keys/store_postgres.go:460","message":"Revoked API key","id":"bd9623f5-257f-4e5a-9f62-569d09755152"} {"level":"info","timestamp":"2026-04-21T15:36:32.361Z","caller":"api_keys/handler.go:317","message":"Revoked API key","keyId":"bd9623f5-257f-4e5a-9f62-569d09755152","revokedBy":"alice_lead"} [GIN] 2026/04/21 - 15:36:32 | 200 | 2.969217ms | 100.64.0.3 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" {"level":"error","timestamp":"2026-04-21T15:36:32.391Z","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/21 - 15:36:32 | 500 | 94.932µs | 100.64.0.4 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:35 | 200 | 42.552µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:36 | 200 | 42.679µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:37.419Z","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/21 - 15:36:37 | 500 | 118.244µs | 100.64.0.2 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:40 | 200 | 52.155µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:42.452Z","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/21 - 15:36:42 | 500 | 88.133µs | 100.64.0.3 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:45 | 200 | 40.131µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:46 | 200 | 41.166µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:47.486Z","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/21 - 15:36:47 | 500 | 98.806µs | 100.64.0.4 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:50 | 200 | 38.695µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:36:52.519Z","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/21 - 15:36:52 | 500 | 98.323µs | 100.64.0.3 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" [GIN] 2026/04/21 - 15:36:55 | 200 | 34.101µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:36:56 | 200 | 36.91µs | 10.134.0.2 | GET "/health" {"level":"warn","timestamp":"2026-04-21T15:36:57.555Z","caller":"api_keys/handler.go:296","message":"Unauthorized API key revocation attempt","requestingUser":"","keyOwner":"alice_lead","keyId":"bd9623f5-257f-4e5a-9f62-569d09755152"} [GIN] 2026/04/21 - 15:36:57 | 404 | 5.439692ms | 100.64.0.2 | DELETE "/v1/api-keys/bd9623f5-257f-4e5a-9f62-569d09755152" {"level":"info","timestamp":"2026-04-21T15:36:57.661Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"271e9252-4348-4839-927e-f88f2f214ad3","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:36:57.661Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"271e9252-4348-4839-927e-f88f2f214ad3","keyPrefix":"sk-oai-2vvrnpUm6ygg...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:36:57 | 201 | 2.137752ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:36:57 | 200 | 602.474µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:36:57 | 200 | 705.982µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:36:57 | 200 | 354.663µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:36:57 | 200 | 20.398745ms | 100.64.0.2 | GET "/v1/models" {"level":"error","timestamp":"2026-04-21T15:36:57.816Z","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/21 - 15:36:57 | 500 | 87.01µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:00 | 200 | 39.693µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:02.851Z","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/21 - 15:37:02 | 500 | 106.506µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:05 | 200 | 35.779µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:06 | 200 | 39.344µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:07.889Z","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/21 - 15:37:07 | 500 | 86.149µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:10 | 200 | 59.522µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:12.921Z","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/21 - 15:37:12 | 500 | 94.5µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:15 | 200 | 40.192µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:16 | 200 | 44.676µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:17.959Z","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/21 - 15:37:17 | 500 | 92.487µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:20 | 200 | 67.944µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:22.997Z","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/21 - 15:37:22 | 500 | 131.91µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:25 | 200 | 40.322µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:26 | 200 | 32.898µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:28.042Z","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/21 - 15:37:28 | 500 | 102.592µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:30 | 200 | 34.937µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:33.073Z","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/21 - 15:37:33 | 500 | 97.767µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:35 | 200 | 37.289µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:36 | 200 | 33.797µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:38.108Z","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/21 - 15:37:38 | 500 | 93.806µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:40 | 200 | 40.277µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:43.141Z","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/21 - 15:37:43 | 500 | 89.486µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:45 | 200 | 42.985µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:46 | 200 | 44.988µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:48.174Z","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/21 - 15:37:48 | 500 | 117.981µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:50 | 200 | 55.258µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:53.207Z","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/21 - 15:37:53 | 500 | 84.546µs | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:37:53.314Z","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/21 - 15:37:53 | 500 | 93.01µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:37:55 | 200 | 48.926µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:37:56 | 200 | 54.811µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:37:58.347Z","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/21 - 15:37:58 | 500 | 98.046µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:38:00 | 200 | 38.413µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:38:03.380Z","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/21 - 15:38:03 | 500 | 90.052µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:38:05 | 200 | 37.533µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:38:06 | 200 | 33.114µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:38:08.415Z","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/21 - 15:38:08 | 500 | 87.907µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:38:10 | 200 | 34.705µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:38:13.454Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"e07d172a-1ee1-40b4-8b7e-c2dc2adf248f","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:38:13.454Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"e07d172a-1ee1-40b4-8b7e-c2dc2adf248f","keyPrefix":"sk-oai-TrwCeQYbURPN...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:38:13 | 201 | 4.330066ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:38:13 | 200 | 665.293µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:38:13 | 200 | 473.112µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:38:13 | 200 | 127.729µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:38:13 | 200 | 21.181684ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:38:13 | 200 | 467.084µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:38:13 | 200 | 430.235µs | 10.132.0.32 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:38:13 | 200 | 110.68µs | 10.132.0.32 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:38:13 | 200 | 9.326083ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:38:13.654Z","caller":"api_keys/service.go:150","message":"Created API key","user":"bob_sre","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"9250f2b7-b1c7-465f-be37-6a309325d66c","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:38:13.654Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"9250f2b7-b1c7-465f-be37-6a309325d66c","keyPrefix":"sk-oai-ah6mixSrIwje...","username":"bob_sre","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:38:13 | 201 | 1.672001ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:38:15 | 200 | 36.969µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:38:16 | 200 | 35.964µs | 10.134.0.2 | GET "/health"