Skip to content

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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)."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "shot_type_id": "c35b3f1f-78d6-42a0-8bee-a16ddb4b7c07",
    "image_url": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "data": [
        {
            "shot_type_id": "c6670bec-ebcf-492f-a280-dd46966802b2",
            "shot_type_label": "string",
            "image_url": "string"
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/BaseImagePublic"
            },
            "type": "array",
            "title": "Data"
        }
    },
    "type": "object",
    "required": [
        "data"
    ],
    "title": "BaseImageListResponse",
    "description": "Schema for listing base images"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "file": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "file": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "File"
        }
    },
    "type": "object",
    "required": [
        "file"
    ],
    "title": "Body_upload_subject_base_images_zip"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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 canonical name preserves semantics (for example still life) that the legacy axes cannot represent. Without it the name still comes from DefaultShotTypes.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/BackgroundPresetPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "BackgroundPresetsPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "height": 1080,
    "name": "Full HD",
    "width": 1920
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/ResolutionPresetPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ResolutionPresetsPublic"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "height": 720,
    "name": "Updated HD",
    "width": 1280
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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

{
    "message": "string"
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "message"
    ],
    "title": "Message"
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

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."
}

{
    "detail": [
        {
            "loc": [
                null
            ],
            "msg": "string",
            "type": "string",
            "input": null,
            "ctx": {}
        }
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "detail": {
            "items": {
                "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
        }
    },
    "type": "object",
    "title": "HTTPValidationError"
}

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