feat(api): enum-typed visibility/data_type/kind + open-map fields in OpenAPI (#24 #29)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 20:14:30 +02:00
parent d3c33a6c5d
commit 5a72f85989
5 changed files with 39 additions and 11 deletions
+4 -2
View File
@@ -40,9 +40,10 @@ pub(crate) struct AdminObjectView {
/// `YYYY-MM-DD` or null.
pub recording_date: Option<String>,
/// "draft" | "internal" | "public".
#[schema(value_type = domain::Visibility)]
pub visibility: String,
/// Flexible field values (key -> value).
#[schema(value_type = Object)]
#[schema(value_type = std::collections::HashMap<String, serde_json::Value>)]
pub fields: serde_json::Value,
}
@@ -162,7 +163,6 @@ pub(crate) struct ObjectCreateRequest {
pub recorder: Option<String>,
pub recording_date: Option<String>,
/// "draft" | "internal" (public is rejected — publish via the visibility endpoint).
#[schema(value_type = String)]
pub visibility: Visibility,
}
@@ -360,8 +360,10 @@ pub(crate) async fn delete_object(
pub(crate) struct FieldDefinitionView {
pub key: String,
/// "text" | "localized_text" | "integer" | "date" | "boolean" | "term" | "authority".
#[schema(value_type = domain::DataType)]
pub data_type: String,
pub vocabulary_id: Option<String>,
#[schema(value_type = Option<domain::AuthorityKind>)]
pub authority_kind: Option<String>,
pub required: bool,
pub group: Option<String>,