///|
fn sro_meta_specs() -> Array[TypeSpec] {
[
spec(
"relationship",
Sro,
merge_fields(common_sro_fields(), [
field("relationship_type", true, String),
field("description", false, String),
field("source_ref", true, Identifier),
field("target_ref", true, Identifier),
field("start_time", false, Timestamp),
field("stop_time", false, Timestamp),
]),
[],
),
spec(
"sighting",
Sro,
merge_fields(common_sro_fields(), [
field("description", false, String),
field("first_seen", false, Timestamp),
field("last_seen", false, Timestamp),
field("count", false, NonNegativeInteger),
field("sighting_of_ref", true, Identifier),
field("observed_data_refs", false, IdentifierListOf("observed-data")),
field("where_sighted_refs", false, IdentifierList),
field("summary", false, Boolean),
]),
[],
),
spec(
"marking-definition",
Meta,
[
field("type", true, String),
field("spec_version", false, String),
field("id", true, Identifier),
field("created_by_ref", false, IdentifierOf("identity")),
field("created", true, Timestamp),
field("external_references", false, ExternalReferences),
field(
"object_marking_refs",
false,
IdentifierListOf("marking-definition"),
),
field("granular_markings", false, GranularMarkings),
field("definition_type", true, String),
field("name", false, String),
field("definition", true, Dictionary),
],
[],
),
spec(
"language-content",
Meta,
merge_fields(common_sdo_fields(), [
field("object_ref", true, Identifier),
field("object_modified", false, Timestamp),
field("contents", true, Dictionary),
]),
[],
),
spec(
"extension-definition",
Meta,
merge_fields(common_sdo_fields(), [
field("name", true, String),
field("description", false, String),
field("schema", true, String),
field("version", true, String),
field("extension_types", true, StringList),
field("extension_properties", false, StringList),
]),
[],
),
spec(
"bundle",
Bundle,
[
field("type", true, String),
field("id", true, Identifier),
field("objects", false, ObjectList),
],
[],
),
]
}
///|
fn custom_type_spec(type_name : String) -> TypeSpec {
spec(type_name, Custom, common_sdo_fields(), [])
}