Skip to content

Commit ca369f7

Browse files
phrfpeixotop1c2u
authored andcommitted
Creating read_only and write_only properties on the Schema
1 parent baf042c commit ca369f7

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

openapi_core/schema/schemas/factories.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ def create(self, schema_spec):
4646
exclusive_maximum = schema_deref.get('exclusiveMaximum', False)
4747
min_properties = schema_deref.get('minProperties', None)
4848
max_properties = schema_deref.get('maxProperties', None)
49+
read_only = schema_deref.get('readOnly', False)
50+
write_only = schema_deref.get('writeOnly', False)
4951

5052
extensions = self.extensions_generator.generate(schema_deref)
5153

@@ -81,7 +83,7 @@ def create(self, schema_spec):
8183
exclusive_maximum=exclusive_maximum,
8284
exclusive_minimum=exclusive_minimum,
8385
min_properties=min_properties, max_properties=max_properties,
84-
extensions=extensions,
86+
read_only=read_only, write_only=write_only, extensions=extensions,
8587
_source=schema_deref,
8688
)
8789

openapi_core/schema/schemas/models.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ def __init__(
2626
min_length=None, max_length=None, pattern=None, unique_items=False,
2727
minimum=None, maximum=None, multiple_of=None,
2828
exclusive_minimum=False, exclusive_maximum=False,
29-
min_properties=None, max_properties=None, extensions=None,
29+
min_properties=None, max_properties=None,
30+
read_only=False, write_only=False, extensions=None,
3031
_source=None):
3132
self.type = SchemaType(schema_type)
3233
self.properties = properties and dict(properties) or {}
@@ -56,6 +57,11 @@ def __init__(
5657
if min_properties is not None else None
5758
self.max_properties = int(max_properties)\
5859
if max_properties is not None else None
60+
self.read_only = read_only
61+
self.write_only = write_only
62+
63+
if self.read_only and self.write_only:
64+
raise OpenAPISchemaError("Schema cannot be readOnly AND writeOnly")
5965

6066
self.extensions = extensions and dict(extensions) or {}
6167

0 commit comments

Comments
 (0)