Subjects & Styles Endpoints¶
AI subjects, visual styles, guidelines, shot types, and presets.
Overview¶
Subjects¶
| Method | Endpoint | Description |
|---|---|---|
| GET | /subjects/ |
List subjects |
| POST | /subjects/ |
Create subject |
| GET | /subjects/{id} |
Get subject |
| PATCH | /subjects/{id} |
Update subject |
| DELETE | /subjects/{id} |
Delete subject |
Styles¶
| Method | Endpoint | Description |
|---|---|---|
| GET | /styles/ |
List styles |
| POST | /styles/ |
Create style |
| GET | /styles/{id} |
Get style |
| PATCH | /styles/{id} |
Update style |
Guidelines¶
| Method | Endpoint | Description |
|---|---|---|
| GET | /guidelines/ |
List guidelines |
| POST | /guidelines/ |
Create guideline |
| GET | /guidelines/{id} |
Get guideline |
Shot Types¶
| Method | Endpoint | Description |
|---|---|---|
| GET | /shot-types/ |
List shot types |
| POST | /shot-types/ |
Create shot type |
| GET | /shot-types/{id} |
Get shot type |
Presets¶
| Method | Endpoint | Description |
|---|---|---|
| GET | /background-presets/ |
List background presets |
| GET | /resolution-presets/ |
List resolution presets |
API Reference¶
Sartiq Backend Server - Subjects Styles 0.1.0¶
subjects¶
GET /api/v1/subjects/¶
Read Subjects
Description
Retrieve subjects.
When organization_id query param is provided, returns subjects belonging to that organization. Without organization_id, returns only personal subjects (not belonging to any organization).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
age_class |
query | No | |||
body_type |
query | No | |||
include_public |
query | No | |||
limit |
query | integer | 100 | No | |
only_with_base_images |
query | No | |||
organization_id |
query | No | |||
skip |
query | integer | 0 | No |
Responses
{
"id": "a5d79a17-268a-4ee2-927b-beb1132a3fd8",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"data": [
{
"id": "8682368b-4ebd-4ef3-8053-38d7096f9f77",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "82728816-d794-4d32-821a-958bb28f2159",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "50b727a1-5efe-44fd-b86b-985abe80e181",
"organization_id": null
}
],
"count": 0
}
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"
},
"data": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Data"
},
"count": {
"type": "integer",
"title": "Count"
}
},
"type": "object",
"required": [
"data",
"count"
],
"title": "SubjectsPublic"
}
POST /api/v1/subjects/¶
Create Subject
Description
Create new subject, supporting base_images and data_images.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
{
"name": "string",
"surname": null,
"description": null,
"cover_image": null,
"data_images": null,
"portrait_image": null,
"portfolio_images": null,
"base_images": null,
"age_class": "newborn",
"gender": "MALE",
"ethnicity": null,
"public": true,
"subject_type": "AI",
"body_type": null,
"organization_id": null,
"measurements": null
}
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"cover_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
}
],
"title": "Cover Image"
},
"data_images": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images"
},
"portrait_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Portrait Image"
},
"portfolio_images": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaInput"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images"
},
"base_images": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/BaseImageCreate"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Base Images"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender",
"default": "FEMALE"
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public",
"default": false
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType",
"default": "AI"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization this subject belongs to"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsCreate"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"cover_image",
"age_class"
],
"title": "SubjectCreate"
}
Responses
{
"id": "be83169b-719e-47e5-84cc-1fbff2dea850",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "9d85f44a-144c-4d8d-a160-24dbeb4342c4",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "5b2a5d41-e76a-4e24-bd29-39c01dbf47ad",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
GET /api/v1/subjects/{id}¶
Read Subject
Description
Get subject 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": "aef60c2c-035e-4561-a28a-975674c14a8f",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "807aba0e-8f38-4c69-a851-33e1086344c6",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "00fffd19-ce4d-4eec-9596-ac3f80de54f1",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
PUT /api/v1/subjects/{id}¶
Update Subject
Description
Update a subject.
Organization transfer: - To transfer a personal subject to an organization: set organization_id to the target org ID - To transfer a subject out of an organization: set organization_id to None (org owner only)
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,
"surname": null,
"description": null,
"cover_image": null,
"data_images": null,
"portrait_image": null,
"portfolio_images": null,
"age_class": null,
"gender": null,
"ethnicity": null,
"public": null,
"ready": null,
"body_type": null,
"organization_id": null,
"measurements": null
}
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"cover_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Cover Image"
},
"data_images": {
"anyOf": [
{
"items": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images"
},
"portrait_image": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Portrait Image"
},
"portfolio_images": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaInput"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images"
},
"age_class": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectAgeClass"
},
{
"type": "null"
}
]
},
"gender": {
"anyOf": [
{
"$ref": "#/components/schemas/Gender"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Public"
},
"ready": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Ready"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization to transfer this subject to"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsUpdate"
},
{
"type": "null"
}
]
}
},
"type": "object",
"title": "SubjectUpdate"
}
Responses
{
"id": "0bdcac28-a3c8-4347-acf0-f7fab86113fc",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "8d8cd8e6-47cc-4391-93b8-b0c3e046d9ea",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "b662f1d4-239b-49ed-a322-6fa678b0addb",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
DELETE /api/v1/subjects/{id}¶
Delete Subject
Description
Delete a subject and all associated assets.
This includes: - Generated images and related files
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/subjects/{id}/restore¶
Restore Subject
Description
Restore a soft-deleted subject (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "8fd76444-1982-42ff-b98d-9ea6734b3d7a",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "b7eaf711-cc07-44c8-ad17-2d28fa49051b",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "25ecce33-1464-45b2-95aa-755876514074",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
POST /api/v1/subjects/{id}/copy¶
Copy Subject
Description
Create a copy of an existing subject (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "098e7431-d9b8-4bc8-997f-cf78cb7afaaa",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "a2ee2583-8e0e-461d-b7d7-2bc5bff47888",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "8020abe1-7cdc-4dc9-a7bc-679b25439fb2",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
PATCH /api/v1/subjects/admin/{subject_id}/assign-owner¶
Assign Subject Owner
Description
Transfer subject ownership to a different user (admin only). Optionally also assign to an organization.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No | Organization ID to assign | ||
subject_id |
path | string | No |
Request body
{
"id": "b4c6d0da-41a6-49bd-8983-dbcda460c331",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"new_owner_id": "810dc131-47b2-481a-8fe5-dd716c922d42"
}
Schema of the request 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"
},
"new_owner_id": {
"type": "string",
"format": "uuid",
"title": "New Owner Id"
}
},
"type": "object",
"required": [
"new_owner_id"
],
"title": "AssignOwnerRequest"
}
Responses
{
"id": "b6bce362-30eb-4e1e-9722-6fdb4b870593",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "e7c1d406-9c5b-405e-b544-54c83eef75e3",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "5f8c9e34-c174-446a-899f-85e72a2f01f7",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectPublic"
}
POST /api/v1/subjects/admin/users/{user_id}/assign-subjects¶
Bulk Assign Subjects
Description
Assign multiple subjects to a user (admin only). Optionally also assign to an organization.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No | Organization ID to assign | ||
user_id |
path | string | No |
Request body
{
"id": "b7802567-bcb8-499c-8166-e254d5e2040e",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"subject_ids": [
"6d19abd2-beaf-4df5-ad3a-8880d60dc901"
]
}
Schema of the request 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"
},
"subject_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Subject Ids"
}
},
"type": "object",
"required": [
"subject_ids"
],
"title": "BulkAssignSubjectsRequest"
}
Responses
GET /api/v1/subjects/admin/users/{user_id}/subjects¶
Get User Subjects
Description
Get all subjects owned by a specific user (admin only). Optionally filter by organization.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
limit |
query | integer | 100 | No | |
organization_id |
query | No | Organization ID to filter by | ||
skip |
query | integer | 0 | No | |
user_id |
path | string | No |
Responses
{
"id": "3dd973f6-3218-4f05-aea3-6f122574ab31",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"data": [
{
"id": "72ab5654-663c-4a8d-8416-6e3ee4db8811",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "8eb2e5ff-8933-43e7-8e92-9161e163aff2",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "4a6b58a3-103c-44b7-ab82-63aea3393116",
"organization_id": null
}
],
"count": 0
}
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"
},
"data": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Data"
},
"count": {
"type": "integer",
"title": "Count"
}
},
"type": "object",
"required": [
"data",
"count"
],
"title": "SubjectsPublic"
}
GET /api/v1/subjects/admin/¶
Read Subjects Admin
Description
Retrieve all subjects with admin fields (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
body_type |
query | No | |||
limit |
query | integer | 100 | No | |
organization_id |
query | No | Organization ID to filter by | ||
skip |
query | integer | 0 | No |
Responses
{
"id": "8fbf7695-09f0-4a21-9d50-c2e1d4961271",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"data": [
{
"id": "0d5e931e-a68a-42f5-a403-4fdf7a6bad79",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "08e2a869-deb0-4255-be31-4c550387a908",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "5326c748-86ba-4667-ac6f-2e96d66f3542",
"organization_id": null
}
],
"count": 0
}
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"
},
"data": {
"items": {
"$ref": "#/components/schemas/SubjectAdmin"
},
"type": "array",
"title": "Data"
},
"count": {
"type": "integer",
"title": "Count"
}
},
"type": "object",
"required": [
"data",
"count"
],
"title": "SubjectsAdmin"
}
GET /api/v1/subjects/admin/{id}¶
Read Subject Admin
Description
Get subject by ID with admin fields (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "525a31d8-a446-4d52-92cd-c32f938edbe1",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "f57a0992-de54-4d29-947e-f0bb0ace0f6f",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "ed0a6da5-c582-4b31-a68b-4d23208c8c62",
"organization_id": 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"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Surname"
},
"slug": {
"type": "string",
"title": "Slug"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"age_class": {
"$ref": "#/components/schemas/SubjectAgeClass"
},
"gender": {
"$ref": "#/components/schemas/Gender"
},
"subject_type": {
"$ref": "#/components/schemas/SubjectType"
},
"body_type": {
"anyOf": [
{
"$ref": "#/components/schemas/BodyType"
},
{
"type": "null"
}
]
},
"ethnicity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ethnicity"
},
"public": {
"type": "boolean",
"title": "Public"
},
"enabled": {
"type": "boolean",
"title": "Enabled"
},
"ready": {
"type": "boolean",
"title": "Ready"
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"portrait_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Portrait Image Url"
},
"data_image_urls": {
"items": {
"type": "string"
},
"type": "array",
"title": "Data Image Urls"
},
"cover_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"portrait_image_media": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
},
"data_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Data Images Media"
},
"portfolio_images_media": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/MediaResourcePublic"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Portfolio Images Media"
},
"base_images": {
"items": {
"$ref": "#/components/schemas/BaseImagePublic"
},
"type": "array",
"title": "Base Images"
},
"measurements": {
"anyOf": [
{
"$ref": "#/components/schemas/SubjectMeasurementsPublic"
},
{
"type": "null"
}
]
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"slug",
"description",
"age_class",
"gender",
"subject_type",
"ethnicity",
"public",
"enabled",
"ready",
"cover_image_url",
"data_image_urls",
"owner_id"
],
"title": "SubjectAdmin",
"description": "Admin view of a subject.\n\nCurrently a passthrough of ``SubjectPublic``, retained for the admin\nroute response contract (it previously carried admin-only artifact\nfields that have since been removed)."
}
POST /api/v1/subjects/{id}/base_images¶
Upload Subject Base Image
Description
Add a base image for a subject with specified shot type. Expects a JSON body with image_url (presigned URL from uploads endpoint) and shot_type_id.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No |
Request body
Schema of the request body
{
"properties": {
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"image_url": {
"type": "string",
"title": "Image Url"
}
},
"type": "object",
"required": [
"shot_type_id",
"image_url"
],
"title": "BaseImageCreate",
"description": "Schema for creating a base image"
}
Responses
{
"shot_type_id": "55a88882-335b-4199-85d1-01a1baefdf17",
"shot_type_label": "string",
"image_url": "string"
}
Schema of the response body
{
"properties": {
"shot_type_id": {
"type": "string",
"format": "uuid",
"title": "Shot Type Id"
},
"shot_type_label": {
"type": "string",
"title": "Shot Type Label"
},
"image_url": {
"type": "string",
"title": "Image Url"
}
},
"type": "object",
"required": [
"shot_type_id",
"shot_type_label",
"image_url"
],
"title": "BaseImagePublic",
"description": "Schema for base image response"
}
GET /api/v1/subjects/{id}/base_images¶
Get Subject Base Images
Description
Get all base images for a subject, optionally filtered by shot type.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No | |||
shot_type |
query | No | Filter by shot type ID |
Responses
DELETE /api/v1/subjects/{id}/base_images¶
Delete Subject Base Image
Description
Delete a specific base image by URL and remove the file from filesystem.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No | |||
url |
query | string | No | URL of the base image to delete |
Responses
POST /api/v1/subjects/base-images/upload¶
Upload Subject Base Images Zip
Description
Upload ZIP with base images for a subject.
When subject_id is provided the ZIP is processed against that existing
subject (original behaviour). When omitted, a new subject is created from
metadata.json inside the ZIP (required — returns 422 if absent).
The ZIP should contain images named after shot types (e.g., front_full_body.jpg). Returns a task object for polling progress.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No | |||
subject_id |
query | No |
Request body
Responses
{
"id": "0a482cca-8d91-4283-b175-8102f87cc28e",
"owner_id": "1af0dc57-2653-4bad-94a4-81561be38c00",
"subject_id": "741ca431-b407-4d12-b2f6-71e85b972823",
"status": "PENDING",
"progress": 0,
"total_items": 0,
"processed_items": 0,
"images_processed": 0,
"images_skipped": 0,
"portfolio_images_processed": 0,
"error_message": null,
"created_at": "2022-04-13T15:42:05.901Z",
"started_at": null,
"completed_at": null,
"result_data": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"subject_id": {
"type": "string",
"format": "uuid",
"title": "Subject Id"
},
"status": {
"$ref": "#/components/schemas/TaskStatus-Output"
},
"progress": {
"type": "integer",
"title": "Progress"
},
"total_items": {
"type": "integer",
"title": "Total Items"
},
"processed_items": {
"type": "integer",
"title": "Processed Items"
},
"images_processed": {
"type": "integer",
"title": "Images Processed"
},
"images_skipped": {
"type": "integer",
"title": "Images Skipped"
},
"portfolio_images_processed": {
"type": "integer",
"title": "Portfolio Images Processed",
"default": 0
},
"error_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Error Message"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"started_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Started At"
},
"completed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Completed At"
},
"result_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Result Data"
}
},
"type": "object",
"required": [
"id",
"owner_id",
"subject_id",
"status",
"progress",
"total_items",
"processed_items",
"images_processed",
"images_skipped",
"created_at"
],
"title": "SubjectBaseImagesUploadTaskPublic",
"description": "Response model for subject base images upload task."
}
GET /api/v1/subjects/upload-tasks/{task_id}¶
Get Subject Base Images Upload Task
Description
Poll task status for base images upload.
Use this endpoint to check progress after uploading a ZIP file.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
task_id |
path | string | No |
Responses
{
"id": "ee4a562a-21d1-4ef0-853f-5740f955ce48",
"owner_id": "fb667733-2520-47b7-948c-6ecea1866ca3",
"subject_id": "5b8ef520-94aa-4164-94cb-a029cf29f3c7",
"status": "PENDING",
"progress": 0,
"total_items": 0,
"processed_items": 0,
"images_processed": 0,
"images_skipped": 0,
"portfolio_images_processed": 0,
"error_message": null,
"created_at": "2022-04-13T15:42:05.901Z",
"started_at": null,
"completed_at": null,
"result_data": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"subject_id": {
"type": "string",
"format": "uuid",
"title": "Subject Id"
},
"status": {
"$ref": "#/components/schemas/TaskStatus-Output"
},
"progress": {
"type": "integer",
"title": "Progress"
},
"total_items": {
"type": "integer",
"title": "Total Items"
},
"processed_items": {
"type": "integer",
"title": "Processed Items"
},
"images_processed": {
"type": "integer",
"title": "Images Processed"
},
"images_skipped": {
"type": "integer",
"title": "Images Skipped"
},
"portfolio_images_processed": {
"type": "integer",
"title": "Portfolio Images Processed",
"default": 0
},
"error_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Error Message"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"started_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Started At"
},
"completed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Completed At"
},
"result_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Result Data"
}
},
"type": "object",
"required": [
"id",
"owner_id",
"subject_id",
"status",
"progress",
"total_items",
"processed_items",
"images_processed",
"images_skipped",
"created_at"
],
"title": "SubjectBaseImagesUploadTaskPublic",
"description": "Response model for subject base images upload task."
}
GET /api/v1/subjects/{subject_id}/base-images/upload-task¶
Get Subject Base Images Upload Task By Subject
Description
Get the latest base images upload task for a subject.
Use this endpoint when returning to a subject page to resume/check upload status. Returns the most recent task (by created_at) for this subject.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No | |||
subject_id |
path | string | No |
Responses
{
"id": "3f22f05c-9d7a-4cd7-b755-a7774aa94fc0",
"owner_id": "1bd327d3-0e12-4d5b-a390-7fb824ecb96d",
"subject_id": "4adff179-c771-4523-b5f3-df804f68b3f8",
"status": "PENDING",
"progress": 0,
"total_items": 0,
"processed_items": 0,
"images_processed": 0,
"images_skipped": 0,
"portfolio_images_processed": 0,
"error_message": null,
"created_at": "2022-04-13T15:42:05.901Z",
"started_at": null,
"completed_at": null,
"result_data": null
}
Schema of the response body
{
"properties": {
"id": {
"type": "string",
"format": "uuid",
"title": "Id"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"subject_id": {
"type": "string",
"format": "uuid",
"title": "Subject Id"
},
"status": {
"$ref": "#/components/schemas/TaskStatus-Output"
},
"progress": {
"type": "integer",
"title": "Progress"
},
"total_items": {
"type": "integer",
"title": "Total Items"
},
"processed_items": {
"type": "integer",
"title": "Processed Items"
},
"images_processed": {
"type": "integer",
"title": "Images Processed"
},
"images_skipped": {
"type": "integer",
"title": "Images Skipped"
},
"portfolio_images_processed": {
"type": "integer",
"title": "Portfolio Images Processed",
"default": 0
},
"error_message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Error Message"
},
"created_at": {
"type": "string",
"format": "date-time",
"title": "Created At"
},
"started_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Started At"
},
"completed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Completed At"
},
"result_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Result Data"
}
},
"type": "object",
"required": [
"id",
"owner_id",
"subject_id",
"status",
"progress",
"total_items",
"processed_items",
"images_processed",
"images_skipped",
"created_at"
],
"title": "SubjectBaseImagesUploadTaskPublic",
"description": "Response model for subject base images upload task."
}
shot-types¶
POST /api/v1/shot-types/agent-upsert¶
Agent Upsert Shot Type
Description
Agent-extracted shot type (plan 013 / SAR-1856). JOB-SCOPED token only.
A strict one-of (schema-enforced):
shot_type_id— attach EXACTLY that row. Must be org-visible (org-owned or public), else 404.view_angle+framing— create an org-owned row (or reuse one already found by name/axes for this org). An optional canonicalnamepreserves semantics (for example still life) that the legacy axes cannot represent. Without it the name still comes fromDefaultShotTypes.
A created row is always filed under a canonical default_shot_type:
the submitted one when the caller sent it, else the name when the name
IS an enum value, else the axes pair. Leaving it null is what a
semantically-named row used to do, and it is not a cosmetic gap — pose
presets inherit the field as their grouping key, the portrait rule reads
it to exclude detail close-ups, and share links render a null as the
"other" variant. An org-owned row reused by this call has a null
backfilled the same way; a public row is never touched.
Either arm can carry measured margins. No tolerance: a candidate row
whose margins EXACTLY match is reused; any difference forks an org-owned
sibling named <base name> (n) carrying that exact measurement instead
of overwriting the row in place. Only a row minted by THIS call takes a
measurement directly — every other row may already be cited by another
product type's guidelines rule, and margins describe one photograph, so
writing them in place would retro-fit every rule pointing at the row. No
row is ever mutated: match attaches it untouched, mismatch forks. Repeated
runs at the SAME margin converge on the SAME sibling, never a new one.
Sending NO margins is itself an answer — "this framing has no margin
rule", which is what a frame-filling crop, a detail and an editorial all
measure to. It matches only an unmeasured row; a row carrying some other
product's margin forks an unmeasured sibling rather than lending its own.
When the job payload names a shooting_id, that shooting's guidelines
container is materialised (so the rules write can find it), but the resolved
row is NOT added to its catalog and carries no evidence image: both are
shared across product types, and the extraction's per-category findings
belong on the rule rows.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No |
Request body
{
"shot_type_id": null,
"name": null,
"view_angle": null,
"framing": null,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"source_product_url": null
}
Schema of the request body
{
"properties": {
"shot_type_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Shot Type Id"
},
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Name"
},
"view_angle": {
"anyOf": [
{
"$ref": "#/components/schemas/ViewAngle"
},
{
"type": "null"
}
]
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
}
},
"type": "object",
"title": "ShotTypeAgentUpsert",
"description": "Agent-extracted shot type (plan 013 / SAR-1856).\n\nA strict ONE-OF, because the axes cannot carry a choice (two rows may\nshare ``(view_angle, framing)``; ``editorial`` has no axes at all):\n\n* ``shot_type_id`` — attach EXACTLY that org-visible row (org-owned or\n public; anything else is a 404).\n* ``view_angle`` + ``framing`` — create an org-owned row (or reuse one\n already found by name/axes for this org). ``name`` may preserve a\n discovered semantic the legacy axes cannot express; without it the row\n is named from ``DefaultShotTypes`` as before.\n\nBoth together, neither, or half an axis pair -> 422. ``margins`` rides\neither arm, in the model's ``Margins`` string convention\n(``top,right,bottom,left``, empty slot = unset, e.g. ``0.04,,0.03,``).\nBlank and all-unset values are normalized to omitted.\n\n``margins`` is the MEASUREMENT, at whatever precision the detector produced.\n``margins_key`` is that same measurement quantized to the agent's 0.05 grid,\nand it is the only thing row identity compares. Sending the precise value\nalone would fork a sibling per image, because two photographs of one framing\nnever measure bit-identically; sending the key alone would store a number up\nto 0.025 of the frame away from the truth, which the solver then reframes\nagainst. Omit ``margins_key`` and it is derived by quantizing ``margins`` —\ncorrect, but the agent should send both so the grid lives in one place.\n\nNo tolerance on the key: a candidate row whose key EXACTLY matches is reused\n(and its stored measurement left alone); any difference forks an org-owned\nsibling — a public row is never mutated, only matched-and-attached or forked."
}
Responses
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "71cf507c-6dba-423e-b6f4-9b2f1b499096",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
POST /api/v1/shot-types/¶
Create Shot Type
Description
Create new shot type.
Supports both traditional image uploads (URL, base64) and presigned URLs. For presigned URLs, the image should have been previously uploaded using the /uploads endpoint.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
{
"file_naming_convention": "{product_name}_front_upper",
"framing": "upper_body",
"name": "front_upper_body",
"shot_type_prompt_instruction": "Capture the front view from waist up",
"shot_type_ref_image_url": "https://example.com/reference.jpg",
"view_angle": "front"
}
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
}
},
"type": "object",
"required": [
"name",
"view_angle"
],
"title": "ShotTypeCreate",
"description": "Schema for creating a ShotType",
"example": {
"file_naming_convention": "{product_name}_front_upper",
"framing": "upper_body",
"name": "front_upper_body",
"shot_type_prompt_instruction": "Capture the front view from waist up",
"shot_type_ref_image_url": "https://example.com/reference.jpg",
"view_angle": "front"
}
}
Responses
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "2b0f17bf-705f-4268-af69-1bc0995cb8b1",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
GET /api/v1/shot-types/¶
Read Shot Types
Description
Retrieve shot types. Optionally filter by view angle, framing, or search term.
When organization_id query param is provided, returns shot types belonging to that organization. Without organization_id, returns only personal shot types (not belonging to any organization).
Admin-only: owner_id filter returns public shot types + shot types owned by that user.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
framing |
query | No | |||
include_public |
query | No | |||
limit |
query | integer | 100 | No | |
organization_id |
query | No | |||
owner_id |
query | No | |||
public |
query | No | |||
search |
query | No | |||
skip |
query | integer | 0 | No | |
view_angle |
query | No |
Responses
{
"data": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "f1269b6f-b108-4a1a-a43c-07a4af702252",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
],
"count": 0
}
Schema of the response body
{
"properties": {
"data": {
"items": {
"$ref": "#/components/schemas/ShotTypePublic"
},
"type": "array",
"title": "Data"
},
"count": {
"type": "integer",
"title": "Count"
}
},
"type": "object",
"required": [
"data",
"count"
],
"title": "ShotTypesPublic",
"description": "Collection of ShotTypePublic objects"
}
GET /api/v1/shot-types/{id}¶
Read Shot Type
Description
Get shot type 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
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "b9731ef0-892c-4d44-8e02-af0d0319fb32",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
PUT /api/v1/shot-types/{id}¶
Update Shot Type
Description
Update a shot type.
Supports both traditional image uploads (URL, base64) and presigned URLs. For presigned URLs, the image should have been previously uploaded using the /uploads endpoint.
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": "front_upper_body_updated",
"shot_type_prompt_instruction": "Updated instructions for front view",
"view_angle": "front"
}
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"view_angle": {
"anyOf": [
{
"$ref": "#/components/schemas/ViewAngle"
},
{
"type": "null"
}
]
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Core Focus"
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Requires Subject"
}
},
"type": "object",
"title": "ShotTypeUpdate",
"description": "Schema for updating a ShotType",
"example": {
"name": "front_upper_body_updated",
"shot_type_prompt_instruction": "Updated instructions for front view",
"view_angle": "front"
}
}
Responses
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "c77a369c-42c9-4250-897b-8de9935b611e",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
DELETE /api/v1/shot-types/{id}¶
Delete Shot Type
Description
Delete a shot type.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No | ||
organization_id |
query | No |
Responses
GET /api/v1/shot-types/name/{name}¶
Read Shot Type By Name
Description
Get shot type by name.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
name |
path | string | No | ||
organization_id |
query | No |
Responses
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "a6dbf03c-8098-4eec-b078-13d9441e16a3",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
POST /api/v1/shot-types/{id}/restore¶
Restore Shot Type
Description
Restore a soft-deleted shot type (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "d3eb17a1-7dbe-486c-9f72-5412a7533140",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null
}
Schema of the response body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"view_angle": {
"$ref": "#/components/schemas/ViewAngle"
},
"framing": {
"anyOf": [
{
"$ref": "#/components/schemas/ShotTypeFraming"
},
{
"type": "null"
}
]
},
"shot_type_ref_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Ref Image Url"
},
"shot_type_prompt_instruction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Shot Type Prompt Instruction"
},
"file_naming_convention": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File Naming Convention"
},
"reference_image_url": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/MediaInput"
},
{
"type": "null"
}
],
"title": "Reference Image Url"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"prompt_builder_section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Builder Section"
},
"core_focus": {
"type": "boolean",
"title": "Core Focus",
"default": false
},
"default_shot_type": {
"anyOf": [
{
"$ref": "#/components/schemas/DefaultShotTypes"
},
{
"type": "null"
}
]
},
"margins": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins"
},
"margins_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Margins Key"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"public": {
"type": "boolean",
"title": "Public",
"default": true
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"requires_subject": {
"type": "boolean",
"title": "Requires Subject",
"default": true
},
"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"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"reference_image": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "null"
}
]
}
},
"type": "object",
"required": [
"name",
"view_angle",
"id",
"created_at",
"updated_at"
],
"title": "ShotTypePublic",
"description": "Public schema for ShotType"
}
background-presets¶
POST /api/v1/background-presets/¶
Create Background Preset
Description
Create new background preset with per-framing images.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
{
"framings": [
{
"image": "https://example.com/backgrounds/white.jpg"
}
],
"name": "Studio White Background",
"strategy": "DEFAULT"
}
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"title": "Name"
},
"framings": {
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingCreate"
},
"type": "array",
"minItems": 1,
"title": "Framings",
"description": "At least one framing entry is required"
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
],
"description": "Strategy for background fix processing",
"default": "DEFAULT"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt",
"description": "Optional free-text directive appended to every generation prompt that uses this background (e.g. 'make the background pure #FFFFFF white')."
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization this preset belongs to"
}
},
"type": "object",
"required": [
"name",
"framings"
],
"title": "BackgroundPresetCreate",
"example": {
"framings": [
{
"image": "https://example.com/backgrounds/white.jpg"
}
],
"name": "Studio White Background",
"strategy": "DEFAULT"
}
}
Responses
{
"id": "e9718451-9169-43bc-992c-8182088204e0",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "cc723a5a-a4c5-40f5-ac21-54c72d857af7",
"organization_id": null,
"framings": [
{
"id": "62e61436-3fc1-4a0b-9274-ad10796c76f5",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"framing": null,
"image_url": null,
"image_media": null
}
],
"cover_image_url": null,
"strategy": null,
"prompt": 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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"framings": {
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingPublic"
},
"type": "array",
"title": "Framings",
"default": []
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
]
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"strategy"
],
"title": "BackgroundPresetPublic"
}
GET /api/v1/background-presets/¶
Read Background Presets
Description
Retrieve background presets.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
limit |
query | integer | 100 | No | |
organization_id |
query | No | |||
owner_id |
query | No | |||
skip |
query | integer | 0 | No |
Responses
{
"data": [
{
"id": "7e06a508-db2f-472f-b33d-b2d5ada38f12",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "0085acb7-6eb3-4e56-a190-64bdc10636c1",
"organization_id": null,
"framings": [
{
"id": "95772c70-2110-4c3e-9d6c-25a29b5fd0d7",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"framing": null,
"image_url": null,
"image_media": null
}
],
"cover_image_url": null,
"strategy": null,
"prompt": null,
"deleted_at": null
}
],
"count": 0
}
GET /api/v1/background-presets/{id}¶
Read Background Preset
Description
Get background 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": "f6a3290c-b908-413e-9e09-713acba16f93",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "d322b968-dd21-4230-9907-56351bee6956",
"organization_id": null,
"framings": [
{
"id": "885cdcfb-c603-4c4f-8162-c9205d9d7af2",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"framing": null,
"image_url": null,
"image_media": null
}
],
"cover_image_url": null,
"strategy": null,
"prompt": 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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"framings": {
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingPublic"
},
"type": "array",
"title": "Framings",
"default": []
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
]
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"strategy"
],
"title": "BackgroundPresetPublic"
}
PUT /api/v1/background-presets/{id}¶
Update Background Preset
Description
Update a background 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
{
"framings": [
{
"framing": "full_body",
"image": "https://example.com/backgrounds/full.jpg"
},
{
"image": "https://example.com/backgrounds/fallback.jpg"
}
],
"name": "Updated Background Name",
"strategy": "OVS"
}
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
],
"title": "Name"
},
"framings": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingCreate"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Framings",
"description": "Full-replace framings list. None = no change."
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
],
"description": "Strategy for background fix processing"
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt",
"description": "Optional free-text directive appended to every generation prompt that uses this background. Send null to clear; omit to leave unchanged."
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id",
"description": "Organization to transfer this preset to"
}
},
"type": "object",
"title": "BackgroundPresetUpdate",
"example": {
"framings": [
{
"framing": "full_body",
"image": "https://example.com/backgrounds/full.jpg"
},
{
"image": "https://example.com/backgrounds/fallback.jpg"
}
],
"name": "Updated Background Name",
"strategy": "OVS"
}
}
Responses
{
"id": "a465f0ef-85b7-41a8-90a8-a12b6686e3e1",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "99ca5778-f31a-4239-a348-45935583d2d4",
"organization_id": null,
"framings": [
{
"id": "d5742ad1-aaba-4bd5-8da6-fddb8e7d7851",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"framing": null,
"image_url": null,
"image_media": null
}
],
"cover_image_url": null,
"strategy": null,
"prompt": 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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"framings": {
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingPublic"
},
"type": "array",
"title": "Framings",
"default": []
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
]
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"strategy"
],
"title": "BackgroundPresetPublic"
}
DELETE /api/v1/background-presets/{id}¶
Delete Background Preset
Description
Delete a background 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/background-presets/{id}/restore¶
Restore Background Preset
Description
Restore a soft-deleted background preset (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "b6190e94-0b67-43d8-88c7-57e2d4ddb967",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "f00f9fdd-ff80-480d-807e-a043235e1f08",
"organization_id": null,
"framings": [
{
"id": "b91086c1-db88-4407-ae71-881d5e476c34",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"framing": null,
"image_url": null,
"image_media": null
}
],
"cover_image_url": null,
"strategy": null,
"prompt": 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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"framings": {
"items": {
"$ref": "#/components/schemas/BackgroundPresetFramingPublic"
},
"type": "array",
"title": "Framings",
"default": []
},
"cover_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cover Image Url"
},
"strategy": {
"anyOf": [
{
"$ref": "#/components/schemas/BackgroundFixStrategy"
},
{
"type": "null"
}
]
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"strategy"
],
"title": "BackgroundPresetPublic"
}
resolution-presets¶
POST /api/v1/resolution-presets/agent-upsert¶
Agent Upsert Resolution Preset
Description
Agent-extracted preset, upserted idempotently on
(organization, width, height, format) among non-deleted agent rows
(plan 008 / SAR-1854). JOB-SCOPED token only: org and owner derive from
the claim context — the hermes host is the single writer, after
verifying the spec against real image bytes.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No |
Request body
{
"width": 0,
"height": 0,
"format": null,
"name": null,
"attach_to_guidelines": true,
"source_product_url": null
}
Schema of the request body
{
"properties": {
"width": {
"type": "integer",
"exclusiveMinimum": 0.0,
"title": "Width"
},
"height": {
"type": "integer",
"exclusiveMinimum": 0.0,
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string",
"maxLength": 20,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Format"
},
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Name"
},
"attach_to_guidelines": {
"type": "boolean",
"title": "Attach To Guidelines",
"default": true
},
"source_product_url": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
],
"title": "Source Product Url"
}
},
"type": "object",
"required": [
"width",
"height"
],
"title": "ResolutionPresetAgentUpsert",
"description": "Agent-extracted preset (plan 008): posted with the JOB-SCOPED token by\nthe Hermes host. URL jobs still require a byte-verified ``format``;\ndocument jobs may leave it unknown rather than inventing one. A document\nmay also supply its own output label and may create secondary presets\nwithout selecting each one as the shooting default. Owner and organization\nalways derive from the job token. Idempotent on\n(organization_id, width, height, format) among non-deleted agent rows."
}
Responses
{
"id": "0c33f869-001c-491a-9093-e735b3904da2",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "780229c7-2550-4017-9325-09c8070e792e",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"width": {
"type": "integer",
"title": "Width"
},
"height": {
"type": "integer",
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
},
"created_via": {
"type": "string",
"title": "Created Via",
"default": "manual"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"width",
"height"
],
"title": "ResolutionPresetPublic"
}
POST /api/v1/resolution-presets/¶
Create Resolution Preset
Description
Create new resolution preset.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"title": "Name"
},
"width": {
"type": "integer",
"exclusiveMinimum": 0.0,
"title": "Width",
"description": "Width in pixels"
},
"height": {
"type": "integer",
"exclusiveMinimum": 0.0,
"title": "Height",
"description": "Height in pixels"
},
"format": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
],
"title": "Format",
"description": "Lowercase image format, e.g. jpeg"
},
"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",
"width",
"height"
],
"title": "ResolutionPresetCreate",
"example": {
"height": 1080,
"name": "Full HD",
"width": 1920
}
}
Responses
{
"id": "a407361b-9dbb-4d41-bcee-cc3c6a5901e4",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "09066f15-a411-425b-8ed7-466233029af0",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"width": {
"type": "integer",
"title": "Width"
},
"height": {
"type": "integer",
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
},
"created_via": {
"type": "string",
"title": "Created Via",
"default": "manual"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"width",
"height"
],
"title": "ResolutionPresetPublic"
}
GET /api/v1/resolution-presets/¶
Read Resolution Presets
Description
Retrieve resolution presets.
When organization_id query param is provided, returns presets belonging to that organization. Without organization_id, returns only personal presets (not belonging to any organization).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
limit |
query | integer | 100 | No | |
organization_id |
query | No | |||
owner_id |
query | No | |||
skip |
query | integer | 0 | No |
Responses
{
"data": [
{
"id": "4fa0172e-28ef-48d7-a55c-ed65722f015f",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "753941df-0c76-43a7-91cd-8a2cfd1a4d2d",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"deleted_at": null
}
],
"count": 0
}
GET /api/v1/resolution-presets/{id}¶
Read Resolution Preset
Description
Get resolution 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": "fb4964a9-ce28-4940-a34e-4bd9ff5b3d71",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "9e01a9c2-fa7e-468a-9e4a-3fe7e9b1ce88",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"width": {
"type": "integer",
"title": "Width"
},
"height": {
"type": "integer",
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
},
"created_via": {
"type": "string",
"title": "Created Via",
"default": "manual"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"width",
"height"
],
"title": "ResolutionPresetPublic"
}
PUT /api/v1/resolution-presets/{id}¶
Update Resolution Preset
Description
Update a resolution 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
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
],
"title": "Name"
},
"width": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0.0
},
{
"type": "null"
}
],
"title": "Width",
"description": "Width in pixels"
},
"height": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0.0
},
{
"type": "null"
}
],
"title": "Height",
"description": "Height in pixels"
},
"format": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
],
"title": "Format",
"description": "Lowercase image format, e.g. jpeg"
},
"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": "ResolutionPresetUpdate",
"example": {
"height": 720,
"name": "Updated HD",
"width": 1280
}
}
Responses
{
"id": "1bdeac24-77e1-42c0-9e91-694b9b4c2d30",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "65ff4dac-64de-4bf8-9018-98002b807979",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"width": {
"type": "integer",
"title": "Width"
},
"height": {
"type": "integer",
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
},
"created_via": {
"type": "string",
"title": "Created Via",
"default": "manual"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"width",
"height"
],
"title": "ResolutionPresetPublic"
}
DELETE /api/v1/resolution-presets/{id}¶
Delete Resolution Preset
Description
Delete a resolution 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/resolution-presets/{id}/restore¶
Restore Resolution Preset
Description
Restore a soft-deleted resolution preset (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "4a37ad2c-b69d-43e5-a0fb-254067471430",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"owner_id": "a46ee0d1-0ae2-4866-9ffe-5d5df674851e",
"organization_id": null,
"width": 0,
"height": 0,
"format": null,
"source_product_url": null,
"created_via": "string",
"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"
},
"owner_id": {
"type": "string",
"format": "uuid",
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"width": {
"type": "integer",
"title": "Width"
},
"height": {
"type": "integer",
"title": "Height"
},
"format": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Format"
},
"source_product_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Product Url"
},
"created_via": {
"type": "string",
"title": "Created Via",
"default": "manual"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"owner_id",
"width",
"height"
],
"title": "ResolutionPresetPublic"
}
guidelines¶
POST /api/v1/guidelines/¶
Create Guidelines
Description
Create new shooting guidelines preset.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
organization_id |
query | No |
Request body
{
"name": "string",
"shooting_type_id": null,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "auto",
"allow_back_shots_without_back_image": true,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"shot_type_ids": [
"854a1ac1-d3c2-48b6-9489-2a4a806bb37c"
],
"subject_ids": [
"6d06f4f6-e63a-4050-8fe5-122ceacb046e"
],
"pose_preset_ids": [
"9020f53c-e7b8-4469-9b95-1a2058620d09"
],
"shot_type_rules": null,
"owner_id": null,
"organization_id": null
}
Schema of the request body
{
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"shooting_type_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Shooting Type Id"
},
"auto_generation_mode": {
"$ref": "#/components/schemas/AutoGenerationMode",
"description": "Auto-generation engine: 'default' (legacy), 'agentic' (autonomous agent), 'off' (disabled).",
"default": "default"
},
"auto_generate_outfits": {
"type": "boolean",
"title": "Auto Generate Outfits",
"description": "Whether brief-driven creations (wizard run-starts, expansions) compose initial looks with the AI Stylist. Request-level generate_outfit overrides this when sent explicitly.",
"default": true
},
"stylist_fillers_mode": {
"type": "string",
"enum": [
"auto",
"off"
],
"title": "Stylist Fillers Mode",
"description": "How the stylist may use generic filler products: 'auto' keeps the required-slot rescue lane, 'off' disables fillers for this brief. The interactive Restyle lane can override per run.",
"default": "auto"
},
"allow_back_shots_without_back_image": {
"type": "boolean",
"title": "Allow Back Shots Without Back Image",
"default": false
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id",
"description": "Optional generative workflow template attached at guideline creation. Cross-org and invalid-validation-status templates are rejected at the route layer (422)."
},
"auto_post_production_mode": {
"$ref": "#/components/schemas/AutoPostProductionMode",
"description": "Auto post-production behavior: 'none' skips it, 'default' runs the system workflow, 'custom' runs the selected auto_post_production_template_id (falling back to default on error).",
"default": "default"
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id",
"description": "Custom auto-post-prod workflow. Required with mode='custom', forbidden otherwise. Must be purpose='post_production', valid, and org-owned or public (422 at the route layer)."
},
"quality_assessment_mode": {
"$ref": "#/components/schemas/QualityAssessmentMode",
"description": "Quality Assessment behavior: none | default | custom.",
"default": "none"
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id",
"description": "Custom Quality Assessment workflow. Required with mode='custom' and forbidden otherwise."
},
"shot_type_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Shot Type Ids"
},
"subject_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Subject Ids"
},
"pose_preset_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Pose Preset Ids"
},
"shot_type_rules": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroupInput"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Shot Type Rules",
"description": "Optional list of shot-type rules to create alongside the guideline (one DB transaction). Each entry is one (rule_kind, rule_value) → list of shot_type_ids group. Omit to create the guideline with no rules."
},
"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 these guidelines belong to"
}
},
"type": "object",
"required": [
"name"
],
"title": "ShootingGuidelinesCreate",
"description": "Request model for creating ShootingGuidelines."
}
Responses
{
"id": "5a31a442-294a-4f8e-aa54-f92798c8c997",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"shooting_type_id": "3f9f643a-a72f-4e11-80a5-bdc6894fc902",
"shooting_type_key": "ECOMMERCE",
"is_system": true,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "string",
"allow_back_shots_without_back_image": true,
"owner_id": null,
"organization_id": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_types": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "f25a2ffe-aad3-4508-8728-e740264e0013",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null,
"custom_ref_image_url": null
}
],
"subjects": [
{
"id": "5f7953b2-f67f-4a2a-aca7-c88c2cc75a86",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "e859f7f2-ef8a-400c-82eb-02267f4c3b0e",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "d5bd99b6-7d8f-40f4-8281-4d73194a7912",
"organization_id": null
}
],
"pose_presets": [
{
"id": "df089da6-7b02-48aa-9747-18ec34a8c499",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "8a0d0cfb-211e-419d-848d-39d8e67eb129",
"default_shot_type": null,
"owner_id": "13cae9a2-b443-4e07-97a9-f50adbe2ef95",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"set_design": null,
"shot_type_rules": [
{
"rule_kind": "TYPE",
"rule_value": "string",
"shot_types": null
}
],
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"deleted_at": null,
"background_images": [
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"
},
"shooting_type_id": {
"type": "string",
"format": "uuid",
"title": "Shooting Type Id"
},
"shooting_type_key": {
"$ref": "#/components/schemas/ShootingTypeKey"
},
"is_system": {
"type": "boolean",
"title": "Is System"
},
"auto_generation_mode": {
"$ref": "#/components/schemas/AutoGenerationMode",
"default": "default"
},
"auto_generate_outfits": {
"type": "boolean",
"title": "Auto Generate Outfits",
"default": true
},
"stylist_fillers_mode": {
"type": "string",
"title": "Stylist Fillers Mode",
"default": "auto"
},
"allow_back_shots_without_back_image": {
"type": "boolean",
"title": "Allow Back Shots Without Back Image",
"default": false
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"shot_types": {
"items": {
"$ref": "#/components/schemas/GuidelineShotTypePublic"
},
"type": "array",
"title": "Shot Types",
"default": []
},
"subjects": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Subjects",
"default": []
},
"pose_presets": {
"items": {
"$ref": "#/components/schemas/PosePresetPublic"
},
"type": "array",
"title": "Pose Presets",
"default": []
},
"set_design": {
"anyOf": [
{
"$ref": "#/components/schemas/SetDesignPublic"
},
{
"type": "null"
}
]
},
"shot_type_rules": {
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroup"
},
"type": "array",
"title": "Shot Type Rules",
"default": []
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id"
},
"auto_post_production_mode": {
"$ref": "#/components/schemas/AutoPostProductionMode",
"default": "default"
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id"
},
"quality_assessment_mode": {
"$ref": "#/components/schemas/QualityAssessmentMode",
"default": "none"
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"background_images": {
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "string"
}
]
},
"type": "array",
"title": "Background Images"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shooting_type_id",
"shooting_type_key",
"is_system",
"resolution_preset_id",
"background_preset_id"
],
"title": "ShootingGuidelinesPublic",
"description": "Response model for ShootingGuidelines.\n\nCovers both row variants discriminated by the\n``ck_shootingguidelines_provenance`` CHECK:\n\n- **Templates**: ``owner_id`` is set, ``production_id`` is NULL.\n- **Snapshots**: ``owner_id`` is NULL, ``production_id`` points at\n a ShootingProduction (the polymorphic snapshot baked at\n production-create or guidelines-update time).\n\n``owner_id`` is therefore optional on the response — snapshots\nlegitimately carry NULL there."
}
GET /api/v1/guidelines/¶
Read Guidelines List
Description
Retrieve shooting guidelines.
- Regular users: Only see their own guidelines or organization guidelines
- Superusers: See all guidelines by default, or filter by owner_id
When organization_id query param is provided, returns guidelines belonging to that organization. Without organization_id, returns only personal guidelines (not belonging to any organization).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
background_images_n |
query | integer | 4 | No | |
limit |
query | integer | 100 | No | |
organization_id |
query | No | |||
owner_id |
query | No | |||
shooting_id |
query | No | |||
skip |
query | integer | 0 | No |
Responses
{
"data": [
{
"id": "f1ea55d4-307c-40a4-a441-81fc7f9f42b5",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"shooting_type_id": "aa08c27b-3867-4aa9-b102-04fc6d9205f5",
"shooting_type_key": "ECOMMERCE",
"is_system": true,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "string",
"allow_back_shots_without_back_image": true,
"owner_id": null,
"organization_id": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_types": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "636f579e-0e0b-4234-aecc-09b2d7cee4bd",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null,
"custom_ref_image_url": null
}
],
"subjects": [
{
"id": "59833aa5-0b80-45f2-afcb-c366f3fb193d",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "a4578f58-860a-4982-a01d-2985d66e9ab5",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "79e768d7-2d1a-4e69-bcf1-a2cb7c553da3",
"organization_id": null
}
],
"pose_presets": [
{
"id": "1dad88fc-e4c7-4224-af05-8f21b6bde1f3",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "2c9f3637-2b14-4f66-8e95-061b828b1739",
"default_shot_type": null,
"owner_id": "e63b9360-e136-493c-bc8e-bee45a71f771",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"set_design": null,
"shot_type_rules": [
{
"rule_kind": "TYPE",
"rule_value": "string",
"shot_types": null
}
],
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"deleted_at": null,
"background_images": [
null
]
}
],
"count": 0
}
Schema of the response body
{
"properties": {
"data": {
"items": {
"$ref": "#/components/schemas/ShootingGuidelinesPublic"
},
"type": "array",
"title": "Data"
},
"count": {
"type": "integer",
"title": "Count"
}
},
"type": "object",
"required": [
"data",
"count"
],
"title": "ShootingGuidelinesListPublic",
"description": "Response model for paginated list of ShootingGuidelines."
}
GET /api/v1/guidelines/{id}¶
Read Guidelines
Description
Get shooting guidelines 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": "731e97dc-548e-4af3-8398-82392e455bdb",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"shooting_type_id": "f68d0f32-3f96-4291-bd8c-6c5eb1fd0f0e",
"shooting_type_key": "ECOMMERCE",
"is_system": true,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "string",
"allow_back_shots_without_back_image": true,
"owner_id": null,
"organization_id": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_types": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "1fe71d07-2b75-43df-bfbf-6a3c62747ffd",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null,
"custom_ref_image_url": null
}
],
"subjects": [
{
"id": "1bf6d478-3272-40cb-861c-f9bd563c6aa6",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "03c10eb1-bb59-4cbd-9bfb-3606cb098d6b",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "8962f577-cb1f-4e5c-ae96-385db243e0eb",
"organization_id": null
}
],
"pose_presets": [
{
"id": "5a1e6df4-3456-489c-848d-2c5ae272d7d2",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "bc2214fe-dc7d-45a8-bc1e-8999c102770d",
"default_shot_type": null,
"owner_id": "2d503c3c-ea94-4b3f-86d9-6758ec000e13",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"set_design": null,
"shot_type_rules": [
{
"rule_kind": "TYPE",
"rule_value": "string",
"shot_types": null
}
],
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"deleted_at": null,
"background_images": [
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"
},
"shooting_type_id": {
"type": "string",
"format": "uuid",
"title": "Shooting Type Id"
},
"shooting_type_key": {
"$ref": "#/components/schemas/ShootingTypeKey"
},
"is_system": {
"type": "boolean",
"title": "Is System"
},
"auto_generation_mode": {
"$ref": "#/components/schemas/AutoGenerationMode",
"default": "default"
},
"auto_generate_outfits": {
"type": "boolean",
"title": "Auto Generate Outfits",
"default": true
},
"stylist_fillers_mode": {
"type": "string",
"title": "Stylist Fillers Mode",
"default": "auto"
},
"allow_back_shots_without_back_image": {
"type": "boolean",
"title": "Allow Back Shots Without Back Image",
"default": false
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"shot_types": {
"items": {
"$ref": "#/components/schemas/GuidelineShotTypePublic"
},
"type": "array",
"title": "Shot Types",
"default": []
},
"subjects": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Subjects",
"default": []
},
"pose_presets": {
"items": {
"$ref": "#/components/schemas/PosePresetPublic"
},
"type": "array",
"title": "Pose Presets",
"default": []
},
"set_design": {
"anyOf": [
{
"$ref": "#/components/schemas/SetDesignPublic"
},
{
"type": "null"
}
]
},
"shot_type_rules": {
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroup"
},
"type": "array",
"title": "Shot Type Rules",
"default": []
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id"
},
"auto_post_production_mode": {
"$ref": "#/components/schemas/AutoPostProductionMode",
"default": "default"
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id"
},
"quality_assessment_mode": {
"$ref": "#/components/schemas/QualityAssessmentMode",
"default": "none"
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"background_images": {
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "string"
}
]
},
"type": "array",
"title": "Background Images"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shooting_type_id",
"shooting_type_key",
"is_system",
"resolution_preset_id",
"background_preset_id"
],
"title": "ShootingGuidelinesPublic",
"description": "Response model for ShootingGuidelines.\n\nCovers both row variants discriminated by the\n``ck_shootingguidelines_provenance`` CHECK:\n\n- **Templates**: ``owner_id`` is set, ``production_id`` is NULL.\n- **Snapshots**: ``owner_id`` is NULL, ``production_id`` points at\n a ShootingProduction (the polymorphic snapshot baked at\n production-create or guidelines-update time).\n\n``owner_id`` is therefore optional on the response — snapshots\nlegitimately carry NULL there."
}
PUT /api/v1/guidelines/{id}¶
Update Guidelines
Description
Update shooting guidelines.
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,
"shooting_type_id": null,
"auto_generation_mode": null,
"auto_generate_outfits": null,
"stylist_fillers_mode": null,
"allow_back_shots_without_back_image": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_type_ids": null,
"subject_ids": null,
"pose_preset_ids": null,
"shot_type_rules": null,
"owner_id": null,
"organization_id": null,
"generative_workflow_template_id": null,
"auto_post_production_mode": null,
"auto_post_production_template_id": null,
"quality_assessment_mode": null,
"quality_assessment_template_id": null
}
Schema of the request body
{
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"shooting_type_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Shooting Type Id",
"description": "Immutable compatibility type; supplying this field is rejected."
},
"auto_generation_mode": {
"anyOf": [
{
"$ref": "#/components/schemas/AutoGenerationMode"
},
{
"type": "null"
}
],
"description": "Auto-generation engine: 'default' (legacy), 'agentic' (autonomous agent), 'off' (disabled)."
},
"auto_generate_outfits": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Auto Generate Outfits"
},
"stylist_fillers_mode": {
"anyOf": [
{
"type": "string",
"enum": [
"auto",
"off"
]
},
{
"type": "null"
}
],
"title": "Stylist Fillers Mode"
},
"allow_back_shots_without_back_image": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Allow Back Shots Without Back Image"
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"shot_type_ids": {
"anyOf": [
{
"items": {
"type": "string",
"format": "uuid"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Shot Type Ids"
},
"subject_ids": {
"anyOf": [
{
"items": {
"type": "string",
"format": "uuid"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Subject Ids"
},
"pose_preset_ids": {
"anyOf": [
{
"items": {
"type": "string",
"format": "uuid"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Pose Preset Ids"
},
"shot_type_rules": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroupInput"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Shot Type Rules",
"description": "Optional full-replace list of shot-type rules in group form (one entry per (rule_kind, rule_value) with its list of shot_type_ids). Omit to leave rules untouched; pass [] to clear all rules."
},
"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 these guidelines to"
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id",
"description": "Optional generative workflow template attached to these guidelines. Null clears the override. Cross-org templates are rejected (422)."
},
"auto_post_production_mode": {
"anyOf": [
{
"$ref": "#/components/schemas/AutoPostProductionMode"
},
{
"type": "null"
}
],
"description": "Auto post-production behavior: none | default | custom."
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id",
"description": "Custom auto-post-prod workflow. Only allowed together with mode='custom'; must be purpose='post_production', valid, and org-owned or public (422)."
},
"quality_assessment_mode": {
"anyOf": [
{
"$ref": "#/components/schemas/QualityAssessmentMode"
},
{
"type": "null"
}
],
"description": "Quality Assessment behavior: none | default | custom."
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id",
"description": "Custom valid purpose='quality_assessment' workflow."
}
},
"type": "object",
"title": "ShootingGuidelinesUpdate",
"description": "Request model for updating ShootingGuidelines."
}
Responses
{
"id": "67ca2a95-3266-462c-8c67-c2298eb3408d",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"shooting_type_id": "bc54431c-3abd-417b-8285-7d1409a68a13",
"shooting_type_key": "ECOMMERCE",
"is_system": true,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "string",
"allow_back_shots_without_back_image": true,
"owner_id": null,
"organization_id": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_types": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "a8ed2685-83d5-4585-b178-1d5627d2955f",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null,
"custom_ref_image_url": null
}
],
"subjects": [
{
"id": "927dad04-bcba-47e7-bf6c-1f4c1a7b3c4c",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "a18de9da-717d-4a55-b682-d371827b0816",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "bb49f04b-4295-4b35-a193-c01cadafde77",
"organization_id": null
}
],
"pose_presets": [
{
"id": "6aeac1ac-719d-45cd-8dc3-5963748d4d7f",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "0c7918dc-8b91-42f1-82a0-dea589663975",
"default_shot_type": null,
"owner_id": "1887813c-73ea-45a1-809e-05723cfd8a7d",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"set_design": null,
"shot_type_rules": [
{
"rule_kind": "TYPE",
"rule_value": "string",
"shot_types": null
}
],
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"deleted_at": null,
"background_images": [
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"
},
"shooting_type_id": {
"type": "string",
"format": "uuid",
"title": "Shooting Type Id"
},
"shooting_type_key": {
"$ref": "#/components/schemas/ShootingTypeKey"
},
"is_system": {
"type": "boolean",
"title": "Is System"
},
"auto_generation_mode": {
"$ref": "#/components/schemas/AutoGenerationMode",
"default": "default"
},
"auto_generate_outfits": {
"type": "boolean",
"title": "Auto Generate Outfits",
"default": true
},
"stylist_fillers_mode": {
"type": "string",
"title": "Stylist Fillers Mode",
"default": "auto"
},
"allow_back_shots_without_back_image": {
"type": "boolean",
"title": "Allow Back Shots Without Back Image",
"default": false
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"shot_types": {
"items": {
"$ref": "#/components/schemas/GuidelineShotTypePublic"
},
"type": "array",
"title": "Shot Types",
"default": []
},
"subjects": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Subjects",
"default": []
},
"pose_presets": {
"items": {
"$ref": "#/components/schemas/PosePresetPublic"
},
"type": "array",
"title": "Pose Presets",
"default": []
},
"set_design": {
"anyOf": [
{
"$ref": "#/components/schemas/SetDesignPublic"
},
{
"type": "null"
}
]
},
"shot_type_rules": {
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroup"
},
"type": "array",
"title": "Shot Type Rules",
"default": []
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id"
},
"auto_post_production_mode": {
"$ref": "#/components/schemas/AutoPostProductionMode",
"default": "default"
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id"
},
"quality_assessment_mode": {
"$ref": "#/components/schemas/QualityAssessmentMode",
"default": "none"
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"background_images": {
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "string"
}
]
},
"type": "array",
"title": "Background Images"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shooting_type_id",
"shooting_type_key",
"is_system",
"resolution_preset_id",
"background_preset_id"
],
"title": "ShootingGuidelinesPublic",
"description": "Response model for ShootingGuidelines.\n\nCovers both row variants discriminated by the\n``ck_shootingguidelines_provenance`` CHECK:\n\n- **Templates**: ``owner_id`` is set, ``production_id`` is NULL.\n- **Snapshots**: ``owner_id`` is NULL, ``production_id`` points at\n a ShootingProduction (the polymorphic snapshot baked at\n production-create or guidelines-update time).\n\n``owner_id`` is therefore optional on the response — snapshots\nlegitimately carry NULL there."
}
DELETE /api/v1/guidelines/{id}¶
Delete Guidelines
Description
Delete shooting guidelines.
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/guidelines/{id}/agent-attach¶
Agent Attach Guidelines
Description
Attach subjects / pose presets / a stylist to the job's guidelines.
SAR-1919 for the lists, plan 002 for stylist_id.
JOB-SCOPED token only, and only for the guidelines of the shooting this job
targets. Additive union: ids already linked are left alone and nothing is
ever unlinked, so a rerun cannot wipe the talent or the poses an operator
picked between runs. That is the whole reason this is not
PUT /guidelines/{id} — the update path replaces each list wholesale, and
exposes a few dozen other fields a job token has no business touching.
Both lists are validated against what this organization may actually see.
Existence alone is not enough: GuidelinesCRUD.update checks only that
the row exists, which for a job token would mean any organization's subject
or preset could be linked into its own guidelines.
stylist_id and export_configuration_id are scalars, so union does
not translate: each follows the resolution preset instead —
LAST-EXTRACTION-WINS (the operator pointed at this shooting and asked;
silence would be a lost write). An existing pointer is replaced and the
message says so; only re-sending the same id reads unchanged. The
VALUES of an operator-tuned stylist/configuration are still never touched
— the create path absorbs existing rows untouched; only the pointer moves.
The body forbids unknown keys (plan 003): a misspelled field would otherwise return 200 having attached nothing.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Request body
{
"subject_ids": [
"23b55688-a89d-4fce-91fb-05cd4c611dbc"
],
"pose_preset_ids": [
"9f3a92d2-df44-4212-b8b9-20ea14b05212"
],
"stylist_id": null,
"export_configuration_id": null
}
Schema of the request body
{
"properties": {
"subject_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Subject Ids"
},
"pose_preset_ids": {
"items": {
"type": "string",
"format": "uuid"
},
"type": "array",
"title": "Pose Preset Ids"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
}
},
"additionalProperties": false,
"type": "object",
"title": "GuidelinesAgentAttach",
"description": "Additive attach of subjects / pose presets by an agent job (SAR-1919).\n\nUnion semantics, deliberately NOT the replace semantics of\n``ShootingGuidelinesUpdate``: that path deletes the whole association list\nand reinserts it, so a retried extraction would wipe whatever the operator\nhad already picked. The agent adds; it never removes.\n\nBoth lists default to empty — a call carrying only subjects leaves poses\nuntouched, and vice versa.\n\n``stylist_id`` (plan 002) and ``export_configuration_id`` (plan 003) are\nscalars, so union does not translate: each is set only when the guideline\nhas none. An operator's pick, or an earlier run's, wins over the current\nrun — the same \"adds, never removes\" invariant, spelled for a\nsingle-valued field.\n\n``extra=\"forbid\"`` (plan 003, tightening what plans 001/002 shipped): the\ndefault would accept ``{\"export_config_id\": ...}`` with a 200 having\nattached nothing, and the run would report success on a guideline that is\nnot configured. A misspelled key must fail where it is sent."
}
Responses
POST /api/v1/guidelines/{id}/restore¶
Restore Guidelines
Description
Restore a soft-deleted shooting guidelines (admin only).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
OAuth2PasswordBearer |
header | string | N/A | No | |
id |
path | string | No |
Responses
{
"id": "e68d935a-3fa9-44ee-92d9-670ab149c092",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"shooting_type_id": "608f3264-a73b-4e2b-8046-267e32732976",
"shooting_type_key": "ECOMMERCE",
"is_system": true,
"auto_generation_mode": "default",
"auto_generate_outfits": true,
"stylist_fillers_mode": "string",
"allow_back_shots_without_back_image": true,
"owner_id": null,
"organization_id": null,
"resolution_preset_id": null,
"background_preset_id": null,
"set_design_id": null,
"stylist_id": null,
"export_configuration_id": null,
"shot_types": [
{
"name": "string",
"view_angle": "front",
"framing": null,
"shot_type_ref_image_url": null,
"shot_type_prompt_instruction": null,
"file_naming_convention": null,
"reference_image_url": null,
"prompt": null,
"prompt_builder_section": null,
"core_focus": true,
"default_shot_type": null,
"margins": null,
"margins_key": null,
"owner_id": null,
"public": true,
"organization_id": null,
"requires_subject": true,
"id": "25d75152-6b32-40a7-ac56-36c43b71ef99",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"deleted_at": null,
"reference_image": null,
"custom_ref_image_url": null
}
],
"subjects": [
{
"id": "2f47d277-d11d-456d-935b-eeaacc02f7dc",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"surname": null,
"slug": "string",
"description": null,
"age_class": "newborn",
"gender": "MALE",
"subject_type": "AI",
"body_type": null,
"ethnicity": null,
"public": true,
"enabled": true,
"ready": true,
"cover_image_url": null,
"portrait_image_url": null,
"data_image_urls": [
"string"
],
"cover_image_media": null,
"portrait_image_media": null,
"data_images_media": null,
"portfolio_images_media": null,
"base_images": [
{
"shot_type_id": "5f16e0b0-c9b9-486a-8d68-2def40a8abb9",
"shot_type_label": "string",
"image_url": "string"
}
],
"measurements": null,
"deleted_at": null,
"owner_id": "3e95515a-d305-49f0-adb0-bebcaf02cf80",
"organization_id": null
}
],
"pose_presets": [
{
"id": "43af9389-ca38-4bfd-8641-0a8817547cf0",
"created_at": "2022-04-13T15:42:05.901Z",
"updated_at": "2022-04-13T15:42:05.901Z",
"name": "string",
"prompt": null,
"shot_type_id": "784a09c7-ede3-4079-b8c0-1171e8f357bb",
"default_shot_type": null,
"owner_id": "86a424e3-b60b-429d-a30d-dc246ff835fc",
"organization_id": null,
"public": true,
"pose_image_url": null,
"pose_image_media": null,
"deleted_at": null
}
],
"set_design": null,
"shot_type_rules": [
{
"rule_kind": "TYPE",
"rule_value": "string",
"shot_types": null
}
],
"generative_workflow_template_id": null,
"auto_post_production_mode": "none",
"auto_post_production_template_id": null,
"quality_assessment_mode": "none",
"quality_assessment_template_id": null,
"deleted_at": null,
"background_images": [
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"
},
"shooting_type_id": {
"type": "string",
"format": "uuid",
"title": "Shooting Type Id"
},
"shooting_type_key": {
"$ref": "#/components/schemas/ShootingTypeKey"
},
"is_system": {
"type": "boolean",
"title": "Is System"
},
"auto_generation_mode": {
"$ref": "#/components/schemas/AutoGenerationMode",
"default": "default"
},
"auto_generate_outfits": {
"type": "boolean",
"title": "Auto Generate Outfits",
"default": true
},
"stylist_fillers_mode": {
"type": "string",
"title": "Stylist Fillers Mode",
"default": "auto"
},
"allow_back_shots_without_back_image": {
"type": "boolean",
"title": "Allow Back Shots Without Back Image",
"default": false
},
"owner_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Owner Id"
},
"organization_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Organization Id"
},
"resolution_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Resolution Preset Id"
},
"background_preset_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Background Preset Id"
},
"set_design_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Set Design Id"
},
"stylist_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Stylist Id"
},
"export_configuration_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Export Configuration Id"
},
"shot_types": {
"items": {
"$ref": "#/components/schemas/GuidelineShotTypePublic"
},
"type": "array",
"title": "Shot Types",
"default": []
},
"subjects": {
"items": {
"$ref": "#/components/schemas/SubjectPublic"
},
"type": "array",
"title": "Subjects",
"default": []
},
"pose_presets": {
"items": {
"$ref": "#/components/schemas/PosePresetPublic"
},
"type": "array",
"title": "Pose Presets",
"default": []
},
"set_design": {
"anyOf": [
{
"$ref": "#/components/schemas/SetDesignPublic"
},
{
"type": "null"
}
]
},
"shot_type_rules": {
"items": {
"$ref": "#/components/schemas/GuidelinesShotTypeRuleGroup"
},
"type": "array",
"title": "Shot Type Rules",
"default": []
},
"generative_workflow_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Generative Workflow Template Id"
},
"auto_post_production_mode": {
"$ref": "#/components/schemas/AutoPostProductionMode",
"default": "default"
},
"auto_post_production_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Auto Post Production Template Id"
},
"quality_assessment_mode": {
"$ref": "#/components/schemas/QualityAssessmentMode",
"default": "none"
},
"quality_assessment_template_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Quality Assessment Template Id"
},
"deleted_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Deleted At"
},
"background_images": {
"items": {
"anyOf": [
{
"$ref": "#/components/schemas/MediaResourcePublic"
},
{
"type": "string"
}
]
},
"type": "array",
"title": "Background Images"
}
},
"type": "object",
"required": [
"id",
"created_at",
"updated_at",
"name",
"shooting_type_id",
"shooting_type_key",
"is_system",
"resolution_preset_id",
"background_preset_id"
],
"title": "ShootingGuidelinesPublic",
"description": "Response model for ShootingGuidelines.\n\nCovers both row variants discriminated by the\n``ck_shootingguidelines_provenance`` CHECK:\n\n- **Templates**: ``owner_id`` is set, ``production_id`` is NULL.\n- **Snapshots**: ``owner_id`` is NULL, ``production_id`` points at\n a ShootingProduction (the polymorphic snapshot baked at\n production-create or guidelines-update time).\n\n``owner_id`` is therefore optional on the response — snapshots\nlegitimately carry NULL there."
}
Schemas¶
AssignOwnerRequest¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
id |
string(uuid) | |
new_owner_id |
string(uuid) | |
updated_at |
string(date-time) |
AutoGenerationMode¶
Type: string
AutoPostProductionMode¶
Type: string
BackgroundFixStrategy¶
Type: string
BackgroundPresetCreate¶
| Name | Type | Description |
|---|---|---|
framings |
Array<BackgroundPresetFramingCreate> | At least one framing entry is required |
name |
string | |
organization_id |
Organization this preset belongs to | |
owner_id |
||
prompt |
Optional free-text directive appended to every generation prompt that uses this background (e.g. 'make the background pure #FFFFFF white'). | |
strategy |
Strategy for background fix processing |
BackgroundPresetFramingCreate¶
| Name | Type | Description |
|---|---|---|
framing |
||
image |
URL or MediaInput for framing image |
BackgroundPresetFramingPublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
framing |
||
id |
string(uuid) | |
image_media |
||
image_url |
||
updated_at |
string(date-time) |
BackgroundPresetPublic¶
| Name | Type | Description |
|---|---|---|
cover_image_url |
||
created_at |
string(date-time) | |
deleted_at |
||
framings |
Array<BackgroundPresetFramingPublic> | |
id |
string(uuid) | |
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
prompt |
||
strategy |
||
updated_at |
string(date-time) |
BackgroundPresetsPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
data |
Array<BackgroundPresetPublic> |
BackgroundPresetUpdate¶
| Name | Type | Description |
|---|---|---|
framings |
Full-replace framings list. None = no change. | |
name |
||
organization_id |
Organization to transfer this preset to | |
owner_id |
||
prompt |
Optional free-text directive appended to every generation prompt that uses this background. Send null to clear; omit to leave unchanged. | |
strategy |
Strategy for background fix processing |
BaseImageCreate¶
| Name | Type | Description |
|---|---|---|
image_url |
string | |
shot_type_id |
string(uuid) |
BaseImageListResponse¶
| Name | Type | Description |
|---|---|---|
data |
Array<BaseImagePublic> |
BaseImagePublic¶
| Name | Type | Description |
|---|---|---|
image_url |
string | |
shot_type_id |
string(uuid) | |
shot_type_label |
string |
Body_upload_subject_base_images_zip¶
| Name | Type | Description |
|---|---|---|
file |
string |
BodyType¶
Type: string
BulkAssignSubjectsRequest¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
id |
string(uuid) | |
subject_ids |
Array<string(uuid)> | |
updated_at |
string(date-time) |
DefaultShotTypes¶
Type: string
EyeColor¶
Type: string
Gender¶
Type: string
GuidelinesAgentAttach¶
| Name | Type | Description |
|---|---|---|
export_configuration_id |
||
pose_preset_ids |
Array<string(uuid)> | |
stylist_id |
||
subject_ids |
Array<string(uuid)> |
GuidelineShotTypePublic¶
| Name | Type | Description |
|---|---|---|
core_focus |
boolean | |
created_at |
string(date-time) | |
custom_ref_image_url |
||
default_shot_type |
||
deleted_at |
||
file_naming_convention |
||
framing |
||
id |
string(uuid) | |
margins |
||
margins_key |
||
name |
string | |
organization_id |
||
owner_id |
||
prompt |
||
prompt_builder_section |
||
public |
boolean | |
reference_image |
||
reference_image_url |
||
requires_subject |
boolean | |
shot_type_prompt_instruction |
||
shot_type_ref_image_url |
||
updated_at |
string(date-time) | |
view_angle |
ViewAngle |
GuidelinesShotTypeRuleGroup¶
| Name | Type | Description |
|---|---|---|
rule_kind |
GuidelinesShotTypeRuleKind | |
rule_value |
string | |
shot_types |
Array<GuidelineShotTypePublic> |
GuidelinesShotTypeRuleGroupInput¶
| Name | Type | Description |
|---|---|---|
rule_kind |
GuidelinesShotTypeRuleKind | |
rule_value |
string | |
shot_type_ids |
Array<string(uuid)> | |
shot_type_images |
GuidelinesShotTypeRuleKind¶
Type: string
HairColor¶
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 |
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) |
QualityAssessmentMode¶
Type: string
ResolutionPresetAgentUpsert¶
| Name | Type | Description |
|---|---|---|
attach_to_guidelines |
boolean | |
format |
||
height |
integer | |
name |
||
source_product_url |
||
width |
integer |
ResolutionPresetCreate¶
| Name | Type | Description |
|---|---|---|
format |
Lowercase image format, e.g. jpeg | |
height |
integer | Height in pixels |
name |
string | |
organization_id |
Organization this preset belongs to | |
owner_id |
||
width |
integer | Width in pixels |
ResolutionPresetPublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
created_via |
string | |
deleted_at |
||
format |
||
height |
integer | |
id |
string(uuid) | |
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
source_product_url |
||
updated_at |
string(date-time) | |
width |
integer |
ResolutionPresetsPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
data |
Array<ResolutionPresetPublic> |
ResolutionPresetUpdate¶
| Name | Type | Description |
|---|---|---|
format |
Lowercase image format, e.g. jpeg | |
height |
Height in pixels | |
name |
||
organization_id |
Organization to transfer this preset to | |
owner_id |
||
width |
Width in pixels |
SetBaseImagePublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
id |
string(uuid) | |
image_media |
||
image_url |
||
shot_type_id |
string(uuid) | |
subject_id |
string(uuid) | |
updated_at |
string(date-time) | |
variant_index |
integer |
SetDesignPublic¶
| Name | Type | Description |
|---|---|---|
background_preset_id |
||
base_images |
Array<SetBaseImagePublic> | |
created_at |
string(date-time) | |
deleted_at |
||
description |
||
id |
string(uuid) | |
is_draft |
boolean | |
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
production_due_at |
||
reference_images |
Array<SetReferenceImagePublic> | |
subject_portraits |
Array<SubjectPortraitPublic> | |
updated_at |
string(date-time) |
SetReferenceImagePublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
id |
string(uuid) | |
image_media |
||
image_url |
||
label |
||
shot_type_id |
string(uuid) | |
updated_at |
string(date-time) |
ShootingGuidelinesCreate¶
| Name | Type | Description |
|---|---|---|
allow_back_shots_without_back_image |
boolean | |
auto_generate_outfits |
boolean | Whether brief-driven creations (wizard run-starts, expansions) compose initial looks with the AI Stylist. Request-level generate_outfit overrides this when sent explicitly. |
auto_generation_mode |
AutoGenerationMode | Auto-generation engine: 'default' (legacy), 'agentic' (autonomous agent), 'off' (disabled). |
auto_post_production_mode |
AutoPostProductionMode | Auto post-production behavior: 'none' skips it, 'default' runs the system workflow, 'custom' runs the selected auto_post_production_template_id (falling back to default on error). |
auto_post_production_template_id |
Custom auto-post-prod workflow. Required with mode='custom', forbidden otherwise. Must be purpose='post_production', valid, and org-owned or public (422 at the route layer). | |
background_preset_id |
||
export_configuration_id |
||
generative_workflow_template_id |
Optional generative workflow template attached at guideline creation. Cross-org and invalid-validation-status templates are rejected at the route layer (422). | |
name |
string | |
organization_id |
Organization these guidelines belong to | |
owner_id |
||
pose_preset_ids |
Array<string(uuid)> | |
quality_assessment_mode |
QualityAssessmentMode | Quality Assessment behavior: none | default | custom. |
quality_assessment_template_id |
Custom Quality Assessment workflow. Required with mode='custom' and forbidden otherwise. | |
resolution_preset_id |
||
set_design_id |
||
shooting_type_id |
||
shot_type_ids |
Array<string(uuid)> | |
shot_type_rules |
Optional list of shot-type rules to create alongside the guideline (one DB transaction). Each entry is one (rule_kind, rule_value) → list of shot_type_ids group. Omit to create the guideline with no rules. | |
stylist_fillers_mode |
string | How the stylist may use generic filler products: 'auto' keeps the required-slot rescue lane, 'off' disables fillers for this brief. The interactive Restyle lane can override per run. |
stylist_id |
||
subject_ids |
Array<string(uuid)> |
ShootingGuidelinesListPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
data |
Array<ShootingGuidelinesPublic> |
ShootingGuidelinesPublic¶
| Name | Type | Description |
|---|---|---|
allow_back_shots_without_back_image |
boolean | |
auto_generate_outfits |
boolean | |
auto_generation_mode |
AutoGenerationMode | |
auto_post_production_mode |
AutoPostProductionMode | |
auto_post_production_template_id |
||
background_images |
Array<> | |
background_preset_id |
||
created_at |
string(date-time) | |
deleted_at |
||
export_configuration_id |
||
generative_workflow_template_id |
||
id |
string(uuid) | |
is_system |
boolean | |
name |
string | |
organization_id |
||
owner_id |
||
pose_presets |
Array<PosePresetPublic> | |
quality_assessment_mode |
QualityAssessmentMode | |
quality_assessment_template_id |
||
resolution_preset_id |
||
set_design |
||
set_design_id |
||
shooting_type_id |
string(uuid) | |
shooting_type_key |
ShootingTypeKey | |
shot_type_rules |
Array<GuidelinesShotTypeRuleGroup> | |
shot_types |
Array<GuidelineShotTypePublic> | |
stylist_fillers_mode |
string | |
stylist_id |
||
subjects |
Array<SubjectPublic> | |
updated_at |
string(date-time) |
ShootingGuidelinesUpdate¶
| Name | Type | Description |
|---|---|---|
allow_back_shots_without_back_image |
||
auto_generate_outfits |
||
auto_generation_mode |
Auto-generation engine: 'default' (legacy), 'agentic' (autonomous agent), 'off' (disabled). | |
auto_post_production_mode |
Auto post-production behavior: none | default | custom. | |
auto_post_production_template_id |
Custom auto-post-prod workflow. Only allowed together with mode='custom'; must be purpose='post_production', valid, and org-owned or public (422). | |
background_preset_id |
||
export_configuration_id |
||
generative_workflow_template_id |
Optional generative workflow template attached to these guidelines. Null clears the override. Cross-org templates are rejected (422). | |
name |
||
organization_id |
Organization to transfer these guidelines to | |
owner_id |
||
pose_preset_ids |
||
quality_assessment_mode |
Quality Assessment behavior: none | default | custom. | |
quality_assessment_template_id |
Custom valid purpose='quality_assessment' workflow. | |
resolution_preset_id |
||
set_design_id |
||
shooting_type_id |
Immutable compatibility type; supplying this field is rejected. | |
shot_type_ids |
||
shot_type_rules |
Optional full-replace list of shot-type rules in group form (one entry per (rule_kind, rule_value) with its list of shot_type_ids). Omit to leave rules untouched; pass [] to clear all rules. | |
stylist_fillers_mode |
||
stylist_id |
||
subject_ids |
ShootingTypeKey¶
Type: string
ShotTypeAgentUpsert¶
| Name | Type | Description |
|---|---|---|
default_shot_type |
||
framing |
||
margins |
||
margins_key |
||
name |
||
shot_type_id |
||
source_product_url |
||
view_angle |
ShotTypeCreate¶
| Name | Type | Description |
|---|---|---|
core_focus |
boolean | |
default_shot_type |
||
file_naming_convention |
||
framing |
||
margins |
||
margins_key |
||
name |
string | |
organization_id |
||
owner_id |
||
prompt |
||
prompt_builder_section |
||
public |
boolean | |
reference_image_url |
||
requires_subject |
boolean | |
shot_type_prompt_instruction |
||
shot_type_ref_image_url |
||
view_angle |
ViewAngle |
ShotTypeFraming¶
Type: string
ShotTypePublic¶
| Name | Type | Description |
|---|---|---|
core_focus |
boolean | |
created_at |
string(date-time) | |
default_shot_type |
||
deleted_at |
||
file_naming_convention |
||
framing |
||
id |
string(uuid) | |
margins |
||
margins_key |
||
name |
string | |
organization_id |
||
owner_id |
||
prompt |
||
prompt_builder_section |
||
public |
boolean | |
reference_image |
||
reference_image_url |
||
requires_subject |
boolean | |
shot_type_prompt_instruction |
||
shot_type_ref_image_url |
||
updated_at |
string(date-time) | |
view_angle |
ViewAngle |
ShotTypesPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
data |
Array<ShotTypePublic> |
ShotTypeUpdate¶
| Name | Type | Description |
|---|---|---|
core_focus |
||
default_shot_type |
||
file_naming_convention |
||
framing |
||
margins |
||
name |
||
organization_id |
||
owner_id |
||
prompt |
||
prompt_builder_section |
||
public |
||
reference_image_url |
||
requires_subject |
||
shot_type_prompt_instruction |
||
shot_type_ref_image_url |
||
view_angle |
SubjectAdmin¶
| Name | Type | Description |
|---|---|---|
age_class |
SubjectAgeClass | |
base_images |
Array<BaseImagePublic> | |
body_type |
||
cover_image_media |
||
cover_image_url |
||
created_at |
string(date-time) | |
data_image_urls |
Array<string> | |
data_images_media |
||
deleted_at |
||
description |
||
enabled |
boolean | |
ethnicity |
||
gender |
Gender | |
id |
string(uuid) | |
measurements |
||
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
portfolio_images_media |
||
portrait_image_media |
||
portrait_image_url |
||
public |
boolean | |
ready |
boolean | |
slug |
string | |
subject_type |
SubjectType | |
surname |
||
updated_at |
string(date-time) |
SubjectAgeClass¶
Type: string
SubjectBaseImagesUploadTaskPublic¶
| Name | Type | Description |
|---|---|---|
completed_at |
||
created_at |
string(date-time) | |
error_message |
||
id |
string(uuid) | |
images_processed |
integer | |
images_skipped |
integer | |
owner_id |
string(uuid) | |
portfolio_images_processed |
integer | |
processed_items |
integer | |
progress |
integer | |
result_data |
||
started_at |
||
status |
TaskStatus-Output | |
subject_id |
string(uuid) | |
total_items |
integer |
SubjectCreate¶
| Name | Type | Description |
|---|---|---|
age_class |
SubjectAgeClass | |
base_images |
||
body_type |
||
cover_image |
||
data_images |
||
description |
||
ethnicity |
||
gender |
Gender | |
measurements |
||
name |
string | |
organization_id |
Organization this subject belongs to | |
portfolio_images |
||
portrait_image |
||
public |
boolean | |
subject_type |
SubjectType | |
surname |
SubjectMeasurementsCreate¶
| Name | Type | Description |
|---|---|---|
bust_cm |
||
eye_color |
||
hair_color |
||
height_cm |
||
hips_cm |
||
shoe_eu |
||
waist_cm |
SubjectMeasurementsPublic¶
| Name | Type | Description |
|---|---|---|
bust_cm |
||
eye_color |
||
hair_color |
||
height_cm |
||
hips_cm |
||
id |
string(uuid) | |
shoe_eu |
||
waist_cm |
SubjectMeasurementsUpdate¶
| Name | Type | Description |
|---|---|---|
bust_cm |
||
eye_color |
||
hair_color |
||
height_cm |
||
hips_cm |
||
shoe_eu |
||
waist_cm |
SubjectPortraitPublic¶
| Name | Type | Description |
|---|---|---|
created_at |
string(date-time) | |
id |
string(uuid) | |
image_media |
||
subject_id |
string(uuid) | |
updated_at |
string(date-time) |
SubjectPublic¶
| Name | Type | Description |
|---|---|---|
age_class |
SubjectAgeClass | |
base_images |
Array<BaseImagePublic> | |
body_type |
||
cover_image_media |
||
cover_image_url |
||
created_at |
string(date-time) | |
data_image_urls |
Array<string> | |
data_images_media |
||
deleted_at |
||
description |
||
enabled |
boolean | |
ethnicity |
||
gender |
Gender | |
id |
string(uuid) | |
measurements |
||
name |
string | |
organization_id |
||
owner_id |
string(uuid) | |
portfolio_images_media |
||
portrait_image_media |
||
portrait_image_url |
||
public |
boolean | |
ready |
boolean | |
slug |
string | |
subject_type |
SubjectType | |
surname |
||
updated_at |
string(date-time) |
SubjectsAdmin¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
created_at |
string(date-time) | |
data |
Array<SubjectAdmin> | |
id |
string(uuid) | |
updated_at |
string(date-time) |
SubjectsPublic¶
| Name | Type | Description |
|---|---|---|
count |
integer | |
created_at |
string(date-time) | |
data |
Array<SubjectPublic> | |
id |
string(uuid) | |
updated_at |
string(date-time) |
SubjectType¶
Type: string
SubjectUpdate¶
| Name | Type | Description |
|---|---|---|
age_class |
||
body_type |
||
cover_image |
||
data_images |
||
description |
||
ethnicity |
||
gender |
||
measurements |
||
name |
||
organization_id |
Organization to transfer this subject to | |
portfolio_images |
||
portrait_image |
||
public |
||
ready |
||
surname |
TaskStatus-Output¶
Type: string
ValidationError¶
| Name | Type | Description |
|---|---|---|
ctx |
||
input |
||
loc |
Array<> | |
msg |
string | |
type |
string |
ViewAngle¶
Type: string
Security schemes¶
| Name | Type | Scheme | Description |
|---|---|---|---|
| OAuth2PasswordBearer | oauth2 |