{
'type' => 'object',
'properties' => {
'projectId' => {
'type' => 'string'
},
'accountId' => {
'type' => 'string'
},
'groups' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'policy' => {
'type' => 'string'
},
'trafficAllocation' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'entityId' => {
'type' => 'string'
},
'endOfRange' => {
'type' => 'integer'
}
},
'required' => %w[
entityId
endOfRange
]
}
},
'experiments' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'layerId' => {
'type' => 'string'
},
'key' => {
'type' => 'string'
},
'status' => {
'type' => 'string'
},
'variations' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'key' => {
'type' => 'string'
}
},
'required' => %w[
id
key
]
}
},
'trafficAllocation' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'entityId' => {
'type' => 'string'
},
'endOfRange' => {
'type' => 'integer'
}
},
'required' => %w[
entityId
endOfRange
]
}
},
'audienceIds' => {
'type' => 'array',
'items' => {
'type' => 'string'
}
},
'forcedVariations' => {
'type' => 'object'
}
},
'required' => %w[
id
layerId
key
status
variations
trafficAllocation
audienceIds
forcedVariations
]
}
}
},
'required' => %w[
id
policy
trafficAllocation
experiments
]
}
},
'experiments' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'key' => {
'type' => 'string'
},
'status' => {
'type' => 'string'
},
'layerId' => {
'type' => 'string'
},
'variations' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'key' => {
'type' => 'string'
}
},
'required' => %w[
id
key
]
}
},
'trafficAllocation' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'entityId' => {
'type' => 'string'
},
'endOfRange' => {
'type' => 'integer'
}
},
'required' => %w[
entityId
endOfRange
]
}
},
'audienceIds' => {
'type' => 'array',
'items' => {
'type' => 'string'
}
},
'forcedVariations' => {
'type' => 'object'
}
},
'required' => %w[
id
key
variations
trafficAllocation
audienceIds
forcedVariations
status
layerId
]
}
},
'events' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'key' => {
'type' => 'string'
},
'experimentIds' => {
'type' => 'array',
'items' => {
'type' => 'string'
}
},
'id' => {
'type' => 'string'
}
},
'required' => %w[
key
experimentIds
id
]
}
},
'audiences' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'name' => {
'type' => 'string'
},
'conditions' => {
'type' => 'string'
}
},
'required' => %w[
id
name
conditions
]
}
},
'attributes' => {
'type' => 'array',
'items' => {
'type' => 'object',
'properties' => {
'id' => {
'type' => 'string'
},
'key' => {
'type' => 'string'
}
},
'required' => %w[
id
key
]
}
},
'version' => {
'type' => 'string'
},
'revision' => {
'type' => 'string'
}
},
'required' => %w[
projectId
accountId
experiments
events
groups
audiences
attributes
version
revision
]
}.freeze