Run the bastard like this:
#[derive(facet_derive::Facet)]
struct ApiResponse {
status_message: String,
payload: ApiResponsePayload,
}
#[derive(facet_derive::Facet)]
struct ApiResponsePayload {
payload_was_useful: bool,
}
println!(
"{}",
serde_json::to_string_pretty(&schema::<ApiResponse>()).unwrap()
);
And you will see:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ApiResponse",
"type": "object",
"required": [
"status_message",
"payload"
],
"properties": {
"payload": {
"$ref": "#/definitions/ApiResponsePayload"
},
"status_message": {
"type": "string"
}
},
"definitions": {
"ApiResponsePayload": {
"type": "object",
"required": [
"payload_was_useful"
],
"properties": {
"payload_was_useful": {
"type": "boolean"
}
}
}
}
}