Skip to content

Shootings Endpoints

Photo shoot sessions, looks, shots, and outfits.


Overview

Shootings

Method Endpoint Description
GET /shootings/ List shootings
POST /shootings/ Create shooting
GET /shootings/{id} Get shooting
PATCH /shootings/{id} Update shooting
DELETE /shootings/{id} Delete shooting
POST /shootings/{id}/looks Add look to shooting

Shots

Method Endpoint Description
GET /shots/ List shots
GET /shots/{id} Get shot
PATCH /shots/{id} Update shot
POST /shots/{id}/generate Trigger generation
POST /shots/{id}/approve Approve shot
POST /shots/{id}/reject Reject shot

Outfits

Method Endpoint Description
GET /outfits/ List outfits
POST /outfits/ Create outfit
GET /outfits/{id} Get outfit

API Reference

Sartiq Backend Server - Shootings 0.1.0

shootings


POST /api/v1/shootings/

Create Shooting

Description

Create a new shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No

Request body

{
    "name": "string",
    "description": null,
    "due_date": "2022-04-13T15:42:05.901Z",
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "organization_id": null,
    "default_guidelines_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"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "type": "string",
            "format": "date-time",
            "title": "Due Date"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id",
            "description": "Organization this shooting belongs to"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id",
            "description": "Default guidelines preset for this shooting"
        }
    },
    "type": "object",
    "required": [
        "name",
        "due_date"
    ],
    "title": "ShootingCreate",
    "description": "Request model for creating a new Shooting."
}

Responses

{
    "id": "89d28615-40dc-438a-9d25-5eccd3bc4533",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "name": "string",
    "description": null,
    "due_date": null,
    "owner_id": "1cd6d6ca-d5ef-41bd-9e8f-4d5ee1315927",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "shot_status": null,
    "status": 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"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "name",
        "owner_id"
    ],
    "title": "ShootingPublic",
    "description": "Response model for Shooting."
}

{
    "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/shootings/

Read Shootings

Description

Retrieve all shootings (without looks for performance). Use GET /shootings/{shooting_id} to get a shooting with its looks.

When organization_id query param is provided, returns shootings belonging to that organization. Without organization_id, returns only personal shootings (not belonging to any organization).

The statuses parameter filters shootings by their computed status, which is determined by the minimum (least progressed) status across all shots in all shooting looks.

Available status values: - ShotStatus: PENDING, PROPOSAL, REJECTED, POST_PROD, POST_PROD_REJECTED, REVIEW, APPROVED - ShootingLookStatus: DRAFT, READY - Special: WITHOUT_STATUS (shootings with no looks or shots)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
limit query integer 100 No
organization_id query No
skip query integer 0 No
statuses query No

Responses

{
    "data": [
        {
            "id": "ecbd4246-827d-456d-a0d2-ea964d127c48",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "description": null,
            "due_date": null,
            "owner_id": "526f936e-9d69-4e25-b849-f32fc7aa9bce",
            "organization_id": null,
            "archived": true,
            "season": null,
            "collection": null,
            "brand": null,
            "default_guidelines_id": null,
            "default_guidelines": null,
            "shot_status": null,
            "status": 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/ShootingPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingsPublic",
    "description": "Response model for paginated list of Shootings (without looks for performance)."
}

{
    "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/shootings/summary

Get Shooting Summary

Description

Get summary statistics for shootings.

Returns total products, total shooting looks, and breakdown by computed shot status. The status is determined by the minimum (least progressed) shot status across all shots in each shooting look.

When organization_id query param is provided, returns summary for shootings belonging to that organization. Without organization_id, returns summary only for personal shootings (not belonging to any organization).

If shooting_id is provided, filters to that specific shooting. When both organization_id and shooting_id are provided, the shooting must belong to the specified organization.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No
shooting_id query No

Responses

{
    "total_products": 0,
    "total_shooting_looks": 0,
    "status_breakdown": [
        {
            "status": "DRAFT",
            "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": {
        "total_products": {
            "type": "integer",
            "title": "Total Products"
        },
        "total_shooting_looks": {
            "type": "integer",
            "title": "Total Shooting Looks"
        },
        "status_breakdown": {
            "items": {
                "$ref": "#/components/schemas/ShootingStatusCount"
            },
            "type": "array",
            "title": "Status Breakdown"
        }
    },
    "type": "object",
    "required": [
        "total_products",
        "total_shooting_looks",
        "status_breakdown"
    ],
    "title": "ShootingSummary",
    "description": "Summary statistics for shootings."
}

{
    "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/shootings/{shooting_id}

Read Shooting

Description

Get a shooting by ID with all its details including guidelines and looks.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No
shooting_id path string No

Responses

{
    "id": "3f471360-af20-4da5-b112-14c76de84424",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "name": "string",
    "description": null,
    "due_date": null,
    "owner_id": "e931c486-fe3f-41d6-b363-c0fd6a167da6",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "shot_status": null,
    "status": null,
    "looks": [
        {
            "id": "874cb3ba-9b04-4ced-bf5f-49ed8c0c5292",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "1a8e44b0-9b44-4d95-88e8-632a4158f6f4",
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "style_id": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "file_format": "string",
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "67b44077-6abb-47f5-898e-9001c948f676",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "29ebac83-388a-4437-b6ca-47a7543ac4d1",
                    "owner_id": "89850881-801a-41ca-9bba-cf4ba8f64a0c",
                    "organization_id": null,
                    "pose_image_url": null,
                    "pose_image_media": null
                }
            ],
            "shots": [
                {
                    "id": "162b5e00-53c8-45b8-a504-22506114f419",
                    "shooting_look_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "revisions": [
                        {
                            "id": "6a5ce113-99e0-4734-8c54-43b37329f5c5",
                            "shot_id": "1cdd903a-6537-4dc8-a89d-2b7b00ef420c",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "owner_id": null,
                            "owner": null,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "previous_revision_id": null,
                            "images": [
                                {
                                    "id": "96164e98-466b-4536-97d0-da882aa8117c",
                                    "shot_revision_id": "e459d615-bb61-4b9c-b16a-1ed82bf85e60",
                                    "source_type": "PREDICTION",
                                    "prediction_id": null,
                                    "refine_id": null,
                                    "image_url": null,
                                    "sketch_image_url": null,
                                    "image_media": null,
                                    "sketch_image_media": null,
                                    "notes": null,
                                    "autogenerated": true,
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "effective_image_url": null
                                }
                            ],
                            "display_name": "string",
                            "effective_image_url": null,
                            "push_records": [
                                {
                                    "id": "02049d9b-dbfc-4de9-8d8e-498d473581f0",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "d6026cf3-0b84-49f0-8081-22fa9b7d21da",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "f79e2a2f-6155-4d6f-95e4-45f6f461ef5c",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "shooting_look_id": "9cbf1983-0bed-429c-a058-5197e72ea823",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "aa17a596-6152-4c70-949f-96f63d7c4e38"
                    ],
                    "outfit_products": [
                        {
                            "id": "21c29f35-5123-4f3b-8ef2-af5c917c861c",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "sku": null,
                            "name": "string",
                            "brand": null,
                            "master_item_code": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "description": null,
                            "back_description": null,
                            "ecommerce_description": null,
                            "brand_metadata": null,
                            "cover_image_url": null,
                            "back_image_url": null,
                            "reference_images": [
                                "string"
                            ],
                            "cover_image_media": null,
                            "back_image_media": null,
                            "reference_images_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "owner_id": "c0a7aade-fbc7-4011-9da7-18489cbcbb4e",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_shooting_look_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "generation_status": null,
                    "generation_error": null,
                    "retry_count": 0
                }
            ],
            "outfit_id": null,
            "outfit": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "3a2cf76c-1255-4510-96f2-8d1056e34d1a"
            ]
        }
    ]
}
⚠️ 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"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "looks": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookPublic"
            },
            "type": "array",
            "title": "Looks",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "name",
        "owner_id"
    ],
    "title": "ShootingDetailPublic",
    "description": "Response model for detailed Shooting view."
}

{
    "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/shootings/{shooting_id}

Update Shooting

Description

Update a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shooting_id path string No

Request body

{
    "name": null,
    "description": null,
    "due_date": null,
    "archived": null,
    "season": null,
    "collection": null,
    "brand": null,
    "organization_id": null,
    "default_guidelines_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"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "archived": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Archived"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id",
            "description": "Organization to transfer this shooting to"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id",
            "description": "Default guidelines preset for this shooting"
        }
    },
    "type": "object",
    "title": "ShootingUpdate",
    "description": "Request model for updating a Shooting."
}

Responses

{
    "id": "03353e13-e88d-4945-8bcf-a1988f5100ca",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "name": "string",
    "description": null,
    "due_date": null,
    "owner_id": "6defb93a-ea38-422c-9b60-298f83b6ec40",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "shot_status": null,
    "status": 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"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "name",
        "owner_id"
    ],
    "title": "ShootingPublic",
    "description": "Response model for Shooting."
}

{
    "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/shootings/{shooting_id}

Delete Shooting

Description

Delete a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shooting_id path string 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/shootings/{shooting_id}/looks

Create Shooting Looks

Description

Create a set of looks for a shooting based on the gender-compatible combinations of subjects and products defined in the request. Optionally generates base images for each shot when generate_base_images is True.

Note: Generation records are created and returned immediately, but the actual generation processing starts asynchronously in the background. Poll generation status to check progress.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shooting_id path string No

Request body

{
    "default_style_id": "b51b578e-7cf6-413e-bca9-d704737debd8",
    "generate_outfit": true,
    "product_filters": {
        "archived": false,
        "brand": "Acme",
        "enabled": true,
        "limit": 100,
        "skip": 0
    },
    "shot_type_ids": [
        "381a38e0-ff34-4937-ba76-c1a82f023161",
        "d38f1cdc-8ba4-4e38-aa2e-8ec2c7397d2d"
    ],
    "subject_ids": [
        "81e4440f-acdf-4483-b8ca-1b0212ca20d1",
        "9e33e540-3a6d-456a-a33d-534e4f29be58"
    ]
}
⚠️ 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": {
        "product_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Ids",
            "description": "Simple list of product IDs (use with generate_outfit=True for AI generation)"
        },
        "product_outfit_configs": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/ProductOutfitConfig"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Outfit Configs",
            "description": "Per-product outfit configurations (use with generate_outfit=False for manual config)"
        },
        "product_filters": {
            "anyOf": [
                {
                    "additionalProperties": true,
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Filters",
            "description": "Product filters matching the read_products endpoint (archived, enabled, brand, brand_collection, demo, search, shot_statuses, gender, product_type, sort_by, sort_order, skip, limit)"
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "shot_type_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Shot Type Ids"
        },
        "generate_outfit": {
            "type": "boolean",
            "title": "Generate Outfit",
            "default": false
        },
        "default_style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Style Id"
        },
        "default_resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Resolution Preset Id"
        },
        "default_width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Width"
        },
        "default_height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Height"
        },
        "default_background_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Background Preset Id"
        },
        "default_file_format": {
            "type": "string",
            "title": "Default File Format",
            "default": "JPG"
        },
        "default_instructions": {
            "type": "string",
            "title": "Default Instructions",
            "default": ""
        },
        "pose_preset_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pose Preset Ids",
            "description": "Override the pose presets from guidelines. When provided, these pose presets are baked into every created look instead of those from the shooting's default guidelines."
        },
        "set_design_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Set Design Id",
            "description": "Override the set design from guidelines. When provided, this set design is baked into every created look instead of the one from the shooting's default guidelines."
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "generate_base_images": {
            "type": "boolean",
            "title": "Generate Base Images",
            "default": false
        },
        "unisex_gender_preference": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductGender"
                },
                {
                    "type": "null"
                }
            ],
            "description": "Controls how UNISEX products are paired with subjects. MALE: pair only with male subjects. FEMALE: pair only with female subjects. UNISEX or None: pair with all subjects (default behavior)."
        }
    },
    "type": "object",
    "title": "GenerateShootingLooksRequest",
    "description": "Request model for generating ShootingLooks with optional outfit generation via LLM.",
    "example": {
        "default_style_id": "b51b578e-7cf6-413e-bca9-d704737debd8",
        "generate_outfit": true,
        "product_filters": {
            "archived": false,
            "brand": "Acme",
            "enabled": true,
            "limit": 100,
            "skip": 0
        },
        "shot_type_ids": [
            "381a38e0-ff34-4937-ba76-c1a82f023161",
            "d38f1cdc-8ba4-4e38-aa2e-8ec2c7397d2d"
        ],
        "subject_ids": [
            "81e4440f-acdf-4483-b8ca-1b0212ca20d1",
            "9e33e540-3a6d-456a-a33d-534e4f29be58"
        ]
    }
}

Responses

{
    "looks": [
        {
            "id": "bd34bb4a-ab30-4b15-9969-45d48481df73",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "a43b03c5-c8dd-4945-ba8c-b433493c8398",
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "style_id": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "file_format": "string",
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "b1b83752-eff5-48d6-b566-3288b7a26dd1",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "c1f642d3-5b4e-42bd-b300-9d0a1954aec4",
                    "owner_id": "957af21d-3f0d-415f-a2c1-7bd1a3a55d09",
                    "organization_id": null,
                    "pose_image_url": null,
                    "pose_image_media": null
                }
            ],
            "shots": [
                {
                    "id": "2c3f329d-e023-4646-9c18-9455631bc06a",
                    "shooting_look_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "revisions": [
                        {
                            "id": "ccdd4aad-a3d8-4dbb-a330-61b96241d639",
                            "shot_id": "523efc1d-d75f-476b-9465-745efa8f1427",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "owner_id": null,
                            "owner": null,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "previous_revision_id": null,
                            "images": [
                                {
                                    "id": "66d3ed0f-50ef-4b24-ae8d-f97999efe8d0",
                                    "shot_revision_id": "335c6af2-574b-4366-bc14-3d4ee7aaff40",
                                    "source_type": "PREDICTION",
                                    "prediction_id": null,
                                    "refine_id": null,
                                    "image_url": null,
                                    "sketch_image_url": null,
                                    "image_media": null,
                                    "sketch_image_media": null,
                                    "notes": null,
                                    "autogenerated": true,
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "effective_image_url": null
                                }
                            ],
                            "display_name": "string",
                            "effective_image_url": null,
                            "push_records": [
                                {
                                    "id": "1a863c07-a1e3-4768-98bb-7d006fd79643",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "3049659c-7876-4c9e-b348-3a32e5711474",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "dfe7a711-d775-4fd5-ae1d-f14e726e78d3",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "shooting_look_id": "925396a7-b833-4ec7-9f72-2ee157d6bd74",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "fe04d0d6-ab9d-4add-a688-cfebe88ff117"
                    ],
                    "outfit_products": [
                        {
                            "id": "ddb0cc56-ac44-48a5-83c9-491e48370a90",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "sku": null,
                            "name": "string",
                            "brand": null,
                            "master_item_code": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "description": null,
                            "back_description": null,
                            "ecommerce_description": null,
                            "brand_metadata": null,
                            "cover_image_url": null,
                            "back_image_url": null,
                            "reference_images": [
                                "string"
                            ],
                            "cover_image_media": null,
                            "back_image_media": null,
                            "reference_images_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "owner_id": "37efc6ff-436f-488d-8914-f17d287d14c0",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_shooting_look_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "generation_status": null,
                    "generation_error": null,
                    "retry_count": 0
                }
            ],
            "outfit_id": null,
            "outfit": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "9b6b20c7-ccda-4185-809b-c7dd3fe0669c"
            ]
        }
    ],
    "generation_results": [
        {
            "shot_id": "7de8ba5e-6135-4bdc-9eab-613167108c3a",
            "look_id": "18ae7cb2-aac7-4120-8144-5e51beb23545",
            "generation_id": "53a7d3bd-bc03-4c51-8506-99c8a7a64761"
        }
    ],
    "total_generations_created": 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": {
        "looks": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookPublic"
            },
            "type": "array",
            "title": "Looks"
        },
        "generation_results": {
            "items": {
                "$ref": "#/components/schemas/GenerationCreationResult"
            },
            "type": "array",
            "title": "Generation Results"
        },
        "total_generations_created": {
            "type": "integer",
            "title": "Total Generations Created",
            "default": 0
        }
    },
    "type": "object",
    "required": [
        "looks"
    ],
    "title": "GenerateShootingLooksResponse",
    "description": "Response when creating shooting looks with optional generation."
}

{
    "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/shootings/{shooting_id}/looks

Read Shooting Looks

Description

Get all looks for a shooting with optional filtering.

Filters: - shot_statuses: Filter by computed shot status (minimum status across all shots) - ShotStatus: PENDING, PROPOSAL, REJECTED, POST_PROD, POST_PROD_REJECTED, REVIEW, APPROVED - ShootingLookStatus: DRAFT, READY - Special: WITHOUT_STATUS (looks with no shots) - product_ids: Filter by specific product IDs - product_name: Search by product name (partial match) - product_sku: Search by product SKU (partial match) - product_type: Filter by product type - assignee_ids: Filter by assignee user IDs

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
assignee_ids query No Filter by assignee user IDs
limit query integer 100 No
organization_id query No
product_ids query No
product_name query No Search by product name
product_sku query No Search by product SKU
product_type query No
shooting_id path string No
shot_statuses query No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "7dcd6734-b78d-4a49-ae8a-59de64347bec",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "725da39c-3f93-439f-a19e-7d94e3034932",
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "style_id": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "file_format": "string",
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "12f6f7b3-532f-4621-808f-bd2b98b0deb2",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "0238e507-bc6b-438c-a2ff-6cc67c7f815c",
                    "owner_id": "e44c6957-1f8c-4d7b-ba52-c348253fbc8b",
                    "organization_id": null,
                    "pose_image_url": null,
                    "pose_image_media": null
                }
            ],
            "shots": [
                {
                    "id": "6560a1b2-3171-4050-bed7-3d065de6c800",
                    "shooting_look_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "revisions": [
                        {
                            "id": "1296c3a0-ac69-40be-8f18-fcc5f0ff4ba9",
                            "shot_id": "5e82a344-634d-4507-bfe7-fcb81a24cba1",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "owner_id": null,
                            "owner": null,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "previous_revision_id": null,
                            "images": [
                                {
                                    "id": "80b5a69b-0eb9-4223-a198-88e9b347a925",
                                    "shot_revision_id": "808ccccc-f7b7-4bd9-bd6f-cec2b5915f39",
                                    "source_type": "PREDICTION",
                                    "prediction_id": null,
                                    "refine_id": null,
                                    "image_url": null,
                                    "sketch_image_url": null,
                                    "image_media": null,
                                    "sketch_image_media": null,
                                    "notes": null,
                                    "autogenerated": true,
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "effective_image_url": null
                                }
                            ],
                            "display_name": "string",
                            "effective_image_url": null,
                            "push_records": [
                                {
                                    "id": "bed3b388-c2c5-490f-aa22-ddeec71eeb73",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "2ccc48a3-9a70-4203-a3d7-620238583872",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "ff9fcf26-aa15-4d1e-a40a-6319dfa003ac",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "shooting_look_id": "8e2946e4-3c33-4a86-9960-81c389d846bc",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "5f562571-f5ae-4a02-b32e-6f86c7e6fc67"
                    ],
                    "outfit_products": [
                        {
                            "id": "4b0d8284-565f-4e27-9184-0319ed40e362",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "sku": null,
                            "name": "string",
                            "brand": null,
                            "master_item_code": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "description": null,
                            "back_description": null,
                            "ecommerce_description": null,
                            "brand_metadata": null,
                            "cover_image_url": null,
                            "back_image_url": null,
                            "reference_images": [
                                "string"
                            ],
                            "cover_image_media": null,
                            "back_image_media": null,
                            "reference_images_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "owner_id": "3707c70a-9df0-4034-b8af-1d0cd3f45fb9",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_shooting_look_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "generation_status": null,
                    "generation_error": null,
                    "retry_count": 0
                }
            ],
            "outfit_id": null,
            "outfit": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "6ba8d377-b89e-487d-af39-2e7dc58b75f2"
            ]
        }
    ],
    "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/ShootingLookPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingLooksPublic",
    "description": "Response model for paginated list of ShootingLooks."
}

{
    "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/shootings/{shooting_id}/looks-summary

Read Shooting Looks Summary

Description

Lightweight endpoint to get shooting looks with product info and per-shot status.

Returns look-level data (product name, sku, cover image, outfit info, shot statuses with push status) without loading full revisions, images, or prediction/refine data.

Supports the same filtering as the full /looks endpoint.

When organization_id query param is provided, validates membership and checks access. Without organization_id, membership is resolved automatically if the shooting belongs to an organization the user is a member of.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
assignee_ids query No Filter by assignee user IDs
limit query integer 100 No
organization_id query No
product_ids query No
product_name query No Search by product name
product_sku query No Search by product SKU
product_type query No
shooting_id path string No
shot_statuses query No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "9fb3addc-eee0-4e13-8994-01ac03c754ed",
            "shooting_id": "11c544b3-bec5-461a-959c-6a4213307011",
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "status": "DRAFT",
            "shot_status": null,
            "assignee_id": null,
            "assignee": null,
            "outfit_products_count": 0,
            "outfit_generation_status": null,
            "shots": [
                {
                    "id": "445307ba-b5eb-4bd7-8711-524eb7d8b4a9",
                    "shot_type": null,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "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/ShootingLookSummary"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingLooksSummaryPublic",
    "description": "Response model for paginated list of lightweight ShootingLook summaries."
}

{
    "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/shootings/{shooting_id}/draft-summary

Get Draft Looks Summary

Description

Get summary of draft looks for a shooting, including count of looks with pending outfit generation.

Returns: - total_draft_looks: Total number of looks in DRAFT status - generating_count: Number of draft looks that have at least one outfit proposal with PENDING status

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
organization_id query No
shooting_id path string No

Responses

{
    "total_draft_looks": 0,
    "generating_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": {
        "total_draft_looks": {
            "type": "integer",
            "title": "Total Draft Looks"
        },
        "generating_count": {
            "type": "integer",
            "title": "Generating Count"
        }
    },
    "type": "object",
    "required": [
        "total_draft_looks",
        "generating_count"
    ],
    "title": "DraftLooksSummary",
    "description": "Response model for draft looks summary with generation status."
}

{
    "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/shootings/{shooting_id}/looks/{look_id}

Read Shooting Look

Description

Get a specific look for a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No
organization_id query No
shooting_id path string No

Responses

{
    "id": "7cb41871-01bb-4ef6-addd-aea82ef0dbd8",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "ddc1d020-c05f-4dfd-926e-e7cf56743599",
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "file_format": "string",
    "status": "DRAFT",
    "shot_status": null,
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "be8fff2c-2d97-4a63-a865-ca634a032cc1",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "eff47e9e-41d3-4c2c-858b-df48d7da1ae8",
            "owner_id": "1a1b3f73-4a43-4e80-8f21-0797b2ad80d0",
            "organization_id": null,
            "pose_image_url": null,
            "pose_image_media": null
        }
    ],
    "shots": [
        {
            "id": "e8af4b93-b5ff-4199-9f66-3a504ced8058",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "9f92ad4c-8fd2-4064-b81d-8868958428b3",
                    "shot_id": "dec60f58-6b4b-420b-91e7-33adc5996158",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "53af764c-d070-46fa-9e0e-55aea15bc8be",
                            "shot_revision_id": "846d6c9d-7ada-4b7b-be70-68a75cf78223",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "796ec787-7c82-4918-a7a6-9705ab1a4e44",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "f205492c-8d14-4c56-bb6f-675b5598de8a",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "bc285d14-1d84-4177-8ab3-f8c5557f462d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_look_id": "74c5cc29-d11b-4f32-bd7b-36a3dead4384",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "71d6de15-a50f-426b-b249-15b8c10cea21"
            ],
            "outfit_products": [
                {
                    "id": "00604e01-29b1-4205-a68f-c564fc6adc13",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "sku": null,
                    "name": "string",
                    "brand": null,
                    "master_item_code": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "description": null,
                    "back_description": null,
                    "ecommerce_description": null,
                    "brand_metadata": null,
                    "cover_image_url": null,
                    "back_image_url": null,
                    "reference_images": [
                        "string"
                    ],
                    "cover_image_media": null,
                    "back_image_media": null,
                    "reference_images_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "owner_id": "bfe1e28b-48fc-45d7-aba0-2c5334f7db78",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_shooting_look_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "generation_status": null,
            "generation_error": null,
            "retry_count": 0
        }
    ],
    "outfit_id": null,
    "outfit": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "121b6d2f-d737-4e08-9222-5746106d855f"
    ]
}
⚠️ 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "subject_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "subject_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Name"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "product_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Name"
        },
        "product_sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Sku"
        },
        "product_cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Cover Image Url"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "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"
        },
        "set_design": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/SetDesignPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "file_format": {
            "type": "string",
            "title": "File Format",
            "default": "JPG"
        },
        "status": {
            "$ref": "#/components/schemas/ShootingLookStatus"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "assignee": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_presets": {
            "items": {
                "$ref": "#/components/schemas/PosePresetPublic"
            },
            "type": "array",
            "title": "Pose Presets",
            "default": []
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "outfit_ref_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Outfit Ref Imgs Urls",
            "description": "Get outfit reference image URLs from the selected outfit.",
            "readOnly": true
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Get outfit instruction from the selected outfit.",
            "readOnly": true
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids",
            "description": "Get outfit product IDs from the selected outfit (supports both storage mechanisms).",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "status",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids"
    ],
    "title": "ShootingLookPublic",
    "description": "Response model for ShootingLook."
}

{
    "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/shootings/{shooting_id}/looks/{look_id}

Update Shooting Look

Description

Update a specific look for a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No
shooting_id path string No

Request body

{
    "subject_id": null,
    "product_id": null,
    "outfit_id": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "file_format": null,
    "status": null,
    "assignee_id": null,
    "shot_type_ids": 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_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "background_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Background Preset Id"
        },
        "file_format": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "File Format"
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "shot_type_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Type Ids"
        }
    },
    "type": "object",
    "title": "ShootingLookUpdate",
    "description": "Request model for updating a ShootingLook.\n\nNote: resolution_preset_id and custom width/height are mutually exclusive.\nSetting one will automatically clear the other during update."
}

Responses

{
    "id": "3b5895c8-f8e9-4609-9529-624f90a9c8fb",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "47f69923-11e9-41fb-b20b-81f43a8600c6",
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "file_format": "string",
    "status": "DRAFT",
    "shot_status": null,
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "8633a218-8a00-43de-8ecf-0a705d737201",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "cd893e14-d5d6-4672-a6c0-3b45d4eb0651",
            "owner_id": "ebe3b9f8-ec7f-44c8-8232-cb81cb52b808",
            "organization_id": null,
            "pose_image_url": null,
            "pose_image_media": null
        }
    ],
    "shots": [
        {
            "id": "e1ba5941-4b81-425a-adc6-af3478a7721b",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "7763751b-03f7-42b3-bd4b-2816de5cc742",
                    "shot_id": "8e0166c7-a731-4511-85ed-8d53eb0b3644",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "3c31c843-3c9d-40b1-acf2-f86fd82b6cfc",
                            "shot_revision_id": "1a228d16-730d-41d2-a43d-e644da627fa9",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "9535eb25-829e-4eef-beb3-67a73f5f61de",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "8a22fb3c-cb88-4752-a453-8b5c66078bf7",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "f6882636-e6f4-4648-95fc-63ce4a741eea",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_look_id": "2f0e1b20-d946-44f5-93df-3371e61cb9e2",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "7508a9e4-2ad4-46e4-ac2d-c4438f89e17d"
            ],
            "outfit_products": [
                {
                    "id": "f9311191-de74-45f3-a04a-08fe9e26c293",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "sku": null,
                    "name": "string",
                    "brand": null,
                    "master_item_code": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "description": null,
                    "back_description": null,
                    "ecommerce_description": null,
                    "brand_metadata": null,
                    "cover_image_url": null,
                    "back_image_url": null,
                    "reference_images": [
                        "string"
                    ],
                    "cover_image_media": null,
                    "back_image_media": null,
                    "reference_images_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "owner_id": "6e267c5b-a4be-4306-af67-4a50f9090c1e",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_shooting_look_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "generation_status": null,
            "generation_error": null,
            "retry_count": 0
        }
    ],
    "outfit_id": null,
    "outfit": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "c5dfd701-99e5-489e-aa7f-022a8808c61e"
    ]
}
⚠️ 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "subject_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "subject_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Name"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "product_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Name"
        },
        "product_sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Sku"
        },
        "product_cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Cover Image Url"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "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"
        },
        "set_design": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/SetDesignPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "file_format": {
            "type": "string",
            "title": "File Format",
            "default": "JPG"
        },
        "status": {
            "$ref": "#/components/schemas/ShootingLookStatus"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "assignee": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_presets": {
            "items": {
                "$ref": "#/components/schemas/PosePresetPublic"
            },
            "type": "array",
            "title": "Pose Presets",
            "default": []
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "outfit_ref_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Outfit Ref Imgs Urls",
            "description": "Get outfit reference image URLs from the selected outfit.",
            "readOnly": true
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Get outfit instruction from the selected outfit.",
            "readOnly": true
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids",
            "description": "Get outfit product IDs from the selected outfit (supports both storage mechanisms).",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "status",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids"
    ],
    "title": "ShootingLookPublic",
    "description": "Response model for ShootingLook."
}

{
    "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/shootings/{shooting_id}/looks/{look_id}

Delete Shooting Look

Description

Delete a specific look for a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No
shooting_id path string 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/shootings/looks/{look_id}

Get Shooting Look

Description

Get a ShootingLook by ID.

Returns the look with all its properties and relationships.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No
organization_id query No

Responses

{
    "id": "025c5bb0-d97d-4e03-823f-ebf195f988b6",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "0225a42c-5698-4115-b447-7036606447e6",
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "file_format": "string",
    "status": "DRAFT",
    "shot_status": null,
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "eb0af22b-4f06-47ce-a89e-1b4ac12c4e28",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "080bf786-e6c3-4a4a-8488-72c42c004f4e",
            "owner_id": "c35fc5d3-ed55-4d2d-baeb-e9af259cf7b1",
            "organization_id": null,
            "pose_image_url": null,
            "pose_image_media": null
        }
    ],
    "shots": [
        {
            "id": "74ec5682-7fd7-4da8-b5e5-e408944e22ab",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "8558a653-e259-4f68-82c0-21f7da2a2fd3",
                    "shot_id": "48e246fd-3e37-4659-b667-d0ec73979e48",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "a2370b1d-ea59-4223-ae02-eb77dcb5aefa",
                            "shot_revision_id": "1b22c4f7-3902-4ed0-899d-f58f2e89a581",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "8b2e073f-79ec-4ca9-b4b3-b257ceb2a453",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "44aa05ab-0006-44a0-a001-4bf08553c034",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "b7b94b93-c52a-40b3-b990-3a070504e403",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_look_id": "a8bcf3a1-01ff-4fd8-ab21-b5649e8a2f26",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "0c7bf6c9-ca48-4bd3-89c2-f7a315ce27ed"
            ],
            "outfit_products": [
                {
                    "id": "15120161-85fa-4bf9-8977-23a8d754ade6",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "sku": null,
                    "name": "string",
                    "brand": null,
                    "master_item_code": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "description": null,
                    "back_description": null,
                    "ecommerce_description": null,
                    "brand_metadata": null,
                    "cover_image_url": null,
                    "back_image_url": null,
                    "reference_images": [
                        "string"
                    ],
                    "cover_image_media": null,
                    "back_image_media": null,
                    "reference_images_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "owner_id": "67cf87d0-9aec-4989-b60e-8ec22498ca8c",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_shooting_look_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "generation_status": null,
            "generation_error": null,
            "retry_count": 0
        }
    ],
    "outfit_id": null,
    "outfit": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "f43114c6-0f28-4c24-b4f9-99f69c4064dc"
    ]
}
⚠️ 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "subject_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "subject_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Name"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "product_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Name"
        },
        "product_sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Sku"
        },
        "product_cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Cover Image Url"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "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"
        },
        "set_design": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/SetDesignPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "file_format": {
            "type": "string",
            "title": "File Format",
            "default": "JPG"
        },
        "status": {
            "$ref": "#/components/schemas/ShootingLookStatus"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "assignee": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_presets": {
            "items": {
                "$ref": "#/components/schemas/PosePresetPublic"
            },
            "type": "array",
            "title": "Pose Presets",
            "default": []
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "outfit_ref_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Outfit Ref Imgs Urls",
            "description": "Get outfit reference image URLs from the selected outfit.",
            "readOnly": true
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Get outfit instruction from the selected outfit.",
            "readOnly": true
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids",
            "description": "Get outfit product IDs from the selected outfit (supports both storage mechanisms).",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "status",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids"
    ],
    "title": "ShootingLookPublic",
    "description": "Response model for ShootingLook."
}

{
    "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/shootings/looks/{look_id}/outfit

Create Manual Outfit For Look

Description

Create a manual outfit for a look and set it as the active outfit.

This endpoint: 1. Creates a new outfit with the provided data (manual, not LLM-generated) 2. Sets it as THE outfit for the look (not a proposal) 3. Deletes all existing outfit proposals

The outfit data is provided by the client, unlike LLM-generated outfits which are created asynchronously via the styling service.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No

Request body

{
    "outfit_ref_imgs_urls": null,
    "outfit_instruction": null,
    "outfit_product_ids": [
        "a3deccf5-ca50-4334-a631-d0e36e0f5984"
    ]
}
⚠️ 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": {
        "outfit_ref_imgs_urls": {
            "anyOf": [
                {
                    "items": {
                        "anyOf": [
                            {
                                "type": "string"
                            },
                            {
                                "$ref": "#/components/schemas/MediaInput"
                            }
                        ]
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Ref Imgs Urls"
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction"
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids"
        }
    },
    "type": "object",
    "title": "ManualOutfitCreate",
    "description": "Request model for manually creating an outfit for a look (shooting_look_id from path)."
}

Responses

{
    "id": "bf414e05-7952-4080-9f17-9835a9139d08",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "2dc5afa2-eef6-47f0-ad7f-701c20ebca1d",
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "file_format": "string",
    "status": "DRAFT",
    "shot_status": null,
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "8c28db4c-f5a2-4adc-bec5-3741ec36c518",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "38393353-915b-4bcb-aa50-cc2ca4e1869e",
            "owner_id": "5a3bb3a3-82e0-483d-a899-cb06d5ac9ec5",
            "organization_id": null,
            "pose_image_url": null,
            "pose_image_media": null
        }
    ],
    "shots": [
        {
            "id": "4ab2e081-b75a-4d73-8220-55e025079580",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "3d5fb230-8838-4986-80ed-7e8d178f58a1",
                    "shot_id": "517a351d-ca91-41ea-a499-a9eb23952b45",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "fcb6d26c-4920-48a3-b874-c7cc86a8de50",
                            "shot_revision_id": "dd5e94d5-ea76-4337-ac09-53e2d2abf629",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "4662ae8f-c46b-4b87-a531-a6b16679037a",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "2bcc6512-32e4-4433-aaa4-cd13ce6c69f7",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "1012d8f2-782b-40c8-a98f-d3b72356d47e",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_look_id": "146b8c21-596f-40c3-a1bb-53a91f9a9c99",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "a447175c-bb6f-4305-9474-d457a786bb1d"
            ],
            "outfit_products": [
                {
                    "id": "f394508f-9da1-46fc-a0b3-5636677d54db",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "sku": null,
                    "name": "string",
                    "brand": null,
                    "master_item_code": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "description": null,
                    "back_description": null,
                    "ecommerce_description": null,
                    "brand_metadata": null,
                    "cover_image_url": null,
                    "back_image_url": null,
                    "reference_images": [
                        "string"
                    ],
                    "cover_image_media": null,
                    "back_image_media": null,
                    "reference_images_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "owner_id": "0485d1cf-fbcf-401b-b7c6-9777642f87ec",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_shooting_look_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "generation_status": null,
            "generation_error": null,
            "retry_count": 0
        }
    ],
    "outfit_id": null,
    "outfit": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "f7968bd0-1683-4ae0-80d5-58f02c0a6012"
    ]
}
⚠️ 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "subject_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "subject_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Name"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "product_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Name"
        },
        "product_sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Sku"
        },
        "product_cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Cover Image Url"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "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"
        },
        "set_design": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/SetDesignPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "file_format": {
            "type": "string",
            "title": "File Format",
            "default": "JPG"
        },
        "status": {
            "$ref": "#/components/schemas/ShootingLookStatus"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "assignee": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_presets": {
            "items": {
                "$ref": "#/components/schemas/PosePresetPublic"
            },
            "type": "array",
            "title": "Pose Presets",
            "default": []
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "outfit_ref_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Outfit Ref Imgs Urls",
            "description": "Get outfit reference image URLs from the selected outfit.",
            "readOnly": true
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Get outfit instruction from the selected outfit.",
            "readOnly": true
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids",
            "description": "Get outfit product IDs from the selected outfit (supports both storage mechanisms).",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "status",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids"
    ],
    "title": "ShootingLookPublic",
    "description": "Response model for ShootingLook."
}

{
    "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/shootings/looks/{look_id}/finalize-outfit

Finalize Look Outfit

Description

Finalize outfit for a shooting look.

This endpoint allows users to complete the outfit configuration for a look by: - Option A: Selecting an existing outfit proposal (by outfit_id) - Option B: Creating a new outfit with provided data

After finalization: 1. The selected/created outfit becomes THE active outfit for the look 2. All other outfit proposals are deleted 3. The look's outfit_id is set to reference the finalized outfit

Mutual Exclusivity: Request must contain EITHER outfit_id OR outfit creation fields, not both.

Authorization: User must own the shooting containing this look.

Args: session: Database session dependency current_user: Authenticated user look_id: UUID of the shooting look to finalize outfit for outfit_in: Request containing either outfit_id or outfit creation fields

Returns: Updated ShootingLook with finalized outfit

Raises: HTTPException 404: If look or outfit not found HTTPException 403: If user doesn't have permission HTTPException 400: If outfit doesn't belong to look or validation fails

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No

Request body

{
    "outfit_id": null,
    "outfit_ref_imgs_urls": null,
    "outfit_instruction": null,
    "outfit_product_ids": 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": {
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id",
            "description": "ID of existing outfit proposal to finalize"
        },
        "outfit_ref_imgs_urls": {
            "anyOf": [
                {
                    "items": {
                        "anyOf": [
                            {
                                "type": "string"
                            },
                            {
                                "$ref": "#/components/schemas/MediaInput"
                            }
                        ]
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Ref Imgs Urls",
            "description": "Reference image URLs for new outfit"
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Instructions for new outfit"
        },
        "outfit_product_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Product Ids",
            "description": "Product IDs for new outfit"
        }
    },
    "type": "object",
    "title": "FinalizeOutfitRequest",
    "description": "Request model for finalizing an outfit for a shooting look.\n\nEither select an existing outfit proposal OR create a new outfit (mutually exclusive).\n\n**Option A: Select existing outfit**\n- Provide `outfit_id` to select an outfit from the look's proposals\n\n**Option B: Create new outfit**\n- Provide outfit creation fields (outfit_ref_imgs_urls, outfit_instruction, outfit_product_ids)\n\nThe two options are mutually exclusive - must provide one or the other, but not both."
}

Responses

{
    "id": "80bd37f1-a74a-4d13-9db0-0a5323e70d51",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "46971504-a9a9-43c2-888e-7a51a8194579",
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "style_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "file_format": "string",
    "status": "DRAFT",
    "shot_status": null,
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "5ab8405b-3de7-4fb4-8d8e-59e5bac41364",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "afedda1f-8544-4a0c-a04b-707e10fd52b8",
            "owner_id": "32713bd8-637a-4102-8a10-09e05b50be9f",
            "organization_id": null,
            "pose_image_url": null,
            "pose_image_media": null
        }
    ],
    "shots": [
        {
            "id": "0d2e00cf-388e-436b-800c-ed1629ecd02a",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "d5835767-8372-4e1d-afe3-960d10235819",
                    "shot_id": "9263c1e6-47de-4849-8619-1e8fbc2891fc",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "8a47a83e-726a-42ea-89ec-fcf1e1a4d50a",
                            "shot_revision_id": "f6991a83-9e6e-44c8-b86f-a0d945268cfe",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "ad203b2e-1ebe-42e6-b8c7-26b60fbb63bb",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "a2c56bfa-ebf9-4515-9d2c-b00bb86d2f5a",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "29828752-db41-49ca-b00c-d4317ffddd74",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_look_id": "e7c406bb-338d-473f-bc08-94e9fb4dd28f",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "c910588e-bf0e-4997-b17f-97c7b4f043a9"
            ],
            "outfit_products": [
                {
                    "id": "ddd27578-c889-464f-8e37-9f5eb00d0cc7",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "sku": null,
                    "name": "string",
                    "brand": null,
                    "master_item_code": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "description": null,
                    "back_description": null,
                    "ecommerce_description": null,
                    "brand_metadata": null,
                    "cover_image_url": null,
                    "back_image_url": null,
                    "reference_images": [
                        "string"
                    ],
                    "cover_image_media": null,
                    "back_image_media": null,
                    "reference_images_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "owner_id": "9d937329-e93e-4048-b3c3-9f3c0bc91faa",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_shooting_look_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "generation_status": null,
            "generation_error": null,
            "retry_count": 0
        }
    ],
    "outfit_id": null,
    "outfit": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "54c4296b-da8a-492b-a2a9-7fe7088484fc"
    ]
}
⚠️ 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "subject_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Id"
        },
        "subject_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Name"
        },
        "product_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Id"
        },
        "product_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Name"
        },
        "product_sku": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Sku"
        },
        "product_cover_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Cover Image Url"
        },
        "style_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Style Id"
        },
        "resolution_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Resolution Preset Id"
        },
        "width": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Width"
        },
        "height": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Height"
        },
        "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"
        },
        "set_design": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/SetDesignPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "file_format": {
            "type": "string",
            "title": "File Format",
            "default": "JPG"
        },
        "status": {
            "$ref": "#/components/schemas/ShootingLookStatus"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "assignee": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_presets": {
            "items": {
                "$ref": "#/components/schemas/PosePresetPublic"
            },
            "type": "array",
            "title": "Pose Presets",
            "default": []
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ShootingLookOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingLookOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "outfit_ref_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Outfit Ref Imgs Urls",
            "description": "Get outfit reference image URLs from the selected outfit.",
            "readOnly": true
        },
        "outfit_instruction": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction",
            "description": "Get outfit instruction from the selected outfit.",
            "readOnly": true
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids",
            "description": "Get outfit product IDs from the selected outfit (supports both storage mechanisms).",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "status",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids"
    ],
    "title": "ShootingLookPublic",
    "description": "Response model for ShootingLook."
}

{
    "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/shootings/looks/{look_id}/start-generations

Start Shooting Look Generations

Description

Start automatic generations for all shot types in a shooting look.

This endpoint triggers the generation workflow for each shot in the look, creating AI-generated images based on the subject's base images and reference images from the outfit. The generations run in the background and the endpoint returns immediately.

Behavior: - For each shot type in the look (excluding "back" view angles), creates generations - Uses the subject's base image matching the shot type as the base image - Uses outfit reference images as style references - Skips shot types with "back" view angle - Skips shot types without a matching base image in the subject - Processing happens asynchronously in the background

Parameters: - generations_per_shot_type: Number of generations to create per shot type (1-10, default: 1)

Authorization: User must own the shooting containing this look.

Args: session: Database session dependency current_user: Authenticated user look_id: UUID of the shooting look to generate for request_in: Optional request body with generation parameters background_tasks: FastAPI background tasks handler

Returns: StartGenerationsResponse confirming generation was started (generation_ids will be empty)

Raises: HTTPException 404: If look or shooting not found HTTPException 403: If user doesn't have permission

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No

Request body

Schema of the request body
{
    "anyOf": [
        {
            "$ref": "#/components/schemas/StartGenerationsRequest"
        },
        {
            "type": "null"
        }
    ],
    "title": "Request In"
}

Responses

{
    "message": "string",
    "look_id": "64c68dee-1f85-473c-81a4-82de9cd43f27",
    "generation_ids": [
        "6116bec2-958a-4a09-8f63-26ed1d2e75a9"
    ],
    "generations_per_shot_type": 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": {
        "message": {
            "type": "string",
            "title": "Message"
        },
        "look_id": {
            "type": "string",
            "format": "uuid",
            "title": "Look Id"
        },
        "generation_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Generation Ids"
        },
        "generations_per_shot_type": {
            "type": "integer",
            "title": "Generations Per Shot Type"
        }
    },
    "type": "object",
    "required": [
        "message",
        "look_id",
        "generation_ids",
        "generations_per_shot_type"
    ],
    "title": "StartGenerationsResponse",
    "description": "Response model for start generations endpoint."
}

{
    "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/shootings/looks/{look_id}/start-shot-type-generations

Start Shot Type Generations

Description

Start generations for a specific shot type in a shooting look.

This endpoint triggers the generation workflow for a single shot type, creating AI-generated images based on the subject's base images and reference images from the outfit. The generations run in the background and the endpoint returns immediately.

Behavior: - Creates generations for the specified shot type only - Uses the subject's base image matching the shot type as the base image - Uses outfit reference images as style references - Skips if shot type has "back" view angle - Skips if no matching base image found in the subject - Processing happens asynchronously in the background

Parameters: - shot_type_id: UUID of the shot type to generate for - generations_count: Number of generations to create (1-10, default: 1)

Authorization: User must own the shooting containing this look.

Args: session: Database session dependency current_user: Authenticated user look_id: UUID of the shooting look to generate for request_in: Request body with shot_type_id and generations_count background_tasks: FastAPI background tasks handler

Returns: StartShotTypeGenerationsResponse confirming generation was started

Raises: HTTPException 404: If look, shooting, or shot_type not found HTTPException 403: If user doesn't have permission

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No

Request body

{
    "shot_type_id": "11bf3506-b440-4994-819a-6785d37665b9",
    "generations_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 request body
{
    "properties": {
        "shot_type_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Type Id",
            "description": "UUID of the shot type to generate for"
        },
        "generations_count": {
            "type": "integer",
            "maximum": 10.0,
            "minimum": 1.0,
            "title": "Generations Count",
            "description": "Number of generations to create (1-10)",
            "default": 1
        }
    },
    "type": "object",
    "required": [
        "shot_type_id"
    ],
    "title": "StartShotTypeGenerationsRequest",
    "description": "Request model for starting generations for a specific shot type in a look."
}

Responses

{
    "message": "string",
    "look_id": "7f9f7f3c-defb-4286-ba4c-a405df0b0cdd",
    "shot_type_id": "75473315-ce58-4895-9c2a-3bab4a675661",
    "generation_ids": [
        "17b449f1-4fac-46fa-ae27-9ab473f262f6"
    ],
    "generations_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": {
        "message": {
            "type": "string",
            "title": "Message"
        },
        "look_id": {
            "type": "string",
            "format": "uuid",
            "title": "Look Id"
        },
        "shot_type_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Type Id"
        },
        "generation_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Generation Ids"
        },
        "generations_count": {
            "type": "integer",
            "title": "Generations Count"
        }
    },
    "type": "object",
    "required": [
        "message",
        "look_id",
        "shot_type_id",
        "generation_ids",
        "generations_count"
    ],
    "title": "StartShotTypeGenerationsResponse",
    "description": "Response model for start shot type generations endpoint."
}

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

shots


POST /api/v1/shots/

Create Shot

Description

Create a new shot.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No

Request body

{
    "shot_type_id": null,
    "shooting_look_id": "28ae2365-51b6-45cb-8fa4-812dcb843e42"
}
⚠️ 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"
        },
        "shooting_look_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Look Id"
        }
    },
    "type": "object",
    "required": [
        "shooting_look_id"
    ],
    "title": "ShotCreate",
    "description": "Schema for creating a Shot"
}

Responses

{
    "id": "95ab9591-adb3-45eb-9683-2c1a1cef3ce1",
    "shooting_look_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "revisions": [
        {
            "id": "5f9e074c-097d-46bf-828d-c551eadad16c",
            "shot_id": "2a1ed476-058e-4eab-8539-68e3bf8dc61f",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "owner_id": null,
            "owner": null,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "previous_revision_id": null,
            "images": [
                {
                    "id": "f060fda9-b677-4bbd-a34f-0b5f66234905",
                    "shot_revision_id": "6d9c61bd-8ba0-40e1-b1f1-9ebdf6b565e4",
                    "source_type": "PREDICTION",
                    "prediction_id": null,
                    "refine_id": null,
                    "image_url": null,
                    "sketch_image_url": null,
                    "image_media": null,
                    "sketch_image_media": null,
                    "notes": null,
                    "autogenerated": true,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "effective_image_url": null
                }
            ],
            "display_name": "string",
            "effective_image_url": null,
            "push_records": [
                {
                    "id": "7bcdca94-a3d1-48f5-8487-f1ac1886414f",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "9fe8e10e-4d48-48c9-97fb-5ec3e269d1c2",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null
                }
            ],
            "push_status": null
        }
    ],
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z"
}
⚠️ 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"
        },
        "shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Look Id"
        },
        "shot_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pose Preset Id"
        },
        "rework_available": {
            "type": "integer",
            "title": "Rework Available"
        },
        "rework_used": {
            "type": "integer",
            "title": "Rework Used"
        },
        "status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "rework_available",
        "rework_used",
        "status",
        "created_at",
        "updated_at"
    ],
    "title": "ShotPublic",
    "description": "Public schema for Shot"
}

{
    "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/shots/

List Shots

Description

Get list of shots with filtering options.

When organization_id query param is provided, returns shots belonging to shootings in that organization. Without organization_id, returns only personal shots (from shootings not belonging to any organization).

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
has_generations query No
limit query integer 100 No
organization_id query No
product_id query No
shooting_id query No
shooting_look_id query No
shot_type query No
skip query integer 0 No
status query No

Responses

{
    "data": [
        {
            "id": "596062b9-aa57-4e52-9585-360f9e7c6eb1",
            "shooting_look_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "revisions": [
                {
                    "id": "3a7e9051-e7db-439f-9705-dba11d24a081",
                    "shot_id": "9950ce4a-fb18-42ba-b223-e1a5cc9204b1",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "owner_id": null,
                    "owner": null,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "previous_revision_id": null,
                    "images": [
                        {
                            "id": "7cacccec-9566-46b8-807e-ab26ce118b96",
                            "shot_revision_id": "a843c3da-0d7d-4552-9ce3-166a8a5e4712",
                            "source_type": "PREDICTION",
                            "prediction_id": null,
                            "refine_id": null,
                            "image_url": null,
                            "sketch_image_url": null,
                            "image_media": null,
                            "sketch_image_media": null,
                            "notes": null,
                            "autogenerated": true,
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "effective_image_url": null
                        }
                    ],
                    "display_name": "string",
                    "effective_image_url": null,
                    "push_records": [
                        {
                            "id": "7e89db8d-c624-4504-a904-1d1eb824bd1f",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "229c3ffe-588a-4739-9e15-d70d69227574",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "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/ShotPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShotsPublic",
    "description": "Collection of ShotPublic 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/shots/{shot_id}

Get Shot

Description

Get a specific shot by ID.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shot_id path string No

Responses

{
    "id": "0942e5be-e4b1-4158-996b-632f0dd03d4d",
    "shooting_look_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "revisions": [
        {
            "id": "4be3dc03-b473-4a41-b12b-1e695df3f90e",
            "shot_id": "71237bc8-a8f9-4ac1-9a0f-cd7f41ca3b2b",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "owner_id": null,
            "owner": null,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "previous_revision_id": null,
            "images": [
                {
                    "id": "ab230b84-c07b-4bfe-9f0e-6b88d0cef8ea",
                    "shot_revision_id": "cd41d73d-c012-4a65-881c-94e5b6362969",
                    "source_type": "PREDICTION",
                    "prediction_id": null,
                    "refine_id": null,
                    "image_url": null,
                    "sketch_image_url": null,
                    "image_media": null,
                    "sketch_image_media": null,
                    "notes": null,
                    "autogenerated": true,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "effective_image_url": null
                }
            ],
            "display_name": "string",
            "effective_image_url": null,
            "push_records": [
                {
                    "id": "44ede5f4-e19b-48b9-9ae1-38b0a8c50b6a",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "bc595941-fda0-43df-9ad6-9b891e784409",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null
                }
            ],
            "push_status": null
        }
    ],
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z"
}
⚠️ 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"
        },
        "shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Look Id"
        },
        "shot_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pose Preset Id"
        },
        "rework_available": {
            "type": "integer",
            "title": "Rework Available"
        },
        "rework_used": {
            "type": "integer",
            "title": "Rework Used"
        },
        "status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "rework_available",
        "rework_used",
        "status",
        "created_at",
        "updated_at"
    ],
    "title": "ShotPublic",
    "description": "Public schema for Shot"
}

{
    "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/shots/{shot_id}

Update Shot

Description

Update a shot.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shot_id path string No

Request body

{
    "current_revision_id": null,
    "shot_type_id": null,
    "rework_available": null,
    "rework_used": 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": {
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "shot_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shot Type Id"
        },
        "rework_available": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Rework Available"
        },
        "rework_used": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Rework Used"
        }
    },
    "type": "object",
    "title": "ShotUpdate",
    "description": "Schema for updating a Shot"
}

Responses

{
    "id": "6e4e3f8a-c019-4b7e-b899-1f930685a475",
    "shooting_look_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "revisions": [
        {
            "id": "21d8f4ad-1a8b-4bba-8457-eb33b0d19427",
            "shot_id": "fa0e0c78-ae1e-4ce1-93bb-a7ac3301a643",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "owner_id": null,
            "owner": null,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "previous_revision_id": null,
            "images": [
                {
                    "id": "a5d65626-0990-4c1f-8ed9-88428b108284",
                    "shot_revision_id": "0331f8e8-1d95-4ac4-8c27-b9a69196f618",
                    "source_type": "PREDICTION",
                    "prediction_id": null,
                    "refine_id": null,
                    "image_url": null,
                    "sketch_image_url": null,
                    "image_media": null,
                    "sketch_image_media": null,
                    "notes": null,
                    "autogenerated": true,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "effective_image_url": null
                }
            ],
            "display_name": "string",
            "effective_image_url": null,
            "push_records": [
                {
                    "id": "94660f5f-3c93-41a0-a708-630eed38c797",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "b8b8da12-f372-47a5-9cb6-46d88a95e5e4",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null
                }
            ],
            "push_status": null
        }
    ],
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z"
}
⚠️ 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"
        },
        "shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Look Id"
        },
        "shot_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pose Preset Id"
        },
        "rework_available": {
            "type": "integer",
            "title": "Rework Available"
        },
        "rework_used": {
            "type": "integer",
            "title": "Rework Used"
        },
        "status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "rework_available",
        "rework_used",
        "status",
        "created_at",
        "updated_at"
    ],
    "title": "ShotPublic",
    "description": "Public schema for Shot"
}

{
    "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/shots/{shot_id}

Delete Shot

Description

Delete a shot.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shot_id path string No

Responses

{
    "id": "0ee34bf8-cf38-4b4d-b22d-6abcc40bbc3c",
    "shooting_look_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "revisions": [
        {
            "id": "760a51dd-10c8-4626-a297-afad39ba02c0",
            "shot_id": "f3ae0453-0287-4c10-8806-421bda76ce22",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "owner_id": null,
            "owner": null,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "previous_revision_id": null,
            "images": [
                {
                    "id": "0d3a11f5-3223-490f-bb8c-f1bc55c79d9b",
                    "shot_revision_id": "0fd8067e-bf59-4f08-8b1a-5e5fad50e494",
                    "source_type": "PREDICTION",
                    "prediction_id": null,
                    "refine_id": null,
                    "image_url": null,
                    "sketch_image_url": null,
                    "image_media": null,
                    "sketch_image_media": null,
                    "notes": null,
                    "autogenerated": true,
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "effective_image_url": null
                }
            ],
            "display_name": "string",
            "effective_image_url": null,
            "push_records": [
                {
                    "id": "8bcf1310-eb5f-4e11-bb44-91b46ebb7623",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "b78d461f-9b8b-459f-a4a9-fa4c23acb63a",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null
                }
            ],
            "push_status": null
        }
    ],
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z"
}
⚠️ 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"
        },
        "shooting_look_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Look Id"
        },
        "shot_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "pose_preset_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Pose Preset Id"
        },
        "rework_available": {
            "type": "integer",
            "title": "Rework Available"
        },
        "rework_used": {
            "type": "integer",
            "title": "Rework Used"
        },
        "status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        }
    },
    "type": "object",
    "required": [
        "id",
        "rework_available",
        "rework_used",
        "status",
        "created_at",
        "updated_at"
    ],
    "title": "ShotPublic",
    "description": "Public schema for Shot"
}

{
    "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/shots/{shot_id}/download

Download Shot Revision Image

Description

Download the current revision image with metadata processing.

This endpoint: - Applies user's export configuration (format + metadata adapter) - Returns file with Content-Disposition for browser download - Filename generated by metadata adapter based on platform conventions

The image is processed according to the user's ExportConfiguration: - Format conversion (JPEG, PNG, WebP, AVIF) - Metadata injection (DEFAULT or OVS adapter) - Filename generation (adapter-specific naming conventions)

Args: db: Database session shot_id: Shot UUID current_user: Authenticated user

Returns: FileResponse with processed image and Content-Disposition header

Raises: 404: Shot not found 403: User not authorized 400: No current revision or no image 500: Image processing failed

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shot_id path string No

Responses

Schema of the response body

{
    "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/shots/{shot_id}/revision

Create Shot Revision

Description

Create a new revision for a shot with flexible image input.

This endpoint supports: - Multiple images per revision - Images from predictions, refines, or manual uploads (presigned URLs) - Sketch images for reference - Explicit status setting

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
shot_id path string No

Request body

{
    "shot_status": "PENDING",
    "previous_revision_id": null,
    "notes": null,
    "images": [
        {
            "source_type": "PREDICTION",
            "prediction_id": null,
            "refine_id": null,
            "image_url": null,
            "image_data": null,
            "sketch_image_url": null,
            "sketch_image_data": null,
            "notes": null,
            "autogenerated": 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_status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "previous_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Previous Revision Id"
        },
        "notes": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Notes"
        },
        "images": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionImageData"
            },
            "type": "array",
            "title": "Images"
        }
    },
    "type": "object",
    "required": [
        "shot_status",
        "images"
    ],
    "title": "CreateShotRevisionRequest",
    "description": "Schema for creating a shot revision via the new unified endpoint.\nSupports multiple images with flexible input formats."
}

Responses

{
    "id": "84ecd12f-92a9-4bfe-86b7-b37d1cd99ba8",
    "shot_id": "bb785094-2e13-4cf2-9651-4d3840752542",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "owner_id": null,
    "owner": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "previous_revision_id": null,
    "images": [
        {
            "id": "457244e3-1d97-4e4b-a7e6-7da7e82fa499",
            "shot_revision_id": "a630bbf8-74bb-46a9-a36f-4b187adfb7a4",
            "source_type": "PREDICTION",
            "prediction_id": null,
            "refine_id": null,
            "image_url": null,
            "sketch_image_url": null,
            "image_media": null,
            "sketch_image_media": null,
            "notes": null,
            "autogenerated": true,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "effective_image_url": null
        }
    ],
    "display_name": "string",
    "effective_image_url": null,
    "push_records": [
        {
            "id": "b856736a-7d0f-45ed-9d09-3c66938baeb3",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "98b04d2d-6a6a-48f6-8311-ae9bb45dc213",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null
        }
    ],
    "push_status": 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"
        },
        "shot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Id"
        },
        "version": {
            "type": "integer",
            "title": "Version"
        },
        "notes": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Notes"
        },
        "shot_status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "owner_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Owner Id"
        },
        "owner": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "previous_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Previous Revision Id"
        },
        "images": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionImagePublic"
            },
            "type": "array",
            "title": "Images",
            "default": []
        },
        "display_name": {
            "type": "string",
            "title": "Display Name"
        },
        "effective_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Effective Image Url"
        },
        "push_records": {
            "items": {
                "$ref": "#/components/schemas/ExternalImagePushPublic"
            },
            "type": "array",
            "title": "Push Records",
            "default": []
        },
        "push_status": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Push Status",
            "description": "Aggregate push status across all integrations.\n\nReturns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED\nPriority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "shot_id",
        "version",
        "shot_status",
        "created_at",
        "updated_at",
        "display_name",
        "push_status"
    ],
    "title": "ShotRevisionPublic",
    "description": "Public schema for ShotRevision"
}

{
    "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/shots/revisions/upload-url

Get Revision Upload Url

Description

Get a presigned URL for direct upload of revision images.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
content_type query string image/jpeg No
filename query string No
shot_id query string No

Responses

Schema of the response body
{
    "type": "object",
    "additionalProperties": true,
    "title": "Response Get Shot Revision Upload Url"
}

{
    "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/shots/revisions/{revision_id}

Get Revision

Description

Get a specific revision by ID.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
revision_id path string No

Responses

{
    "id": "ee27ab58-3c15-4682-a363-f2c8937ca25e",
    "shot_id": "280ee30a-8237-4a37-afe0-75d9e66cd06c",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "owner_id": null,
    "owner": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "previous_revision_id": null,
    "images": [
        {
            "id": "28389e8f-77e2-4e7f-a41f-a069a3ae99f7",
            "shot_revision_id": "2cfb2235-7f8a-412c-8b29-cc4c5bfc45dc",
            "source_type": "PREDICTION",
            "prediction_id": null,
            "refine_id": null,
            "image_url": null,
            "sketch_image_url": null,
            "image_media": null,
            "sketch_image_media": null,
            "notes": null,
            "autogenerated": true,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "effective_image_url": null
        }
    ],
    "display_name": "string",
    "effective_image_url": null,
    "push_records": [
        {
            "id": "f60575b4-975d-4053-8853-ca2165b0fc7e",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "42375fd5-bab0-48d8-b43f-4502b3af317d",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null
        }
    ],
    "push_status": 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"
        },
        "shot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Id"
        },
        "version": {
            "type": "integer",
            "title": "Version"
        },
        "notes": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Notes"
        },
        "shot_status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "owner_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Owner Id"
        },
        "owner": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "previous_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Previous Revision Id"
        },
        "images": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionImagePublic"
            },
            "type": "array",
            "title": "Images",
            "default": []
        },
        "display_name": {
            "type": "string",
            "title": "Display Name"
        },
        "effective_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Effective Image Url"
        },
        "push_records": {
            "items": {
                "$ref": "#/components/schemas/ExternalImagePushPublic"
            },
            "type": "array",
            "title": "Push Records",
            "default": []
        },
        "push_status": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Push Status",
            "description": "Aggregate push status across all integrations.\n\nReturns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED\nPriority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "shot_id",
        "version",
        "shot_status",
        "created_at",
        "updated_at",
        "display_name",
        "push_status"
    ],
    "title": "ShotRevisionPublic",
    "description": "Public schema for ShotRevision"
}

{
    "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/shots/revisions/{revision_id}

Delete Shot Revision

Description

Delete a shot revision and its associated media resources.

This endpoint: - Detaches media resources for all images (handles file cleanup via MediaResource) - Deletes the specified revision from the database - If deleting the current revision, updates the shot's current_revision_id to the deleted revision's previous_revision_id (or None if there wasn't one)

Constraints: - Cannot delete a revision that is referenced by other revisions as their previous_revision

Args: db: Database session dependency revision_id: UUID of the revision to delete current_user: Current authenticated user media_service: Media resource service for detaching media

Returns: None (204 NO_CONTENT on success)

Raises: HTTPException: 404 if revision not found HTTPException: 403 if user not authorized HTTPException: 409 if business rules prevent deletion (referenced by other revisions) HTTPException: 500 if database error occurs

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
revision_id path string No

Responses

{
    "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/shots/revisions/{revision_id}/set-current

Set Revision As Current

Description

Set a revision as the current revision for the shot.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
revision_id path string No

Responses

{
    "id": "4e12e421-0484-4a42-b4c5-e0b598801d5a",
    "shot_id": "70332771-d770-4ee3-80e9-ba691c27d7ea",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "owner_id": null,
    "owner": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "previous_revision_id": null,
    "images": [
        {
            "id": "607203e6-8fac-4980-bb48-cdadd600feb2",
            "shot_revision_id": "4ac60b37-ed71-419e-a8af-51121026fb98",
            "source_type": "PREDICTION",
            "prediction_id": null,
            "refine_id": null,
            "image_url": null,
            "sketch_image_url": null,
            "image_media": null,
            "sketch_image_media": null,
            "notes": null,
            "autogenerated": true,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "effective_image_url": null
        }
    ],
    "display_name": "string",
    "effective_image_url": null,
    "push_records": [
        {
            "id": "13c6bb6e-c8dc-4edf-a6d7-dd86dec8905d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "d317c657-8394-46d5-8024-6917b9a08084",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null
        }
    ],
    "push_status": 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"
        },
        "shot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Id"
        },
        "version": {
            "type": "integer",
            "title": "Version"
        },
        "notes": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Notes"
        },
        "shot_status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "owner_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Owner Id"
        },
        "owner": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "previous_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Previous Revision Id"
        },
        "images": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionImagePublic"
            },
            "type": "array",
            "title": "Images",
            "default": []
        },
        "display_name": {
            "type": "string",
            "title": "Display Name"
        },
        "effective_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Effective Image Url"
        },
        "push_records": {
            "items": {
                "$ref": "#/components/schemas/ExternalImagePushPublic"
            },
            "type": "array",
            "title": "Push Records",
            "default": []
        },
        "push_status": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Push Status",
            "description": "Aggregate push status across all integrations.\n\nReturns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED\nPriority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "shot_id",
        "version",
        "shot_status",
        "created_at",
        "updated_at",
        "display_name",
        "push_status"
    ],
    "title": "ShotRevisionPublic",
    "description": "Public schema for ShotRevision"
}

{
    "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/shots/revisions/{revision_id}/export

Export Revision

Description

Export a revision to external systems (OVS).

Creates export records for each configured external integration and immediately triggers the push to the external service.

Requirements: - Revision must be in APPROVED status - Product must have at least one ExternalProductMapping configured

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
revision_id path string No

Responses

{
    "revision_id": "d76ac572-003b-43c8-8a54-55938d510c66",
    "exports_created": 0,
    "exports_skipped": 0,
    "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": {
        "revision_id": {
            "type": "string",
            "format": "uuid",
            "title": "Revision Id"
        },
        "exports_created": {
            "type": "integer",
            "title": "Exports Created"
        },
        "exports_skipped": {
            "type": "integer",
            "title": "Exports Skipped"
        },
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "revision_id",
        "exports_created",
        "exports_skipped",
        "message"
    ],
    "title": "ExportRevisionResponse",
    "description": "Response for export revision endpoint."
}

{
    "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/shots/looks/{look_id}/export

Export Look

Description

Export all eligible shots from a look to external systems (OVS).

For each shot in the look: - If the current revision is APPROVED, creates export records for each configured external integration and immediately triggers the push to the external service.

Requirements: - Look must exist and user must have permission - Product must have at least one ExternalProductMapping configured - Only shots with APPROVED status are exported

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
look_id path string No

Responses

{
    "look_id": "7b20a2d5-81d1-4a85-9f93-6d9ba6ac8f14",
    "revisions_processed": 0,
    "revisions_skipped": 0,
    "exports_created": 0,
    "exports_skipped": 0,
    "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": {
        "look_id": {
            "type": "string",
            "format": "uuid",
            "title": "Look Id"
        },
        "revisions_processed": {
            "type": "integer",
            "title": "Revisions Processed"
        },
        "revisions_skipped": {
            "type": "integer",
            "title": "Revisions Skipped"
        },
        "exports_created": {
            "type": "integer",
            "title": "Exports Created"
        },
        "exports_skipped": {
            "type": "integer",
            "title": "Exports Skipped"
        },
        "message": {
            "type": "string",
            "title": "Message"
        }
    },
    "type": "object",
    "required": [
        "look_id",
        "revisions_processed",
        "revisions_skipped",
        "exports_created",
        "exports_skipped",
        "message"
    ],
    "title": "ExportLookResponse",
    "description": "Response for export look endpoint."
}

{
    "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/shots/revisions/{revision_id}/restore

Restore Shot Revision

Description

Restore a shot to a previous revision by deleting all revisions that came after it.

This endpoint: - Finds all revisions that came after the target in the chain - Detaches media resources and deletes those revisions - Sets the target revision as the current revision

Example: Given chain rev1 --> rev2 --> rev3 --> rev4 (current) - Restoring to rev2 deletes rev3 and rev4 - rev2 becomes the new current revision

If the target revision is already current, this is a no-op.

Args: db: Database session dependency revision_id: UUID of the revision to restore to current_user: Current authenticated user media_service: Media resource service for detaching media

Returns: ShotRevisionPublic: The restored revision

Raises: HTTPException: 404 if revision not found HTTPException: 403 if user not authorized HTTPException: 409 if business rules prevent restoration (external references) HTTPException: 500 if database error occurs

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
revision_id path string No

Responses

{
    "id": "eb4ea77c-6d4e-47c6-9bf6-fbee425fb83e",
    "shot_id": "47cab502-dede-40e9-8006-73827b2061f6",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "owner_id": null,
    "owner": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "previous_revision_id": null,
    "images": [
        {
            "id": "c3fe7093-718b-4500-822b-0efbcbfdfc2a",
            "shot_revision_id": "733a3404-169f-4cea-91e1-0102e4cf1e85",
            "source_type": "PREDICTION",
            "prediction_id": null,
            "refine_id": null,
            "image_url": null,
            "sketch_image_url": null,
            "image_media": null,
            "sketch_image_media": null,
            "notes": null,
            "autogenerated": true,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "effective_image_url": null
        }
    ],
    "display_name": "string",
    "effective_image_url": null,
    "push_records": [
        {
            "id": "ffe1357f-976e-4c42-9b0d-2318bd92353d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "c2fa3497-2a8a-463d-9d96-ce5dcc7d5d6f",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null
        }
    ],
    "push_status": 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"
        },
        "shot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shot Id"
        },
        "version": {
            "type": "integer",
            "title": "Version"
        },
        "notes": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Notes"
        },
        "shot_status": {
            "$ref": "#/components/schemas/ShotStatus"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "owner_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Owner Id"
        },
        "owner": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/UserSummary"
                },
                {
                    "type": "null"
                }
            ]
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "previous_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Previous Revision Id"
        },
        "images": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionImagePublic"
            },
            "type": "array",
            "title": "Images",
            "default": []
        },
        "display_name": {
            "type": "string",
            "title": "Display Name"
        },
        "effective_image_url": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Effective Image Url"
        },
        "push_records": {
            "items": {
                "$ref": "#/components/schemas/ExternalImagePushPublic"
            },
            "type": "array",
            "title": "Push Records",
            "default": []
        },
        "push_status": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Push Status",
            "description": "Aggregate push status across all integrations.\n\nReturns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED\nPriority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "shot_id",
        "version",
        "shot_status",
        "created_at",
        "updated_at",
        "display_name",
        "push_status"
    ],
    "title": "ShotRevisionPublic",
    "description": "Public schema for ShotRevision"
}

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

AgeClass

Type: string

BaseImagePublic

Name Type Description
image_url string
shot_type_id string(uuid)
shot_type_label string

BodyType

Type: string

CreateShotRevisionRequest

Name Type Description
images Array<ShotRevisionImageData>
notes
previous_revision_id
shot_status ShotStatus

DefaultShotTypes

Type: string

DraftLooksSummary

Name Type Description
generating_count integer
total_draft_looks integer

ExportLookResponse

Name Type Description
exports_created integer
exports_skipped integer
look_id string(uuid)
message string
revisions_processed integer
revisions_skipped integer

ExportRevisionResponse

Name Type Description
exports_created integer
exports_skipped integer
message string
revision_id string(uuid)

ExternalImagePushPublic

Name Type Description
completed_at
created_at string(date-time)
error_message
id string(uuid)
integration_id string(uuid)
push_status PushStatus
pushed_at
updated_at string(date-time)

EyeColor

Type: string

FinalizeOutfitRequest

Name Type Description
outfit_id ID of existing outfit proposal to finalize
outfit_instruction Instructions for new outfit
outfit_product_ids Product IDs for new outfit
outfit_ref_imgs_urls Reference image URLs for new outfit

Gender

Type: string

GenerateShootingLooksRequest

Name Type Description
default_background_preset_id
default_file_format string
default_height
default_instructions string
default_resolution_preset_id
default_style_id
default_width
generate_base_images boolean
generate_outfit boolean
pose_preset_ids Override the pose presets from guidelines. When provided, these pose presets are baked into every created look instead of those from the shooting's default guidelines.
product_filters Product filters matching the read_products endpoint (archived, enabled, brand, brand_collection, demo, search, shot_statuses, gender, product_type, sort_by, sort_order, skip, limit)
product_ids Simple list of product IDs (use with generate_outfit=True for AI generation)
product_outfit_configs Per-product outfit configurations (use with generate_outfit=False for manual config)
set_design_id Override the set design from guidelines. When provided, this set design is baked into every created look instead of the one from the shooting's default guidelines.
shot_type_ids Array<string(uuid)>
status
subject_ids Array<string(uuid)>
unisex_gender_preference Controls how UNISEX products are paired with subjects. MALE: pair only with male subjects. FEMALE: pair only with female subjects. UNISEX or None: pair with all subjects (default behavior).

GenerateShootingLooksResponse

Name Type Description
generation_results Array<GenerationCreationResult>
looks Array<ShootingLookPublic>
total_generations_created integer

GenerationCreationResult

Name Type Description
generation_id string(uuid)
look_id string(uuid)
shot_id string(uuid)

HairColor

Type: string

HTTPValidationError

Name Type Description
detail Array<ValidationError>

ManualOutfitCreate

Name Type Description
outfit_instruction
outfit_product_ids Array<string(uuid)>
outfit_ref_imgs_urls

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

OutfitGenerationStatus

Type: string

PosePresetPublic

Name Type Description
created_at string(date-time)
id string(uuid)
name string
organization_id
owner_id string(uuid)
pose_image_media
pose_image_url
prompt
shot_type_id string(uuid)
updated_at string(date-time)

ProductGender

Type: string

ProductOutfitConfig

Name Type Description
background_preset_id
file_format string
height
outfit_instruction
outfit_product_ids Array<string(uuid)>
outfit_ref_imgs_urls
product_id string(uuid) ID of the product for this configuration
resolution_preset_id
style_id
width

ProductPlacement

Type: string

ProductPublic

Name Type Description
age_class
archived boolean
back_description
back_image_media
back_image_url
brand
brand_collection
brand_metadata
category
closure_type
colour
cover_image_media
cover_image_url
created_at string(date-time)
data_image_urls Array<string>
demo boolean
description
ecommerce_description
enabled boolean
exports_completed
exports_total
fit_type
gender ProductGender
id string(uuid)
in_store_date
integration_name
is_filler boolean
length_type
master_item_code
materials
name string
neckline
organization_id
owner_id string(uuid)
pattern
placement
product_family
product_type
product_type_id
public boolean
reference_images Array<string>
reference_images_media
season
shot_status
shot_status_shooting_look_id
shots Array<>
sku
sleeve_type
style_code
theme
type
updated_at string(date-time)
year
zone

ProductShootingStatus

Type: string

PushStatus

Type: string

RevisionSource

Type: string

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)

SetDesignPublic

Name Type Description
background_preset_id
base_images Array<SetBaseImagePublic>
created_at string(date-time)
description
id string(uuid)
name string
organization_id
owner_id string(uuid)
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)

ShootingCreate

Name Type Description
archived boolean
brand
collection
default_guidelines_id Default guidelines preset for this shooting
description
due_date string(date-time)
name string
organization_id Organization this shooting belongs to
season

ShootingDetailPublic

Name Type Description
archived boolean
brand
collection
created_at string(date-time)
default_guidelines
default_guidelines_id
description
due_date
id string(uuid)
looks Array<ShootingLookPublic>
name string
organization_id
owner_id string(uuid)
season
shot_status
status
updated_at string(date-time)

ShootingGuidelinesPublic

Name Type Description
background_preset_id
created_at string(date-time)
file_format string
id string(uuid)
name string
organization_id
owner_id string(uuid)
pose_presets Array<PosePresetPublic>
resolution_preset_id
set_design
set_design_id
shot_types Array<ShotTypePublic>
subjects Array<SubjectPublic>
updated_at string(date-time)

ShootingLookComputedStatus

Type: string

ShootingLookOutfitPublic

Name Type Description
created_at string(date-time)
generation_error
generation_status
id string(uuid)
outfit_instruction
outfit_product_ids Array<string(uuid)>
outfit_products Array<ProductPublic>
outfit_ref_images_media
outfit_ref_imgs_urls Array<string>
retry_count integer
shooting_look_id string(uuid)
updated_at string(date-time)

ShootingLookPublic

Name Type Description
assignee
assignee_id
background_preset_id
created_at string(date-time)
file_format string
height
id string(uuid)
outfit
outfit_id
outfit_instruction Get outfit instruction from the selected outfit.
outfit_product_ids Array<string(uuid)> Get outfit product IDs from the selected outfit (supports both storage mechanisms).
outfit_proposals Array<ShootingLookOutfitPublic>
outfit_ref_imgs_urls Array<string> Get outfit reference image URLs from the selected outfit.
pose_presets Array<PosePresetPublic>
product_cover_image_url
product_id
product_name
product_sku
resolution_preset_id
set_design
set_design_id
shooting_id string(uuid)
shot_status
shots Array<ShotPublic>
status ShootingLookStatus
style_id
subject_id
subject_name
updated_at string(date-time)
width

ShootingLooksPublic

Name Type Description
count integer
data Array<ShootingLookPublic>

ShootingLooksSummaryPublic

Name Type Description
count integer
data Array<ShootingLookSummary>

ShootingLookStatus

Type: string

ShootingLookSummary

Name Type Description
assignee
assignee_id
created_at string(date-time)
id string(uuid)
outfit_generation_status
outfit_products_count integer
product_cover_image_url
product_id
product_name
product_sku
shooting_id string(uuid)
shot_status
shots Array<ShotSummary>
status ShootingLookStatus
updated_at string(date-time)

ShootingLookUpdate

Name Type Description
assignee_id
background_preset_id
file_format
height
outfit_id
product_id
resolution_preset_id
shot_type_ids
status
style_id
subject_id
width

ShootingPublic

Name Type Description
archived boolean
brand
collection
created_at string(date-time)
default_guidelines
default_guidelines_id
description
due_date
id string(uuid)
name string
organization_id
owner_id string(uuid)
season
shot_status
status
updated_at string(date-time)

ShootingsPublic

Name Type Description
count integer
data Array<ShootingPublic>

ShootingStatus

Type: string

ShootingStatusCount

Name Type Description
count integer
status ShootingLookComputedStatus

ShootingStatusFilter

Type: string

ShootingSummary

Name Type Description
status_breakdown Array<ShootingStatusCount>
total_products integer
total_shooting_looks integer

ShootingUpdate

Name Type Description
archived
brand
collection
default_guidelines_id Default guidelines preset for this shooting
description
due_date
name
organization_id Organization to transfer this shooting to
season

ShotCreate

Name Type Description
shooting_look_id string(uuid)
shot_type_id

ShotPublic

Name Type Description
created_at string(date-time)
current_revision_id
id string(uuid)
pose_preset_id
revisions Array<ShotRevisionPublic>
rework_available integer
rework_used integer
shooting_look_id
shot_type
status ShotStatus
updated_at string(date-time)

ShotRevisionImageData

Name Type Description
autogenerated
image_data
image_url
notes
prediction_id
refine_id
sketch_image_data
sketch_image_url
source_type RevisionSource

ShotRevisionImagePublic

Name Type Description
autogenerated boolean
created_at string(date-time)
effective_image_url
id string(uuid)
image_media
image_url
notes
prediction_id
refine_id
shot_revision_id string(uuid)
sketch_image_media
sketch_image_url
source_type RevisionSource
updated_at string(date-time)

ShotRevisionPublic

Name Type Description
created_at string(date-time)
display_name string
effective_image_url
id string(uuid)
images Array<ShotRevisionImagePublic>
notes
owner
owner_id
previous_revision_id
push_records Array<ExternalImagePushPublic>
push_status Aggregate push status across all integrations. Returns: None (no pushes), PENDING, IN_PROGRESS, AWAITING_CONFIRMATION, COMPLETED, or FAILED Priority: FAILED > IN_PROGRESS > AWAITING_CONFIRMATION > PENDING > COMPLETED
shot_id string(uuid)
shot_revision_status
shot_status ShotStatus
updated_at string(date-time)
version integer

ShotRevisionStatus

Type: string

ShotsPublic

Name Type Description
count integer
data Array<ShotPublic>

ShotStatus

Type: string

ShotStatusFilter

Type: string

ShotSummary

Name Type Description
current_revision_id
id string(uuid)
push_status
shot_type
status ShotStatus

ShotTypeFraming

Type: string

ShotTypePublic

Name Type Description
core_focus boolean
created_at string(date-time)
default_shot_type
file_naming_convention
framing ShotTypeFraming
id string(uuid)
margins
name string
organization_id
owner_id
prompt
prompt_builder_section
public boolean
reference_image
reference_image_url
shot_type_prompt_instruction
shot_type_ref_image_url
updated_at string(date-time)
view_angle ViewAngle

ShotUpdate

Name Type Description
current_revision_id
rework_available
rework_used
shot_type_id

StartGenerationsRequest

Name Type Description
generations_per_shot_type integer Number of generations to create per shot type (1-10)

StartGenerationsResponse

Name Type Description
generation_ids Array<string(uuid)>
generations_per_shot_type integer
look_id string(uuid)
message string

StartShotTypeGenerationsRequest

Name Type Description
generations_count integer Number of generations to create (1-10)
shot_type_id string(uuid) UUID of the shot type to generate for

StartShotTypeGenerationsResponse

Name Type Description
generation_ids Array<string(uuid)>
generations_count integer
look_id string(uuid)
message string
shot_type_id string(uuid)

SubjectAgeClass

Type: string

SubjectMeasurementsPublic

Name Type Description
bust_cm
eye_color
hair_color
height_cm
hips_cm
id string(uuid)
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
description
enabled boolean
ethnicity
gender Gender
id string(uuid)
lora_status string
lora_trigger
measurements
name string
negative_prompt
organization_id
owner_id string(uuid)
portfolio_images_media
portrait_image_media
portrait_image_url
positive_prompt
public boolean
ready boolean
slug string
subject_type SubjectType
surname
updated_at string(date-time)

SubjectType

Type: string

UserSummary

Name Type Description
email string()
full_name
id string(uuid)

ValidationError

Name Type Description
ctx
input
loc Array<>
msg string
type string

ViewAngle

Type: string

Security schemes

Name Type Scheme Description
OAuth2PasswordBearer oauth2