Pose Presets Endpoints¶
Pose Presets API endpoints.
Overview¶
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/pose-presets/ |
Create Pose Preset |
| GET | /api/v1/pose-presets/ |
Read Pose Presets |
| GET | /api/v1/pose-presets/{id} |
Read Pose Preset |
| PUT | /api/v1/pose-presets/{id} |
Update Pose Preset |
| DELETE | /api/v1/pose-presets/{id} |
Delete Pose Preset |
API Reference¶
Sartiq Backend Server - Pose Presets 0.1.0¶
pose-presets¶
POST /api/v1/pose-presets/¶
Create Pose Preset
Description
Create new pose preset.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
{
"name": "string",
"prompt": null,
"shot_type_id": "e2d39a6d-77d9-402c-abdf-2a5c7cadf312",
"default_shot_type": null,
"pose_image": null,
"owner_id": null,
"organization_id": null
}
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
],
"description": "Canonical framing; derived from the shot type when omitted"
},
"pose_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Pose Image",
"description": "URL or MediaInput for pose image"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization this preset belongs to"
}
},
"type": "object",
"required": [
"name",
"shot_type_id"
],
"title": "PosePresetCreate"
}
Responses
{
"id": "d5e314c9-0831-48f6-9665-7373cee8bc4c",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "b5e31df4-d9fb-4137-a9bd-173449268ed1",
"default_shot_type": null,
"owner_id": "35a0d871-6c5f-4638-bbcb-73e1aebe1c7a",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"updated_at": {
"type": "string",
"format": "date-time",
"title": "Updated At"
},
"name": {
"type": "string",
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"pose_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pose Image Url"
},
"pose_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shot_type_id",
"owner_id"
],
"title": "PosePresetPublic"
}
GET /api/v1/pose-presets/¶
Read Pose Presets
Description
Retrieve pose presets.
search filters by a case-insensitive substring of the preset prompt.
default_shot_type filters by canonical framing, which spans shot types
(and organizations) that share it.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
default_shot_type |
query | No | |||
limit |
query | integer | 100 | No | |
organization_id |
query | No | |||
owner_id |
query | No | |||
search |
query | No | |||
shot_type_id |
query | No | |||
skip |
query | integer | 0 | No |
Responses
{
"data": [
{
"id": "2b52aa20-3a8a-4f15-89bb-c05dcad73ab6",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "32a77ff7-49c5-42b9-82aa-500a919db2e1",
"default_shot_type": null,
"owner_id": "3a904758-54fb-4ce9-8eef-1e7f44fe5571",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"count": 0
}
POST /api/v1/pose-presets/agent-create¶
Agent Create Pose Preset
Description
Pose extracted from one shot-type rule (SAR-1919). JOB-SCOPED token only.
The body names a rule and carries only what the agent produced — a label and
the prompt it read off that rule's image. Shot type, image, organization and
owner are all derived here, so none of them can be pointed somewhere they do
not belong: a shot_type_id from the body would need an org-visibility
check, and a media_resource_id could not be checked at all
(MediaResource has no owner column).
Always creates. Reruns therefore accumulate presets — accepted, because a pose is not the same pose between runs just because its name matches. The duplicates share one stored file, so this costs rows, not storage.
404 when the rule is not on this job's guidelines — including when it does not exist, deliberately indistinguishable. 409 for a rule whose image is only a legacy storefront hot-link, which has no MediaResource to re-attach.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No |
Request body
Schema of the request body
{
"properties": {
"rule_id": {
"type": "string",
"format": "uuid",
"title": "Rule Id",
"description": "GuidelinesShotTypeRule this pose describes — supplies shot type AND image"
},
"name": {
"type": "string",
"maxLength": 255,
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
}
},
"type": "object",
"required": [
"rule_id",
"name"
],
"title": "PosePresetAgentCreate",
"description": "Agent-created pose, sourced entirely from a shot-type rule (SAR-1919).\n\nThe agent names a ``GuidelinesShotTypeRule`` and contributes only what it\nactually produced — the label and the prompt it extracted from that rule's\nimage. Everything structural is derived server-side:\n\n* ``shot_type_id`` comes from the rule, so it cannot point at another\n organization's shot type;\n* the pose image is the rule's own ``reference_image`` MediaResource,\n re-attached rather than re-uploaded, so rule and pose share one file;\n* organization and owner come from the job.\n\nDeriving the media this way is what makes the route safe: ``MediaResource``\ncarries no organization or owner column, so a client-supplied\n``media_resource_id`` would be a global namespace — any resource whose UUID\nthe caller could guess. There is no such field here."
}
Responses
{
"id": "eadfe0db-4451-4471-959c-ff235058362a",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "9ae7ba0d-880f-4258-a33d-1767d2dd25c6",
"default_shot_type": null,
"owner_id": "a117b858-5ba8-49d8-bb3a-4cb863856ad2",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"updated_at": {
"type": "string",
"format": "date-time",
"title": "Updated At"
},
"name": {
"type": "string",
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"pose_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pose Image Url"
},
"pose_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shot_type_id",
"owner_id"
],
"title": "PosePresetPublic"
}
GET /api/v1/pose-presets/{id}¶
Read Pose Preset
Description
Get pose preset by ID.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No |
Responses
{
"id": "6aff6334-9c1a-4a49-a238-6da0b157b775",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "3d8bd1e3-ccd6-42f1-b9bf-f855f611d009",
"default_shot_type": null,
"owner_id": "c355be4b-81fe-44fc-8c9d-9d28fb2d47c3",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"updated_at": {
"type": "string",
"format": "date-time",
"title": "Updated At"
},
"name": {
"type": "string",
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"pose_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pose Image Url"
},
"pose_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shot_type_id",
"owner_id"
],
"title": "PosePresetPublic"
}
PUT /api/v1/pose-presets/{id}¶
Update Pose Preset
Description
Update a pose preset.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No |
Request body
{
"name": null,
"prompt": null,
"shot_type_id": null,
"default_shot_type": null,
"pose_image": null,
"owner_id": null,
"organization_id": null
}
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
],
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"pose_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Pose Image",
"description": "URL or MediaInput for pose image"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization to transfer this preset to"
}
},
"type": "object",
"title": "PosePresetUpdate"
}
Responses
{
"id": "c23d96b0-c855-44c6-96ec-ddd50c7ff5ce",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "4919eb3b-2c22-4b19-89d3-7f8e72bf2c3e",
"default_shot_type": null,
"owner_id": "d045d11b-98c2-4fef-a94e-15e141382d26",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"updated_at": {
"type": "string",
"format": "date-time",
"title": "Updated At"
},
"name": {
"type": "string",
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"pose_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pose Image Url"
},
"pose_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shot_type_id",
"owner_id"
],
"title": "PosePresetPublic"
}
DELETE /api/v1/pose-presets/{id}¶
Delete Pose Preset
Description
Delete a pose preset.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No |
Responses
POST /api/v1/pose-presets/{id}/restore¶
Restore Pose Preset
Description
Restore a soft-deleted pose preset (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "8438f23a-5914-4028-a4eb-e6f610d2fdaf",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "4aef06e4-2e44-4693-9315-8b17953a3448",
"default_shot_type": null,
"owner_id": "e5dad977-2417-4ee2-a210-6d86531369f8",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"updated_at": {
"type": "string",
"format": "date-time",
"title": "Updated At"
},
"name": {
"type": "string",
"title": "Name"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"pose_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pose Image Url"
},
"pose_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shot_type_id",
"owner_id"
],
"title": "PosePresetPublic"
}
Schemas¶
DefaultShotTypes¶
Type: string
HTTPValidationError¶
| Name | Type | Description |
|---|---|---|
detail |
Array<ValidationError> |
MediaInput¶
| Name | Type | Description |
|---|---|---|
alt_text |
||
caption |
||
color_profile |
||
dominant_color |
||
duration |
||
height |
||
media_resource_id |
||
protected |
boolean | |
url |
||
width |
MediaResourcePublic¶
| Name | Type | Description |
|---|---|---|
alt_text |
||
aspect_ratio |
||
caption |
||
color_profile |
||
content_hash |
string | |
created_at |
string(date-time) | |
dominant_color |
||
duration |
||
extension |
string | |
file_size |
integer | |
height |
||
id |
string(uuid) | |
orientation |
||
protected |
boolean | |
resource_type |
MediaResourceType | |
url |
string | |
width |
MediaResourceType¶
Type: string
Message¶
| Name | Type | Description |
|---|---|---|
message |
string |
PosePresetAgentCreate¶
| Name | Type | Description |
|---|---|---|
name |
string | |
prompt |
||
rule_id |
string(uuid) | GuidelinesShotTypeRule this pose describes — supplies shot type AND image |
PosePresetCreate¶
| Name | Type | Description |
|---|---|---|
default_shot_type |
Canonical framing; derived from the shot type when omitted | |
name |
string | |
organization_id |
Organization this preset belongs to | |
owner_id |
||
pose_image |
URL or MediaInput for pose image | |
prompt |
||
shot_type_id |
string(uuid) |
PosePresetPublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
default_shot_type |
||
deleted_at |
||
id |
string(uuid) | |
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
pose_image_media |
||
pose_image_url |
||
prompt |
||
public |
boolean | |
shot_type_id |
string(uuid) | |
updated_at |
string(date-time) |
PosePresetsPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
data |
Array<PosePresetPublic> |
PosePresetUpdate¶
| Name | Type | Description |
|---|---|---|
default_shot_type |
||
name |
||
organization_id |
Organization to transfer this preset to | |
owner_id |
||
pose_image |
URL or MediaInput for pose image | |
prompt |
||
shot_type_id |
ValidationError¶
| Name | Type | Description |
|---|---|---|
ctx |
||
input |
||
loc |
Array<> | |
msg |
string | |
type |
string |
Security schemes¶
| Name | Type | Scheme | Description |
|---|---|---|---|
| OAuth2PasswordBearer | oauth2 |