diff --git a/crates/api-types/src/users.rs b/crates/api-types/src/users.rs index 41ad018..b04f3fc 100644 --- a/crates/api-types/src/users.rs +++ b/crates/api-types/src/users.rs @@ -83,3 +83,14 @@ pub struct ProfileResponse { pub bio: Option, pub avatar_url: Option, } + +#[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)] +pub struct ProfileFieldDto { + pub name: String, + pub value: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)] +pub struct UpdateProfileFieldsRequest { + pub fields: Vec, +} diff --git a/crates/presentation/src/handlers/api.rs b/crates/presentation/src/handlers/api.rs index 4a08f4d..39bbd6f 100644 --- a/crates/presentation/src/handlers/api.rs +++ b/crates/presentation/src/handlers/api.rs @@ -540,6 +540,17 @@ pub async fn update_profile_handler( } } +#[utoipa::path( + put, path = "/api/v1/profile/fields", + request_body = api_types::UpdateProfileFieldsRequest, + responses( + (status = 204, description = "Profile fields updated"), + (status = 400, description = "Invalid input"), + (status = 401, description = "Unauthorized"), + (status = 500, description = "Internal server error"), + ), + security(("bearer_auth" = [])) +)] pub async fn update_profile_fields_handler( State(state): State, AuthenticatedUser(user_id): AuthenticatedUser, diff --git a/crates/presentation/src/openapi/users.rs b/crates/presentation/src/openapi/users.rs index fcf9191..0686708 100644 --- a/crates/presentation/src/openapi/users.rs +++ b/crates/presentation/src/openapi/users.rs @@ -1,5 +1,6 @@ use api_types::{ - ProfileResponse, UserProfileResponse, UserStatsDto, UserSummaryDto, UsersResponse, + ProfileFieldDto, ProfileResponse, UpdateProfileFieldsRequest, UserProfileResponse, + UserStatsDto, UserSummaryDto, UsersResponse, }; use utoipa::OpenApi; @@ -10,6 +11,7 @@ use utoipa::OpenApi; crate::handlers::api::get_user_profile, crate::handlers::api::get_profile, crate::handlers::api::update_profile_handler, + crate::handlers::api::update_profile_fields_handler, ), components(schemas( UsersResponse, @@ -17,6 +19,8 @@ use utoipa::OpenApi; UserProfileResponse, UserStatsDto, ProfileResponse, + UpdateProfileFieldsRequest, + ProfileFieldDto, )) )] pub struct UsersDoc;