diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index fa66ef1bdb..cf1d93feed 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -1422,100 +1422,6 @@ const docTemplate = `{ ] } }, - "/api/v2/aibridge/coderd-keys": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "Enterprise" - ], - "summary": "List AI Gateway coderd keys", - "operationId": "list-ai-gateway-coderd-keys", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/codersdk.AIGatewayCoderdKey" - } - } - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "Enterprise" - ], - "summary": "Create AI Gateway coderd key", - "operationId": "create-ai-gateway-coderd-key", - "parameters": [ - { - "description": "Create AI Gateway coderd key request", - "name": "request", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/codersdk.CreateAIGatewayCoderdKeyRequest" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/codersdk.CreateAIGatewayCoderdKeyResponse" - } - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - } - }, - "/api/v2/aibridge/coderd-keys/{key}": { - "delete": { - "tags": [ - "Enterprise" - ], - "summary": "Delete AI Gateway coderd key", - "operationId": "delete-ai-gateway-coderd-key", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Key ID", - "name": "key", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content" - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - } - }, "/api/v2/aibridge/interceptions": { "get": { "produces": [ @@ -1568,6 +1474,100 @@ const docTemplate = `{ ] } }, + "/api/v2/aibridge/keys": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "List AI Gateway keys", + "operationId": "list-ai-gatewaykeys", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/codersdk.AIGatewayKey" + } + } + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Enterprise" + ], + "summary": "Create AI Gateway key", + "operationId": "create-ai-gateway-key", + "parameters": [ + { + "description": "Create AI Gateway key request", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.CreateAIGatewayKeyRequest" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/codersdk.CreateAIGatewayKeyResponse" + } + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + } + }, + "/api/v2/aibridge/keys/{key}": { + "delete": { + "tags": [ + "Enterprise" + ], + "summary": "Delete AI Gateway key", + "operationId": "delete-ai-gateway-key", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Key ID", + "name": "key", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content" + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + } + }, "/api/v2/aibridge/models": { "get": { "produces": [ @@ -15142,7 +15142,7 @@ const docTemplate = `{ } } }, - "codersdk.AIGatewayCoderdKey": { + "codersdk.AIGatewayKey": { "type": "object", "properties": { "created_at": { @@ -17699,7 +17699,7 @@ const docTemplate = `{ } } }, - "codersdk.CreateAIGatewayCoderdKeyRequest": { + "codersdk.CreateAIGatewayKeyRequest": { "type": "object", "required": [ "name" @@ -17710,7 +17710,7 @@ const docTemplate = `{ } } }, - "codersdk.CreateAIGatewayCoderdKeyResponse": { + "codersdk.CreateAIGatewayKeyResponse": { "type": "object", "properties": { "created_at": { diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 2a0823a023..7a4cda5fe1 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -1255,88 +1255,6 @@ ] } }, - "/api/v2/aibridge/coderd-keys": { - "get": { - "produces": ["application/json"], - "tags": ["Enterprise"], - "summary": "List AI Gateway coderd keys", - "operationId": "list-ai-gateway-coderd-keys", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/codersdk.AIGatewayCoderdKey" - } - } - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - }, - "post": { - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["Enterprise"], - "summary": "Create AI Gateway coderd key", - "operationId": "create-ai-gateway-coderd-key", - "parameters": [ - { - "description": "Create AI Gateway coderd key request", - "name": "request", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/codersdk.CreateAIGatewayCoderdKeyRequest" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/codersdk.CreateAIGatewayCoderdKeyResponse" - } - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - } - }, - "/api/v2/aibridge/coderd-keys/{key}": { - "delete": { - "tags": ["Enterprise"], - "summary": "Delete AI Gateway coderd key", - "operationId": "delete-ai-gateway-coderd-key", - "parameters": [ - { - "type": "string", - "format": "uuid", - "description": "Key ID", - "name": "key", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content" - } - }, - "security": [ - { - "CoderSessionToken": [] - } - ] - } - }, "/api/v2/aibridge/interceptions": { "get": { "produces": ["application/json"], @@ -1385,6 +1303,88 @@ ] } }, + "/api/v2/aibridge/keys": { + "get": { + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "List AI Gateway keys", + "operationId": "list-ai-gatewaykeys", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/codersdk.AIGatewayKey" + } + } + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + }, + "post": { + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["Enterprise"], + "summary": "Create AI Gateway key", + "operationId": "create-ai-gateway-key", + "parameters": [ + { + "description": "Create AI Gateway key request", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/codersdk.CreateAIGatewayKeyRequest" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/codersdk.CreateAIGatewayKeyResponse" + } + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + } + }, + "/api/v2/aibridge/keys/{key}": { + "delete": { + "tags": ["Enterprise"], + "summary": "Delete AI Gateway key", + "operationId": "delete-ai-gateway-key", + "parameters": [ + { + "type": "string", + "format": "uuid", + "description": "Key ID", + "name": "key", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content" + } + }, + "security": [ + { + "CoderSessionToken": [] + } + ] + } + }, "/api/v2/aibridge/models": { "get": { "produces": ["application/json"], @@ -13522,7 +13522,7 @@ } } }, - "codersdk.AIGatewayCoderdKey": { + "codersdk.AIGatewayKey": { "type": "object", "properties": { "created_at": { @@ -15992,7 +15992,7 @@ } } }, - "codersdk.CreateAIGatewayCoderdKeyRequest": { + "codersdk.CreateAIGatewayKeyRequest": { "type": "object", "required": ["name"], "properties": { @@ -16001,7 +16001,7 @@ } } }, - "codersdk.CreateAIGatewayCoderdKeyResponse": { + "codersdk.CreateAIGatewayKeyResponse": { "type": "object", "properties": { "created_at": { diff --git a/coderd/database/querier_test.go b/coderd/database/querier_test.go index 3139f70934..d38177675d 100644 --- a/coderd/database/querier_test.go +++ b/coderd/database/querier_test.go @@ -14740,13 +14740,13 @@ func TestAIGatewayKeysTableConstraints(t *testing.T) { db, _ := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitMedium) - preExsiting := database.InsertAIGatewayKeyParams{ + preExisting := database.InsertAIGatewayKeyParams{ ID: uuid.New(), Name: "name", SecretPrefix: "key_test__1", HashedSecret: []byte("first-secret"), } - _, err := db.InsertAIGatewayKey(ctx, preExsiting) + _, err := db.InsertAIGatewayKey(ctx, preExisting) require.NoError(t, err) tests := []struct { @@ -14757,17 +14757,17 @@ func TestAIGatewayKeysTableConstraints(t *testing.T) { }{ { name: "duplicate name", - params: aiGatewayKeyParams(preExsiting.Name, "key_test002"), + params: aiGatewayKeyParams(preExisting.Name, "key_test002"), expectUniqueErr: database.UniqueAiGatewayKeysNameIndex, }, { name: "duplicate secret prefix", - params: aiGatewayKeyParams("different-key", preExsiting.SecretPrefix), + params: aiGatewayKeyParams("different-key", preExisting.SecretPrefix), expectUniqueErr: database.UniqueAiGatewayKeysSecretPrefixIndex, }, { name: "duplicate hashed secret", - params: database.InsertAIGatewayKeyParams{ID: uuid.New(), Name: "other-name", SecretPrefix: "key_1234567", HashedSecret: preExsiting.HashedSecret}, + params: database.InsertAIGatewayKeyParams{ID: uuid.New(), Name: "other-name", SecretPrefix: "key_1234567", HashedSecret: preExisting.HashedSecret}, expectUniqueErr: database.UniqueAiGatewayKeysHashedSecretIndex, }, { diff --git a/docs/reference/api/enterprise.md b/docs/reference/api/enterprise.md index b1c7fa6b0a..c2d193aa32 100644 --- a/docs/reference/api/enterprise.md +++ b/docs/reference/api/enterprise.md @@ -84,18 +84,18 @@ curl -X GET http://coder-server:8080/.well-known/oauth-protected-resource \ |--------|---------------------------------------------------------|-------------|------------------------------------------------------------------------------------------------| | 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.OAuth2ProtectedResourceMetadata](schemas.md#codersdkoauth2protectedresourcemetadata) | -## List AI Gateway coderd keys +## List AI Gateway keys ### Code samples ```shell # Example request using curl -curl -X GET http://coder-server:8080/api/v2/aibridge/coderd-keys \ +curl -X GET http://coder-server:8080/api/v2/aibridge/keys \ -H 'Accept: application/json' \ -H 'Coder-Session-Token: API_KEY' ``` -`GET /api/v2/aibridge/coderd-keys` +`GET /api/v2/aibridge/keys` ### Example responses @@ -115,11 +115,11 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/coderd-keys \ ### Responses -| Status | Meaning | Description | Schema | -|--------|---------------------------------------------------------|-------------|-------------------------------------------------------------------------------| -| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | array of [codersdk.AIGatewayCoderdKey](schemas.md#codersdkaigatewaycoderdkey) | +| Status | Meaning | Description | Schema | +|--------|---------------------------------------------------------|-------------|-------------------------------------------------------------------| +| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | array of [codersdk.AIGatewayKey](schemas.md#codersdkaigatewaykey) | -