Open
Description
Describe the improvement you'd like to request
Due to recent changes introduced on main
(which are currently unreleased, but will be released as part of 4.0), converting a Cedar schema to JSON will now introduce "EntityOrCommon" types. These seems like an internal detail that is not useful to expose to users. Is there a way to hide this detail when returning JSON data from SchemaFragment::to_json_string
?
As an example, here's a snippet from the translation of the TinyTodo schema:
{
"": {
"commonTypes": {
"Task": {
"type": "Record",
"attributes": {
"id": {
"type": "EntityOrCommon",
"name": "Long"
},
"name": {
"type": "EntityOrCommon",
"name": "String"
},
"state": {
"type": "EntityOrCommon",
"name": "String"
}
}
},
"Tasks": {
"type": "Set",
"element": {
"type": "EntityOrCommon",
"name": "Task"
}
}
},
"entityTypes": {
"Team": {
"memberOfTypes": [
"Team",
"Application"
]
},
"User": {
"memberOfTypes": [
"Team",
"Application"
],
"shape": {
"type": "Record",
"attributes": {
"joblevel": {
"type": "EntityOrCommon",
"name": "Long"
},
"location": {
"type": "EntityOrCommon",
"name": "String"
}
}
}
},
...
The more natural way for a user to write this would be:
{
"": {
"commonTypes": {
"Task": {
"type": "Record",
"attributes": {
"id": {
"type": "Long"
},
"name": {
"type": "String"
},
"state": {
"type": "String"
}
}
},
"Tasks": {
"type": "Set",
"element": {
"type": "Task"
}
}
},
"entityTypes": {
"Team": {
"memberOfTypes": [
"Team",
"Application"
]
},
"User": {
"memberOfTypes": [
"Team",
"Application"
],
"shape": {
"type": "Record",
"attributes": {
"joblevel": {
"type": "Long"
},
"location": {
"type": "String"
}
}
}
},
...
Describe alternatives you've considered
No response
Additional context
Related: the Display
trait for the Cedar schema format is also not as pretty as it could be. See #682.
Is this something that you'd be interested in working on?
- 👋 I may be able to implement this internal improvement
-
⚠️ This feature might incur a breaking change