diff --git a/doc/api/garage-admin-v2.json b/doc/api/garage-admin-v2.json index 9379fee5..fbb1f6c5 100644 --- a/doc/api/garage-admin-v2.json +++ b/doc/api/garage-admin-v2.json @@ -554,13 +554,25 @@ "name": "id", "in": "path", "description": "Admin API token ID", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } }, { "name": "search", "in": "path", "description": "Partial token ID or name to search for", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } } ], "responses": { @@ -634,19 +646,37 @@ "name": "id", "in": "path", "description": "Exact bucket ID to look up", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } }, { "name": "globalAlias", "in": "path", "description": "Global alias of bucket to look up", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } }, { "name": "search", "in": "path", "description": "Partial ID or alias to search for", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } } ], "responses": { @@ -795,19 +825,34 @@ "name": "id", "in": "path", "description": "Access key ID", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } }, { "name": "search", "in": "path", "description": "Partial key ID or name to search for", - "required": true + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } }, { "name": "showSecretKey", "in": "path", "description": "Whether to return the secret access key", - "required": true + "required": true, + "schema": { + "type": "boolean" + } } ], "responses": { diff --git a/src/api/admin/api.rs b/src/api/admin/api.rs index fde304f4..3694fd67 100644 --- a/src/api/admin/api.rs +++ b/src/api/admin/api.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use paste::paste; use serde::{Deserialize, Serialize}; -use utoipa::ToSchema; +use utoipa::{IntoParams, ToSchema}; use garage_rpc::*; @@ -303,9 +303,12 @@ pub struct ListAdminTokensResponse(pub Vec); // ---- GetAdminTokenInfo ---- -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)] +#[serde(rename_all = "camelCase")] pub struct GetAdminTokenInfoRequest { + /// Admin API token ID pub id: Option, + /// Partial token ID or name to search for pub search: Option, } @@ -634,10 +637,15 @@ pub struct ListKeysResponseItem { // ---- GetKeyInfo ---- -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)] +#[serde(rename_all = "camelCase")] pub struct GetKeyInfoRequest { + /// Access key ID pub id: Option, + /// Partial key ID or name to search for pub search: Option, + /// Whether to return the secret access key + #[serde(default)] pub show_secret_key: bool, } @@ -761,10 +769,14 @@ pub struct BucketLocalAlias { // ---- GetBucketInfo ---- -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)] +#[serde(rename_all = "camelCase")] pub struct GetBucketInfoRequest { + /// Exact bucket ID to look up pub id: Option, + /// Global alias of bucket to look up pub global_alias: Option, + /// Partial ID or alias to search for pub search: Option, } diff --git a/src/api/admin/openapi.rs b/src/api/admin/openapi.rs index 77d8dce8..b7ffdcf1 100644 --- a/src/api/admin/openapi.rs +++ b/src/api/admin/openapi.rs @@ -57,7 +57,6 @@ do not correspond to an actual website. )] fn CheckDomain() -> () {} - // ********************************************** // Cluster operations // ********************************************** @@ -141,10 +140,7 @@ fn ListAdminTokens() -> () {} Return information about a specific admin API token. You can search by specifying the exact token identifier (`id`) or by specifying a pattern (`search`). ", - params( - ("id", description = "Admin API token ID"), - ("search", description = "Partial token ID or name to search for"), - ), + params(GetAdminTokenInfoRequest), responses( (status = 200, description = "Information about the admin token", body = GetAdminTokenInfoResponse), (status = 500, description = "Internal server error") @@ -337,11 +333,7 @@ You can search by specifying the exact key identifier (`id`) or by specifying a For confidentiality reasons, the secret key is not returned by default: you must pass the `showSecretKey` query parameter to get it. ", - params( - ("id", description = "Access key ID"), - ("search", description = "Partial key ID or name to search for"), - ("showSecretKey", description = "Whether to return the secret access key"), - ), + params(GetKeyInfoRequest), responses( (status = 200, description = "Information about the access key", body = GetKeyInfoResponse), (status = 500, description = "Internal server error") @@ -434,11 +426,7 @@ It includes its aliases, its web configuration, keys that have some permissions on it, some statistics (number of objects, size), number of dangling multipart uploads, and its quotas (if any). ", - params( - ("id", description = "Exact bucket ID to look up"), - ("globalAlias", description = "Global alias of bucket to look up"), - ("search", description = "Partial ID or alias to search for"), - ), + params(GetBucketInfoRequest), responses( (status = 200, description = "Returns exhaustive information about the bucket", body = GetBucketInfoResponse), (status = 500, description = "Internal server error")