Skip to content

Commit f54858e

Browse files
fix: handle "optional" marker in ucp_request schema preprocessing (#33)
Co-authored-by: Federico D'Amato <damaz@google.com>
1 parent 6f9141c commit f54858e

5 files changed

Lines changed: 10 additions & 4 deletions

File tree

preprocess_schemas.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,12 +306,18 @@ def eval_prop_inclusion(name, data, op, base_required):
306306
include = False
307307
elif marker == "required":
308308
is_required = True
309+
elif marker == "optional":
310+
# A simple string "optional" marker overrides the base schema's required list for all operations.
311+
is_required = False
309312
elif isinstance(marker, dict):
310313
val = marker.get(op)
311314
if val == "omit" or val is None:
312315
include = False
313316
elif val == "required":
314317
is_required = True
318+
elif val == "optional":
319+
# Override base schema's required list when a field is explicitly marked optional for a specific operation.
320+
is_required = False
315321

316322
return include, is_required
317323

src/ucp_sdk/models/schemas/shopping/types/fulfillment_method_create_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class FulfillmentMethodCreateRequest(BaseModel):
4040
"""
4141
Fulfillment method type.
4242
"""
43-
line_item_ids: list[str]
43+
line_item_ids: list[str] | None = None
4444
"""
4545
Line item IDs fulfilled via this method.
4646
"""

src/ucp_sdk/models/schemas/shopping/types/line_item_update_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class LineItemUpdateRequest(BaseModel):
3131
model_config = ConfigDict(
3232
extra="allow",
3333
)
34-
id: str
34+
id: str | None = None
3535
item: item_update_request.ItemUpdateRequest
3636
quantity: int = Field(..., ge=1)
3737
"""

src/ucp_sdk/models/schemas/shopping/types/shipping_destination_create_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ShippingDestinationCreateRequest(PostalAddress):
3131
model_config = ConfigDict(
3232
extra="allow",
3333
)
34-
id: str
34+
id: str | None = None
3535
"""
3636
ID specific to this shipping destination.
3737
"""

src/ucp_sdk/models/schemas/shopping/types/shipping_destination_update_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ShippingDestinationUpdateRequest(PostalAddress):
3131
model_config = ConfigDict(
3232
extra="allow",
3333
)
34-
id: str
34+
id: str | None = None
3535
"""
3636
ID specific to this shipping destination.
3737
"""

0 commit comments

Comments
 (0)