Create a version from a selection of episodes
POST
/v1/projects/{projectId}/versionscurl -X POST 'https://api.embodiflow.io/v1/projects/{projectId}/versions' \
-H 'Authorization: Bearer $EMBODIFLOW_PAT' \
-H 'Content-Type: application/json' \
-d '{
"selection": {
"filter": {},
"savedViewId": "00000000-0000-0000-0000-000000000000",
"episodeIds": [
"00000000-0000-0000-0000-000000000000"
],
"selectionRunId": "00000000-0000-0000-0000-000000000000"
},
"name": "string",
"split": {
"strategy": "episode",
"ratios": {
"train": 0,
"val": 0,
"test": 0
},
"seed": 0
},
"labelPolicy": "current",
"includeFailing": true,
"includeIncomplete": true,
"preprocessing": {
"fps": 0,
"cameraKeys": [
"string"
],
"trimIdle": true,
"maxDurationS": 0,
"padMs": 0
},
"readmeMd": "string",
"licence": "string"
}'认证
每个请求都需要携带个人访问令牌(PAT)。
- Authorization: Bearer PAT
路径参数
- projectIdstring必填
请求头参数
- Idempotency-Keystring
Optional idempotency key, at most 255 characters (UUIDv4 recommended). A repeated key returns the first response byte-for-byte, including a 5xx. The same key with a different body, or a second in-flight request, returns 409 IDEMPOTENCY_CONFLICT. Keys are unique per tenant and retained for 24 hours.
请求体
Content-Typeapplication/json
- selectionobject必填
- filterobject
- savedViewIdstring (uuid)
- episodeIdsarray<string (uuid)>
- selectionRunIdstring (uuid)
The episodes a workflow run was asked about (an upload run: every episode of its recordings).
- namestring必填
- splitobject
- strategystring必填可选值episoderecordingcollectorstratified_taskmanual
- ratiosobject必填
- seednumber
- labelPolicystring可选值currentapproved_only
- includeFailingboolean
- includeIncompleteboolean
- preprocessingobject
- fpsnumber | null
- cameraKeysarray<string> | null
- trimIdleboolean
- maxDurationSnumber | null
- padMsnumber
- readmeMdstring | null
- licencestring | null
响应
Success
- dataobject必填
- idstring必填
- projectIdstring必填
- numbernumber必填
- namestring必填
- readmeMdstring | null必填
- licencestring | null必填
- splitobject必填
- preprocessingobject必填
- featureSchemaobject必填
- conventionsobject必填
- labelPolicystring必填可选值currentapproved_only
- episodeCountnumber必填
- trainCountnumber必填
- valCountnumber必填
- testCountnumber必填
- totalDurationNsnumber必填
- digeststring必填
- dataContractDigeststring | null必填
- refstring必填
- urlstring必填
- aliasesarray<string>必填
- createdAtstring必填
- createdByDisplayNamestring | null必填
- dataKindstring必填可选值humanrobotvideo
- updatedAtstring必填
- rowVersionnumber必填
- excludedobject必填
- storageobject必填
响应示例
{
"data": {
"id": "string",
"projectId": "string",
"number": 0,
"name": "string",
"readmeMd": "string",
"licence": "string",
"split": {
"strategy": "recording",
"ratios": {
"train": 0,
"val": 0,
"test": 0
},
"seed": 0
},
"preprocessing": {
"fps": 0,
"cameraKeys": [
"string"
],
"trimIdle": false,
"maxDurationS": 0,
"padMs": 0
},
"featureSchema": {
"fps": 0,
"cameraKeys": [
"string"
],
"features": {}
},
"conventions": {
"version": "embodiflow-data-conventions/v1",
"frames": {},
"features": {},
"sourceClocks": {},
"stereoPairs": [
{
"left": "string",
"right": "string",
"baselineM": 0,
"source": "unknown"
}
],
"timeOffsets": {}
},
"labelPolicy": "current",
"episodeCount": 0,
"trainCount": 0,
"valCount": 0,
"testCount": 0,
"totalDurationNs": 0,
"digest": "string",
"dataContractDigest": "string",
"ref": "string",
"url": "string",
"aliases": [
"string"
],
"createdAt": "string",
"createdByDisplayName": "string",
"dataKind": "human",
"updatedAt": "string",
"rowVersion": 0,
"excluded": {
"failing": 0,
"incomplete": 0,
"deleted": 0,
"notAnonymized": 0,
"noApprovedRevision": 0,
"excludedFlag": 0
},
"storage": {
"logicalBytes": 0,
"storedBytes": 0,
"treeState": "none"
}
}
}服务器https://api.embodiflow.io/v1https://api.embodiflow.dev/v1