#[non_exhaustive]pub struct RestrictFormats {
pub infer_from_meta_schema: bool,
pub allowed_formats: BTreeSet<Cow<'static, str>>,
}
Expand description
Removes any format
values that are not defined by the JSON Schema standard or explicitly
allowed by a custom list.
This also applies to subschemas.
By default, this will infer the version of JSON Schema from the schema’s $schema
property,
and no additional formats will be allowed (even when the JSON schema allows nonstandard
formats).
§Example
use schemars::json_schema;
use schemars::transform::{RestrictFormats, Transform};
let mut schema = schemars::json_schema!({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "string",
"format": "uuid"
},
{
"type": "string",
"format": "allowed-custom-format"
},
{
"type": "string",
"format": "forbidden-custom-format"
}
]
});
let mut transform = RestrictFormats::default();
transform.allowed_formats.insert("allowed-custom-format".into());
transform.transform(&mut schema);
assert_eq!(
schema,
json_schema!({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
// "uuid" format is defined in draft 2020-12.
"type": "string",
"format": "uuid"
},
{
// "uuid" format is not defined in draft-07, so is removed from this subschema.
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "string"
},
{
// "allowed-custom-format" format was present in `allowed_formats`...
"type": "string",
"format": "allowed-custom-format"
},
{
// ...but "forbidden-custom-format" format was not, so is also removed.
"type": "string"
}
]
})
);
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.infer_from_meta_schema: bool
Whether to read the schema’s $schema
property to determine which version of JSON Schema
is being used, and allow only formats defined in that standard. If this is true
but the
JSON Schema version can’t be determined because $schema
is missing or unknown, then no
format
values will be removed.
If this is set to false
, then only the formats explicitly included in
allowed_formats
will be allowed.
By default, this is true
.
allowed_formats: BTreeSet<Cow<'static, str>>
Values of the format
property in schemas that will always be allowed, regardless of the
inferred version of JSON Schema.
Trait Implementations§
Source§impl Clone for RestrictFormats
impl Clone for RestrictFormats
Source§fn clone(&self) -> RestrictFormats
fn clone(&self) -> RestrictFormats
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more