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.

Three feature extensions on top of the legacy flow:

  • phase controls eager production creation. Only BRIEF and PRODUCTION are valid at creation; the intermediate phases (TEST_SHOOTING, PRODUCTS_SELECTION, AGREEMENT) and CLOSED are rejected upstream by the schema validator. PRODUCTION (default) creates MAIN; BRIEF skips it.
  • default_guidelines (inline) creates a fresh template alongside the shooting in one request — mutually exclusive with default_guidelines_id (also enforced by the schema). Omitting both shot-selection fields seeds the default e-commerce photo pack. Supplying either field, including an empty list (or shot_type_rules=null), is an explicit choice and suppresses that seed.
  • require_test_shooting=True blocks MAIN creation until a TEST production exists. When combined with phase=PRODUCTION, the schema rejects upfront.

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": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "organization_id": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "phase": "BRIEF",
    "require_test_shooting": true,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "name": {
            "type": "string",
            "title": "Name",
            "description": "Optional; omit or send blank to have it date-stamped."
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date",
            "description": "Optional; nothing computes on it. Set it later if needed."
        },
        "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 (existing template)"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesCreate"
                },
                {
                    "type": "null"
                }
            ],
            "description": "Inline guidelines to create alongside the shooting. Mutually exclusive with default_guidelines_id. When supplied, omitting both shot_type_ids and shot_type_rules seeds the default e-commerce photo pack; supplying either field, even as an empty list (or shot_type_rules as null), preserves that explicit selection and suppresses the seed."
        },
        "phase": {
            "$ref": "#/components/schemas/ShootingPhase",
            "description": "Initial lifecycle phase. Only BRIEF and PRODUCTION are valid at creation. PRODUCTION (default) eagerly creates the MAIN production; BRIEF skips production creation. The intermediate phases (TEST_SHOOTING, PRODUCTS_SELECTION, AGREEMENT) and the terminal CLOSED phase are user-driven transitions reachable only via PATCH /shootings/{id}/phase, and are rejected here.",
            "default": "PRODUCTION"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "description": "When True, MAIN production cannot be created until at least one TEST production exists for this shooting. Editable via the update endpoint until the MAIN production exists; frozen afterwards.",
            "default": false
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "title": "ShootingCreate",
    "description": "Request model for creating a new Shooting.\n\nTwo domain extensions land here on top of the legacy fields:\n\n- ``phase`` controls whether the eager MAIN production is created\n  at POST time.  Only ``BRIEF`` and ``PRODUCTION`` are valid\n  initial phases: ``PRODUCTION`` (default) keeps the legacy\n  behaviour and eagerly creates the MAIN production; ``BRIEF``\n  skips it.  All other phases (``TEST_SHOOTING``,\n  ``PRODUCTS_SELECTION``, ``AGREEMENT``, ``CLOSED``) are rejected\n  at validation time — they are user-driven workflow transitions\n  reachable only via ``PATCH /shootings/{id}/phase``.\n\n- ``default_guidelines`` accepts an inline guidelines payload to\n  create a fresh template alongside the shooting in a single\n  request.  Mutually exclusive with ``default_guidelines_id``: pass\n  one or the other, never both."
}

Responses

{
    "id": "3dff884b-3023-4d9c-8b6f-8c6e4f5509cc",
    "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": "9aaf593f-4840-4073-988a-f34188c30e48",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "shooting_type_id": null,
    "shooting_type": null,
    "deleted_at": null,
    "shot_status": null,
    "status": null,
    "board_pdf": null,
    "cover_image": null,
    "background_images": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "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"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "background_images": {
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    {
                        "type": "string"
                    }
                ]
            },
            "type": "array",
            "title": "Background Images"
        }
    },
    "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 production_requests for performance).

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 production_requests.

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

Input parameters

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

Responses

{
    "data": [
        {
            "id": "e9c5c8f7-da80-4b0c-bba4-7ce4be04d2f3",
            "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": "7d55db49-f5b1-4eca-82c7-9b21647c82db",
            "organization_id": null,
            "archived": true,
            "season": null,
            "collection": null,
            "brand": null,
            "billing_metering_rule": null,
            "billing_funding": null,
            "billing_state": null,
            "po_tag": null,
            "included_proposal_rounds": 0,
            "included_postprod_rounds": 0,
            "billing_note": null,
            "default_guidelines_id": null,
            "default_guidelines": null,
            "column_owners": {},
            "phase": null,
            "latest_test_production_id": null,
            "require_test_shooting": true,
            "shooting_type_id": null,
            "shooting_type": null,
            "deleted_at": null,
            "shot_status": null,
            "status": null,
            "board_pdf": null,
            "cover_image": null,
            "background_images": [
                null
            ]
        }
    ],
    "count": 0
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "data": {
            "items": {
                "$ref": "#/components/schemas/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 production_requests 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"
}

POST /api/v1/shootings/custom

Create Custom Shooting

Description

Create a CUSTOM (non-e-commerce) shooting.

The CUSTOM shooting_type is implied by the route. phase is forced to PRODUCTION (eagerly creates the MAIN production) and require_test_shooting is forced False; neither is accepted on the payload. The seeded CUSTOM_DEFAULT guideline supplies the export configuration inherited by the MAIN snapshot and its requests.

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": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "organization_id": null,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "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"
        },
        "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"
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "name"
    ],
    "title": "CustomShootingCreate",
    "description": "Request model for creating a CUSTOM (non-e-commerce) Shooting.\n\nThe route implies the CUSTOM ``shooting_type`` — ``shooting_type_id``\nis NOT accepted. ``phase`` is forced to PRODUCTION (eagerly creates\nthe MAIN production) and ``require_test_shooting`` is forced False;\nneither is accepted. The server attaches the system CUSTOM guideline;\ncallers cannot select one through this payload."
}

Responses

{
    "id": "680dc051-bad7-4b87-b190-78fd286b56d5",
    "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": "1d06cff5-d074-44c8-b144-b818483b1114",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "shooting_type_id": null,
    "shooting_type": null,
    "deleted_at": null,
    "shot_status": null,
    "status": null,
    "board_pdf": null,
    "cover_image": null,
    "background_images": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "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"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "background_images": {
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    {
                        "type": "string"
                    }
                ]
            },
            "type": "array",
            "title": "Background Images"
        }
    },
    "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/summary

Get Shooting Summary

Description

Get summary statistics for shootings.

Returns total products, total shooting production_requests, 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_production_requests": 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_production_requests": {
            "type": "integer",
            "title": "Total Production Requests"
        },
        "status_breakdown": {
            "items": {
                "$ref": "#/components/schemas/ShootingStatusCount"
            },
            "type": "array",
            "title": "Status Breakdown"
        }
    },
    "type": "object",
    "required": [
        "total_products",
        "total_production_requests",
        "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}/header

Read Shooting Header

Description

Lightweight shooting fetch for the kanban page header / SSR guard.

Returns identity, owner/org, due_date, the bounded chip lists in default_guidelines (subjects, shot_types, pose_presets), the derived phase, and latest_test_production_id (a handle to the shooting's latest TEST production). Does NOT load the heavy productions tree (production_requests, shots, revisions, predictions, outfits, products, assignees). Constant SQL count regardless of how many shots the shooting contains. Enforces the same owner / organization scoping as the other shooting endpoints.

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": "8ad12f99-109f-4832-86b0-f755cc3baa01",
    "organization_id": null,
    "public": true,
    "name": "string",
    "description": null,
    "brand": null,
    "season": null,
    "collection": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "due_date": null,
    "owner_id": "640b46eb-7459-4461-afba-f27b41f364f9",
    "shooting_type_id": null,
    "shooting_type_key": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "public": {
            "type": "boolean",
            "title": "Public",
            "default": false
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingHeaderGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "id",
        "name",
        "created_at",
        "updated_at",
        "owner_id"
    ],
    "title": "ShootingHeaderPublic",
    "description": "Lightweight Shooting response for the kanban header / SSR guard.\n\nExcludes shots, production_requests, predictions, outfits, products,\nassignees, and full preset objects. The endpoint that returns this\nschema must not scale with shot count."
}

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

Read Shooting Billing Summary

Description

Read-time billing meter for one shooting: per-category event counts (the primary truth) plus the derived token lens.

Double-gated, matching the wallet routes' visibility model: the caller must be able to read the shooting (owner / org member / superuser — ShootingService._authorize_shooting) AND hold billing-read access on the shooting's organization (superuser or a MANAGER / REVIEWER member). Counts are derived from the existing revision chains + outfit rows at read time — no capture hooks, no new tables.

Input parameters

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

Responses

{
    "shooting_id": "0ca430d3-4363-4c05-838f-67c0bffc153e",
    "organization_id": null,
    "billing_state": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "po_tag": null,
    "billing_note": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "counts": {
        "stylist_runs": 0,
        "proposals": 0,
        "review_rounds": 0,
        "reworks": 0,
        "rights_delivered": 0
    },
    "tokens": {
        "stylist_runs": 10.12,
        "proposals": 10.12,
        "review_rounds": 10.12,
        "reworks": 10.12,
        "rights": 10.12,
        "gross": 10.12,
        "net": 10.12,
        "absorbed": 10.12
    },
    "billable": 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": {
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "billing_state": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing State"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Metering Rule"
        },
        "billing_funding": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Funding"
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "counts": {
            "$ref": "#/components/schemas/BillingMeterCounts"
        },
        "tokens": {
            "$ref": "#/components/schemas/BillingMeterTokens"
        },
        "billable": {
            "anyOf": [
                {
                    "type": "number"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billable"
        }
    },
    "type": "object",
    "required": [
        "shooting_id",
        "counts",
        "tokens"
    ],
    "title": "ShootingBillingSummary",
    "description": "Per-shooting billing meter: config + counts + derived tokens.\n\n``billable`` is the rule-aware \"client pays\" figure (per_process = net;\nper_image = delivered photos only; flat / none / unset = ``None``)."
}

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

Get Shooting Board

Description

Return a short-lived presigned GET URL for the shooting's confidential board PDF.

Org-gated: the caller must be able to read the shooting (owner, org member, or superuser) — enforced by ShootingService._authorize_shooting (404 if the shooting is missing/soft-deleted, 403 if the caller lacks access). 404 if the shooting has no board. The board is served ONLY through this signed URL (TTL ~5 min); it is never exposed via the public /files path or a public CDN URL.

Input parameters

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

Responses

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

Schema of the response body
{
    "properties": {
        "url": {
            "type": "string",
            "title": "Url"
        }
    },
    "type": "object",
    "required": [
        "url"
    ],
    "title": "ShootingBoardUrl",
    "description": "Response for ``GET /shootings/{id}/board``.\n\nCarries only a short-lived presigned GET URL to the confidential board\nPDF. The frontend fetches the bytes on demand; the URL expires within\nminutes and is never persisted. There is no public CDN URL for the board."
}

{
    "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}/ovs-dam-delivery

Start Ovs Dam Delivery

Description

Queue the eligible Completed images in a shooting for OVS DAM.

Input parameters

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

Request body

{
    "mode": "NEW_ONLY"
}
⚠️ 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": {
        "mode": {
            "$ref": "#/components/schemas/OvsDamDeliveryMode"
        }
    },
    "type": "object",
    "required": [
        "mode"
    ],
    "title": "OvsDamDeliveryRequest"
}

Responses

{
    "status": "ACCEPTED",
    "image_count": 0,
    "failure_reason": null,
    "integration_name": 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": {
        "status": {
            "$ref": "#/components/schemas/OvsDamDeliveryStatus"
        },
        "image_count": {
            "type": "integer",
            "title": "Image Count"
        },
        "failure_reason": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/PushFailureReason"
                },
                {
                    "type": "null"
                }
            ]
        },
        "integration_name": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Integration Name"
        }
    },
    "type": "object",
    "required": [
        "status",
        "image_count"
    ],
    "title": "OvsDamDeliveryResponse"
}

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

Supports replacing or removing the media slots (confidential board_pdf and public cover_image): omit a field to leave it untouched, pass a MediaInput to replace it, or pass explicit null to remove it. Both are handled through the MediaResource system (deferred-deletion replace). The board never gets a public URL and a non-PDF upload is rejected with 400; a non-image cover upload is likewise rejected with 400.

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,
    "require_test_shooting": true,
    "organization_id": null,
    "default_guidelines_id": null,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the 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"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "description": "Whether a TEST production is required before MAIN. Editable only while the shooting has no MAIN production; a change after that is rejected with 400, because the MAIN-creation guard has already run and cannot be applied retroactively. Omit to leave it untouched.",
            "default": false
        },
        "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"
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaInput"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "title": "ShootingUpdate",
    "description": "Request model for updating a Shooting."
}

Responses

{
    "id": "3d65855e-8739-4d55-b611-d10833fc3705",
    "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": "51110968-9d91-422e-983b-a027c33c6476",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "shooting_type_id": null,
    "shooting_type": null,
    "deleted_at": null,
    "shot_status": null,
    "status": null,
    "board_pdf": null,
    "cover_image": null,
    "background_images": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "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"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "background_images": {
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    {
                        "type": "string"
                    }
                ]
            },
            "type": "array",
            "title": "Background Images"
        }
    },
    "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}/restore

Restore Shooting

Description

Restore a soft-deleted shooting (admin only).

Recursively restores cascade-killed productions and production_requests (those whose deleted_at >= shooting.deleted_at). Independently-killed earlier descendants stay dead until restored via their own endpoints.

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}/production-requests

Create Production Requests

Description

Create production requests for a shooting: one per requested product, each paired with a balanced-randomly selected compatible subject (gender/age gate) from the request's subjects. 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

{
    "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": {
        "production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Id",
            "description": "Target ShootingProduction. Defaults to the shooting's MAIN production. Pass a TEST production's id to create production requests in that test run."
        },
        "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, age_class, product_type, product_wear_id, 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": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generate Outfit",
            "description": "AI outfit generation intent. Omitted/null inherits the brief's auto_generate_outfits (via the production snapshot); an explicit value always wins. product_outfit_configs implies false."
        },
        "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_export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Export Configuration Id"
        },
        "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."
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id",
            "description": "Optional override for the generative workflow template attached to the created production requests. When omitted/null, inherited from the snapshot guidelines. Cross-org templates are rejected (422)."
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double",
            "description": "Tri-state mannequin-pipeline mode for the created PRs. ``null`` (default) = AUTO: server resolves at dispatch from the core product's ``product_type`` (restricted slugs in RESTRICTED_PRODUCT_TYPES opt in). ``true`` = ON (force mannequin). ``false`` = OFF (force regular). ``true`` is mutually exclusive with ``generative_workflow_template_id`` (422)."
        },
        "readiness": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestReadiness"
                },
                {
                    "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)."
        },
        "skip_existing": {
            "type": "boolean",
            "title": "Skip Existing",
            "description": "When True, skip products that already have a live (non-soft-deleted) ProductionRequest in the target production, regardless of that request's subject. Lets the FE re-call this endpoint idempotently after a brief edit (e.g., adding a subject or sample product to a running TEST production) without producing duplicates. The default ``False`` preserves the historical 'allow duplicates' contract for explicit bulk-create flows (one new request per product per call).",
            "default": false
        }
    },
    "type": "object",
    "title": "GenerateProductionRequestsRequest",
    "description": "Request model for generating ProductionRequests with optional outfit generation via LLM.",
    "example": {
        "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

{
    "production_requests": [
        {
            "id": "c4cbdacf-2a82-4e55-b6b8-1f67c7004ee4",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "b6329068-32e7-43b5-a807-05fc3a314a87",
            "shooting_production_id": "bd0084b3-0681-41bb-9a8c-7d6752ee7ca3",
            "production_kind": "MAIN",
            "production_archived": true,
            "shooting_type_key": null,
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "product_wear_id": null,
            "product_wear": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "export_configuration_id": null,
            "readiness": "DRAFT",
            "shot_status": null,
            "lifecycle_stage": null,
            "download_status": "NOT_STARTED",
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "54c6dc7a-59f2-441b-b6e1-ef581e8a6c51",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "89da9105-acda-431a-9b93-ba82490c7f12",
                    "default_shot_type": null,
                    "owner_id": "a8688a83-e2e6-455a-88f9-179a79430301",
                    "organization_id": null,
                    "public": true,
                    "pose_image_url": null,
                    "pose_image_media": null,
                    "deleted_at": null
                }
            ],
            "generative_workflow_template_id": null,
            "use_subject_mannequin_double": null,
            "deleted_at": null,
            "shots": [
                {
                    "id": "9987bfc4-8f8b-4226-9fc9-698f5a0741fb",
                    "production_request_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "download_status": null,
                    "revisions": [
                        {
                            "id": "522cf81d-dbbb-4407-b663-9e487c2cad39",
                            "shot_id": "83c9d06c-50a6-4fb8-8a16-f7e4cb211bdd",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "automatic_quality_assessment_status": null,
                            "post_prod_source": null,
                            "post_prod_fallback_reason": 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": "4aa6c67d-16be-4517-9496-829e0b4b3cc4",
                                    "shot_revision_id": "241aa4c5-b11e-4f1c-9921-c16bd0a28415",
                                    "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": "37a9ac24-c8e7-4c95-a45d-218be868a52b",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "7d310243-a49d-4b25-8525-c9cf00d4bddf",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null,
                                    "failure_reason": null,
                                    "integration_name": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "content_defs": [
                        {
                            "id": "0de17e92-58ea-42b0-886a-a8feb62d9a24",
                            "label": null,
                            "description": "string",
                            "reference_media": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "26a4870e-df6d-48a3-8d01-7faaa24dc49e",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "production_request_id": "e4ce7754-c0aa-4004-b0b6-61fe47f41a78",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "d5f25ed4-4166-4401-b70c-13e6050c5191"
                    ],
                    "outfit_product_positions": {},
                    "outfit_products": [
                        {
                            "id": "aaf8dde6-9bb5-4dbd-b509-19b99a449910",
                            "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,
                            "barcode": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "product_wear": null,
                            "product_wear_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "styling_slot": "top",
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "color_name": null,
                            "color_code": null,
                            "style_group_id": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "ingest_job_id": 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,
                            "color_swatch_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "incomplete": true,
                            "deleted_at": null,
                            "owner_id": "e91fe8f6-720b-46bf-a079-3fc9da4cd499",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_production_request_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,
            "subject_ids": [
                "8ed1ff64-2dd9-4c84-b8ca-f623efd067ce"
            ],
            "product_ids": [
                "10b5a394-dea3-452a-afcb-378662d6b419"
            ],
            "products": null,
            "content_defs": null,
            "reference_media": [
                {
                    "id": "f40cf868-6ab1-4b4b-9729-93ac1e23ec3f",
                    "resource_type": "IMAGE",
                    "url": "string",
                    "content_hash": "string",
                    "extension": "string",
                    "file_size": 0,
                    "width": null,
                    "height": null,
                    "dominant_color": null,
                    "protected": true,
                    "alt_text": null,
                    "caption": null,
                    "color_profile": null,
                    "duration": null,
                    "aspect_ratio": null,
                    "orientation": null,
                    "created_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "reference_imgs_urls": [
                "string"
            ],
            "title": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "59f44c3f-d862-4ed0-8c36-58e94cca0a56"
            ],
            "outfit_product_positions": {}
        }
    ],
    "generation_results": [
        {
            "shot_id": "470ab7eb-3314-4621-a00b-863c7fb967eb",
            "production_request_id": "f822a31f-6e40-43e2-9f49-5a07b2347a45",
            "generation_id": "e1c19b07-3e87-461d-8476-b801d42a2102"
        }
    ],
    "total_generations_created": 0,
    "requested_product_count": 0,
    "created_count": 0,
    "skipped_existing_count": 0,
    "skipped_no_compatible_subject_count": 0,
    "gender_blocked_pair_count": 0,
    "age_blocked_pair_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": {
        "production_requests": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestPublic"
            },
            "type": "array",
            "title": "Production Requests"
        },
        "generation_results": {
            "items": {
                "$ref": "#/components/schemas/GenerationCreationResult"
            },
            "type": "array",
            "title": "Generation Results"
        },
        "total_generations_created": {
            "type": "integer",
            "title": "Total Generations Created",
            "default": 0
        },
        "requested_product_count": {
            "type": "integer",
            "title": "Requested Product Count",
            "description": "Products the request asked the service to consider (one production request is created per product at most). Equal to the number of requested/resolved unique product ids.",
            "default": 0
        },
        "created_count": {
            "type": "integer",
            "title": "Created Count",
            "description": "Production requests actually inserted on this call. Always equal to ``len(production_requests)`` and at most ``requested_product_count``.",
            "default": 0
        },
        "skipped_existing_count": {
            "type": "integer",
            "title": "Skipped Existing Count",
            "description": "Products dropped because a live (non-soft-deleted) ProductionRequest for the same product — regardless of subject — already exists in the target production. Non-zero only when the request set ``skip_existing=True``.",
            "default": 0
        },
        "skipped_no_compatible_subject_count": {
            "type": "integer",
            "title": "Skipped No Compatible Subject Count",
            "description": "Products dropped because no requested subject passed the gender/age compatibility gate for them. Partial success stays a 200. When nothing at all can be created, the default path (``skip_existing=False``) returns a typed 422 instead, while an idempotent ``skip_existing=True`` call returns an empty 200.",
            "default": 0
        },
        "gender_blocked_pair_count": {
            "type": "integer",
            "title": "Gender Blocked Pair Count",
            "description": "Diagnostic: ``(product, subject)`` pairs across the full compatibility matrix blocked by the gender filter (e.g. a MALE product with a FEMALE subject, or a UNISEX product whose ``unisex_gender_preference`` excluded the subject). Does not sum with the product counters.",
            "default": 0
        },
        "age_blocked_pair_count": {
            "type": "integer",
            "title": "Age Blocked Pair Count",
            "description": "Diagnostic: ``(product, subject)`` pairs across the full compatibility matrix blocked by the age filter (e.g. an ADULT product with a child-age subject). A product with no ``age_class`` is unclassified and never contributes here. Does not sum with the product counters.",
            "default": 0
        }
    },
    "type": "object",
    "required": [
        "production_requests"
    ],
    "title": "GenerateProductionRequestsResponse",
    "description": "Response when creating production requests with optional generation.\n\nThe trailing ``*_count`` fields surface the outcome breakdown so\ncallers (notably the FE additive-expansion flow) can drive banner /\ntoast copy off authoritative server-side numbers instead of brittle\narithmetic on cached PR lists. All default to ``0``; the invariant\n``requested_product_count == created_count + skipped_existing_count +\nskipped_no_compatible_subject_count`` holds on every successful\nresponse. The two ``*_blocked_pair_count`` fields are diagnostics over\nthe full products × subjects compatibility matrix and do not sum with\nthe product counters."
}

{
    "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}/production-requests

Read Production Requests

Description

Get all production_requests for a shooting with optional filtering.

Filters: - production_id: Restrict results to a single ShootingProduction under this shooting (typical use: per-test kanban). 404 if the production doesn't belong to {shooting_id}. - shot_statuses: Filter by computed shot status (minimum status across all shots) - ShotStatus: PENDING, PROPOSAL, REJECTED, POST_PROD, POST_PROD_REJECTED, REVIEW, APPROVED - ProductionRequestReadiness: DRAFT, READY - Special: WITHOUT_STATUS (production_requests with no shots) - status_keys: Filter by ProductionRequestStatus key (validated against the shooting's type) - 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 - include_unassigned: When true, also include PRs without an assignee (kanban "unassigned" column). Combined with assignee_ids via OR. - created_from / created_to: Filter by ProductionRequest.created_at (date-range, inclusive both ends)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
assignee_ids query No Filter by assignee user IDs
created_from query No Filter PRs created on or after this date (UTC, inclusive).
created_to query No Filter PRs created on or before this date (UTC, inclusive).
include_unassigned query boolean False No Also include PRs with no assignee. OR'd with assignee_ids: pass both to get 'my work + the unassigned queue' in one call.
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
product_wear_id query No Filter by product wear ID
production_id query No Sub-scope PRs to a single ShootingProduction within this shooting. Must belong to the shooting; returns 404 otherwise. Soft-deleted / archived productions are permitted (history-view use case). AND-combined with all other filters.
shooting_id path string No
shot_statuses query No
skip query integer 0 No
status_keys query No Filter by ProductionRequestStatus key. Each key must belong to the shooting's ShootingType (validated against the M:N). Unknown keys produce 422.

Responses

{
    "data": [
        {
            "id": "d9233e76-c5c7-49d8-824f-148103c7c3ce",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "shooting_id": "dad70352-5a35-4e88-9a45-e20038bcf59d",
            "shooting_production_id": "2a871f9c-ebf9-427b-b31c-7791ad2407fd",
            "production_kind": "MAIN",
            "production_archived": true,
            "shooting_type_key": null,
            "subject_id": null,
            "subject_name": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "product_wear_id": null,
            "product_wear": null,
            "resolution_preset_id": null,
            "width": null,
            "height": null,
            "background_preset_id": null,
            "set_design_id": null,
            "set_design": null,
            "export_configuration_id": null,
            "readiness": "DRAFT",
            "shot_status": null,
            "lifecycle_stage": null,
            "download_status": "NOT_STARTED",
            "assignee_id": null,
            "assignee": null,
            "pose_presets": [
                {
                    "id": "438c1404-8294-4d57-bf19-708623aeb417",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "name": "string",
                    "prompt": null,
                    "shot_type_id": "4bca35fb-7fef-4806-9141-527470db9cd9",
                    "default_shot_type": null,
                    "owner_id": "09a7b319-193e-4f53-acad-769ab2e251d6",
                    "organization_id": null,
                    "public": true,
                    "pose_image_url": null,
                    "pose_image_media": null,
                    "deleted_at": null
                }
            ],
            "generative_workflow_template_id": null,
            "use_subject_mannequin_double": null,
            "deleted_at": null,
            "shots": [
                {
                    "id": "d27df553-c1b8-4aad-b4c9-9607000969d9",
                    "production_request_id": null,
                    "shot_type": null,
                    "pose_preset_id": null,
                    "rework_available": 0,
                    "rework_used": 0,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "download_status": null,
                    "revisions": [
                        {
                            "id": "35130a48-d08c-47eb-8d3a-d6183c8c0cc0",
                            "shot_id": "118a09d3-d85b-487d-a637-f68c1cdcb201",
                            "version": 0,
                            "notes": null,
                            "shot_status": null,
                            "shot_revision_status": null,
                            "automatic_quality_assessment_status": null,
                            "post_prod_source": null,
                            "post_prod_fallback_reason": 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": "3d8f0d39-ba1f-4d29-823a-b72a954ead67",
                                    "shot_revision_id": "877c38f5-1197-4399-a8f2-35fc96d320eb",
                                    "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": "a498ff6a-81c1-4057-99b7-648935a8c1d4",
                                    "created_at": "2022-04-13T15:42:05.901Z",
                                    "updated_at": "2022-04-13T15:42:05.901Z",
                                    "integration_id": "df1c14e6-cccf-4de7-8a5d-d115598186cc",
                                    "push_status": "PENDING",
                                    "pushed_at": null,
                                    "completed_at": null,
                                    "error_message": null,
                                    "failure_reason": null,
                                    "integration_name": null
                                }
                            ],
                            "push_status": null
                        }
                    ],
                    "content_defs": [
                        {
                            "id": "488db9e2-cf51-4fe0-bfe5-afbaf77c9832",
                            "label": null,
                            "description": "string",
                            "reference_media": null
                        }
                    ],
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "outfit_proposals": [
                {
                    "id": "be25e2cf-5138-4f17-9f4c-64cb6a7c0071",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "production_request_id": "12f99a05-77ad-435b-bb97-ef76df1924be",
                    "outfit_ref_imgs_urls": [
                        "string"
                    ],
                    "outfit_ref_images_media": null,
                    "outfit_instruction": null,
                    "outfit_product_ids": [
                        "b6930c34-e50f-4ec9-842a-df2e5523a233"
                    ],
                    "outfit_product_positions": {},
                    "outfit_products": [
                        {
                            "id": "133f2224-9eb3-4576-b2d9-3bc26d95f269",
                            "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,
                            "barcode": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "product_wear": null,
                            "product_wear_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "styling_slot": "top",
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "color_name": null,
                            "color_code": null,
                            "style_group_id": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "ingest_job_id": 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,
                            "color_swatch_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "incomplete": true,
                            "deleted_at": null,
                            "owner_id": "d2ce99fe-1491-48e6-b88b-f7c20bda84aa",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_production_request_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,
            "subject_ids": [
                "e721aa2f-ed86-4fa4-8aa8-e2ccbf1001fe"
            ],
            "product_ids": [
                "e60ed3d7-e6a4-4021-9109-72ef592c47f6"
            ],
            "products": null,
            "content_defs": null,
            "reference_media": [
                {
                    "id": "d369162e-6348-4889-b6f8-c59f6a245bb1",
                    "resource_type": "IMAGE",
                    "url": "string",
                    "content_hash": "string",
                    "extension": "string",
                    "file_size": 0,
                    "width": null,
                    "height": null,
                    "dominant_color": null,
                    "protected": true,
                    "alt_text": null,
                    "caption": null,
                    "color_profile": null,
                    "duration": null,
                    "aspect_ratio": null,
                    "orientation": null,
                    "created_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "reference_imgs_urls": [
                "string"
            ],
            "title": null,
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_instruction": null,
            "outfit_product_ids": [
                "81814a8e-ec06-4254-b848-3076a98e6dcd"
            ],
            "outfit_product_positions": {}
        }
    ],
    "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/ProductionRequestPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ProductionRequestsPublic",
    "description": "Response model for paginated list of ProductionRequests."
}

{
    "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}/production-requests/custom

Create Custom Production Request

Description

Create a single CUSTOM (non-e-commerce) production request.

Produces 1..N Shots (shot_type_id = NULL) with PR-level and optional per-shot content_def overrides (union semantics). Auto-generation and auto-post-prod are disabled on CUSTOM shootings. Polymorphic sibling of the e-commerce bulk-create endpoint — per-concrete write path.

Input parameters

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

Request body

{
    "id": null,
    "subject_ids": [
        "b130d394-f297-4e98-bb5a-46318e550434"
    ],
    "product_ids": [
        "425e3c10-11a9-4743-8cec-676c7294cf2c"
    ],
    "content_defs": [
        {
            "label": null,
            "description": "string",
            "reference_media": [
                {
                    "url": null,
                    "media_resource_id": null,
                    "width": null,
                    "height": null,
                    "duration": null,
                    "dominant_color": null,
                    "protected": true,
                    "alt_text": null,
                    "caption": null,
                    "color_profile": null
                }
            ]
        }
    ],
    "shots": [
        {
            "content_defs": null
        }
    ],
    "title": null,
    "readiness": "DRAFT",
    "assignee_id": null,
    "require_all_existing_draft": true
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Id"
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefCreate"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/CustomShotCreate"
            },
            "type": "array",
            "title": "Shots"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness",
            "default": "READY"
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        },
        "require_all_existing_draft": {
            "type": "boolean",
            "title": "Require All Existing Draft",
            "default": false
        }
    },
    "type": "object",
    "title": "CustomProductionRequestCreate",
    "description": "Create payload for a CUSTOM production request.\n\nProduces 1..N Shots: one default Shot when ``shots`` is omitted, or one\nShot per entry in ``shots`` otherwise (each ``shot_type_id = NULL``)."
}

Responses

{
    "id": "2dfae35d-def2-43d9-a2cb-6a7813f963d2",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "7d3c47bf-4ba5-4774-96f3-2ce5bf2c11f7",
    "shooting_production_id": "d3d1d8a2-5a37-48c2-8d0d-ea6f51db060b",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "a6cada8f-34c7-48cc-9037-176da7f22aa9",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "07f3a6ce-8fa9-4ccc-81ab-8229fd470708",
            "default_shot_type": null,
            "owner_id": "29899ebf-bf08-4a36-9aeb-4c798f69c03a",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "620e28ef-e9f7-4b8d-9a64-0df98e541362",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "e378bcd3-016b-4873-9930-5b6aba72a68a",
                    "shot_id": "420d453e-5e7c-4fcb-a469-c1c9335a19ab",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "d566158c-c5fc-4cc6-a83f-f485b68b8087",
                            "shot_revision_id": "e7816026-b67e-468d-bc1f-4d113372bd8f",
                            "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": "78ca9031-7bf5-4215-9422-a6c5ed0d7ff1",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "2b1b1ae0-a653-4bae-b037-dff154e6eae6",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "1748a76b-6795-40cf-8564-05d2c2136521",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "90c9b38b-bc00-4255-8876-8b3954d21d8b",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "4a2a3319-ffdb-449f-b0cd-f75deb0e512c",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "d8e7ced8-a628-4556-925f-b21626505f04"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "11c2499a-a1a0-4508-963e-d6fdaaa49c07",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "4e3e4791-f26b-4bfa-91d4-82135fa3921a",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "925b7629-57e8-4ea0-8a31-0f1981d3dbd7"
    ],
    "product_ids": [
        "3a3ba91e-a98f-4376-8c96-9e72282bf75a"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "a7f1a4f9-72f4-4f67-833b-343fe78f9268",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "1afed03d-f625-4815-b56d-3c1c745ce4c0"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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}/production-requests/{production_request_id}/custom

Update Custom Production Request

Description

Update a CUSTOM production request (wholesale-replace semantics).

shots and content_defs are replaced wholesale on update. Polymorphic sibling of the e-commerce PUT endpoint.

Input parameters

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

Request body

{
    "subject_ids": null,
    "product_ids": null,
    "content_defs": null,
    "shots": null,
    "title": null,
    "readiness": null,
    "assignee_id": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the request body
{
    "properties": {
        "subject_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Subject Ids"
        },
        "product_ids": {
            "anyOf": [
                {
                    "items": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Ids"
        },
        "content_defs": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/ContentDefCreate"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Content Defs"
        },
        "shots": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/CustomShotCreate"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shots"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 255
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "readiness": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestReadiness"
                },
                {
                    "type": "null"
                }
            ]
        },
        "assignee_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Assignee Id"
        }
    },
    "type": "object",
    "title": "CustomProductionRequestUpdate",
    "description": "Update payload for a CUSTOM production request. All fields optional.\n\n``shots`` is replaced wholesale on update (no diffing)."
}

Responses

{
    "id": "4bda0de5-de4b-475d-82c0-9addb4e508b9",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "c5b0f923-e687-4922-925d-e8f8c7a6e126",
    "shooting_production_id": "a2b8a72f-d9e8-44af-959c-13f8d954d711",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "c5b1678c-546c-4100-9c32-07f8e6829d6e",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "09555a3e-a610-480c-8768-c23023b959ea",
            "default_shot_type": null,
            "owner_id": "3c711ccd-ba02-4cb7-96c3-f95668a01f4e",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "e407b341-8c8e-4f15-b5ab-a89bc422d63b",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "1a7146a1-2aae-4873-ae74-45860c87b996",
                    "shot_id": "49fa12d0-eb84-41ef-b8de-563644f47577",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "93119e8b-c2f0-438f-9252-e3c53f4b1543",
                            "shot_revision_id": "c4d960d8-521a-462f-a0dd-00f80878a4be",
                            "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": "d7cce3f5-052b-45b8-b4ae-5a74f8ca3b24",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "9af721b2-4b96-492a-9f9a-44cc533e1483",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "ab90debf-a3e1-4311-a3e9-aadbbe59a1b6",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "30b7e323-3556-4376-82d8-83ba60f32af6",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "0b0b1dc9-88ce-45b7-8645-691d4f788c54",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "ea1cb40c-9e43-431d-a391-6449bee82c81"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "bdaf9729-c484-45e8-834b-7b403bc9d780",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "95137348-5b2e-4ff2-858b-bf5f3cd8a4fa",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "dc933f3d-cead-4f55-8015-f0b600548def"
    ],
    "product_ids": [
        "8cab5c84-e6ec-44bf-a426-11e0fa34a130"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "7ee853ab-9ed1-4c8b-ae3a-15f9abc2970e",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "e3974a01-82c8-42b5-ac18-d1c5d0f466df"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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}/production-requests-summary

Read Production Requests Summary

Description

Lightweight endpoint to get shooting production_requests 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 /production-requests endpoint, including production_id for per-production scoping (history/kanban view).

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
created_from query No Filter PRs created on or after this date (UTC, inclusive).
created_to query No Filter PRs created on or before this date (UTC, inclusive).
include_unassigned query boolean False No Also include PRs with no assignee. OR'd with assignee_ids: pass both to get 'my work + the unassigned queue' in one call.
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
product_wear_id query No Filter by product wear ID
production_id query No Sub-scope PRs to a single ShootingProduction within this shooting. Must belong to the shooting; returns 404 otherwise. Soft-deleted / archived productions are permitted (history-view use case). AND-combined with all other filters.
shooting_id path string No
shot_statuses query No
skip query integer 0 No

Responses

{
    "data": [
        {
            "id": "dd9cd9c9-e415-4d26-bd30-db695678d0d2",
            "shooting_id": "fc5d0097-68f8-4b59-a703-302741462a53",
            "shooting_production_id": "4329ecc9-658d-49de-aab4-a44743abbc23",
            "production_kind": "MAIN",
            "production_archived": true,
            "shooting_type_key": null,
            "title": null,
            "product_id": null,
            "product_name": null,
            "product_sku": null,
            "product_cover_image_url": null,
            "product_wear_id": null,
            "product_wear": null,
            "product_ids": [
                "d3b427ee-c6fa-4120-8d85-7d923fa3f11e"
            ],
            "products": [
                {
                    "id": "9bed15fe-e2aa-489f-a4f8-f8d05ae2febc",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "b8003e9b-0c3d-4dcc-82bc-18a371c0e66f",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_id": null,
                    "integration_name": null,
                    "exports_completed": null,
                    "exports_total": null,
                    "shots": [
                        null
                    ]
                }
            ],
            "reference_media": [
                {
                    "id": "50ae5bc1-6b07-4adb-86f3-a8097cdf1252",
                    "resource_type": "IMAGE",
                    "url": "string",
                    "content_hash": "string",
                    "extension": "string",
                    "file_size": 0,
                    "width": null,
                    "height": null,
                    "dominant_color": null,
                    "protected": true,
                    "alt_text": null,
                    "caption": null,
                    "color_profile": null,
                    "duration": null,
                    "aspect_ratio": null,
                    "orientation": null,
                    "created_at": "2022-04-13T15:42:05.901Z"
                }
            ],
            "reference_imgs_urls": [
                "string"
            ],
            "readiness": "DRAFT",
            "shot_status": null,
            "lifecycle_stage": null,
            "download_status": "NOT_STARTED",
            "assignee_id": null,
            "assignee": null,
            "outfit_products_count": 0,
            "outfit_generation_status": null,
            "shots": [
                {
                    "id": "3219105d-d879-4d28-88ac-d111d74a68d5",
                    "shot_type": null,
                    "status": "PENDING",
                    "current_revision_id": null,
                    "push_status": null,
                    "push_error_message": null,
                    "push_failure_reason": null,
                    "push_integration_name": null,
                    "download_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/ProductionRequestSummary"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ProductionRequestsSummaryPublic",
    "description": "Response model for paginated list of lightweight ProductionRequest 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}/production-requests-board

Read Production Requests Board

Description

Fetch every kanban column in one request (SAR-1752).

Each column equals one production-requests-summary call with shot_statuses=[key], but the whole board is served in a single request so the per-request fixed cost (auth, export-coverage scan, rollup setup, shot / shot-type loads) is paid once instead of once per column.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
assignee_ids query No
columns query No One kanban column per status filter; each column returns its top `limit` PRs + total count. Defaults to all status filters. Replaces issuing one summary call per column.
created_from query No
created_to query No
include_unassigned query boolean False No
limit query integer 10 No
organization_id query No
product_ids query No
product_name query No
product_sku query No
product_type query No
product_wear_id query No
production_id query No
shooting_id path string No

Responses

{
    "columns": [
        {
            "key": "string",
            "data": [
                {
                    "id": "8d1eb74d-1b28-485c-b830-1c5c5805ecfb",
                    "shooting_id": "1dbd44a2-90b8-4d09-bbe1-8d48569316db",
                    "shooting_production_id": "9308e846-5f97-472f-bffa-d550942ec0db",
                    "production_kind": "MAIN",
                    "production_archived": true,
                    "shooting_type_key": null,
                    "title": null,
                    "product_id": null,
                    "product_name": null,
                    "product_sku": null,
                    "product_cover_image_url": null,
                    "product_wear_id": null,
                    "product_wear": null,
                    "product_ids": [
                        "f61244d3-fc60-451e-a4fe-0db71ab6874c"
                    ],
                    "products": [
                        {
                            "id": "d1cd9b3b-1d0b-45dd-9e11-8721cfb22a36",
                            "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,
                            "barcode": null,
                            "product_family": null,
                            "product_type": null,
                            "product_type_id": null,
                            "product_wear": null,
                            "product_wear_id": null,
                            "gender": "MALE",
                            "age_class": null,
                            "placement": null,
                            "zone": null,
                            "styling_slot": "top",
                            "type": null,
                            "category": null,
                            "sleeve_type": null,
                            "neckline": null,
                            "closure_type": null,
                            "fit_type": null,
                            "length_type": null,
                            "pattern": null,
                            "materials": null,
                            "colour": null,
                            "color_name": null,
                            "color_code": null,
                            "style_group_id": null,
                            "season": null,
                            "year": null,
                            "style_code": null,
                            "in_store_date": null,
                            "theme": null,
                            "brand_collection": null,
                            "ingest_job_id": 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,
                            "color_swatch_media": null,
                            "data_image_urls": [
                                "string"
                            ],
                            "public": true,
                            "enabled": true,
                            "archived": true,
                            "demo": true,
                            "is_filler": true,
                            "incomplete": true,
                            "deleted_at": null,
                            "owner_id": "c1c4bb70-1384-430d-b55f-66b9785494c8",
                            "organization_id": null,
                            "shot_status": null,
                            "shot_status_production_request_id": null,
                            "integration_name": null,
                            "exports_completed": null,
                            "exports_total": null,
                            "shots": [
                                null
                            ]
                        }
                    ],
                    "reference_media": [
                        {
                            "id": "dab26292-3189-475d-9c1a-a82b2b375f2e",
                            "resource_type": "IMAGE",
                            "url": "string",
                            "content_hash": "string",
                            "extension": "string",
                            "file_size": 0,
                            "width": null,
                            "height": null,
                            "dominant_color": null,
                            "protected": true,
                            "alt_text": null,
                            "caption": null,
                            "color_profile": null,
                            "duration": null,
                            "aspect_ratio": null,
                            "orientation": null,
                            "created_at": "2022-04-13T15:42:05.901Z"
                        }
                    ],
                    "reference_imgs_urls": [
                        "string"
                    ],
                    "readiness": "DRAFT",
                    "shot_status": null,
                    "lifecycle_stage": null,
                    "download_status": "NOT_STARTED",
                    "assignee_id": null,
                    "assignee": null,
                    "outfit_products_count": 0,
                    "outfit_generation_status": null,
                    "shots": [
                        {
                            "id": "c0955483-e616-4512-96ad-cd6b202e4873",
                            "shot_type": null,
                            "status": "PENDING",
                            "current_revision_id": null,
                            "push_status": null,
                            "push_error_message": null,
                            "push_failure_reason": null,
                            "push_integration_name": null,
                            "download_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": {
        "columns": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestsBoardColumn"
            },
            "type": "array",
            "title": "Columns"
        }
    },
    "type": "object",
    "required": [
        "columns"
    ],
    "title": "ProductionRequestsBoardPublic",
    "description": "All kanban columns in one response, replacing N per-column summary calls.\n\nEach board render previously issued one summary request per column; this\ncollapses them so the per-request fixed cost (auth, the export-coverage scan,\nrollup setup, shot/shot-type loads over the union) is paid once instead of N\ntimes."
}

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

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

PATCH /api/v1/shootings/{shooting_id}/column-owners

Set Shooting Column Owner

Description

Set (or clear) the responsible party for one ownable kanban column.

Display-only metadata for the productions board. Any user who can view the shooting may set it (no is_superuser / role gate); the service enforces the standard org-scoped read access. owner=null clears the column.

Input parameters

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

Request body

{
    "column_key": "string",
    "owner": 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": {
        "column_key": {
            "type": "string",
            "title": "Column Key"
        },
        "owner": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/OwnerParty"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "column_key"
    ],
    "title": "ColumnOwnerUpdate",
    "description": "Request body for PATCH /shootings/{id}/column-owners.\n\nSets (or clears, when ``owner`` is None) the responsible party for one\nownable kanban column on the shooting."
}

Responses

{
    "id": "b4f931ae-0cbb-4d0f-a23c-8306a66264e1",
    "organization_id": null,
    "public": true,
    "name": "string",
    "description": null,
    "brand": null,
    "season": null,
    "collection": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "due_date": null,
    "owner_id": "ce7e5935-d56b-4731-97cf-9c2f2383bf08",
    "shooting_type_id": null,
    "shooting_type_key": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "public": {
            "type": "boolean",
            "title": "Public",
            "default": false
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingHeaderGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "id",
        "name",
        "created_at",
        "updated_at",
        "owner_id"
    ],
    "title": "ShootingHeaderPublic",
    "description": "Lightweight Shooting response for the kanban header / SSR guard.\n\nExcludes shots, production_requests, predictions, outfits, products,\nassignees, and full preset objects. The endpoint that returns this\nschema must not scale with shot count."
}

{
    "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}/production-requests/bulk-unassign

Bulk Unassign Production Requests

Description

Clear the assignee from every production request in scope (SAR-1950).

Sartiq-team only (MANAGER, OPERATOR, or admin). REVIEWER and AGENT get 403 even with org-scoped write access — the role gate is layered on top of the standard resource-write check (mirrors the single-item update's check).

Scope resolution: * Always scoped to shooting_id (via its ShootingProductions). * production_id query param further restricts to one production run. * all_in_scope=false + production_request_ids clears only those IDs; all_in_scope=true clears the full scope except those IDs.

Only currently-assigned, non-soft-deleted requests are touched. Returns the number of requests whose assignee was cleared.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
production_id query No Sub-scope the bulk clear to a single ShootingProduction within this shooting. Must belong to the shooting; returns 404 otherwise.
shooting_id path string No

Request body

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

Responses

{
    "updated_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": {
        "updated_count": {
            "type": "integer",
            "title": "Updated Count"
        }
    },
    "type": "object",
    "required": [
        "updated_count"
    ],
    "title": "BulkUnassignProductionRequestsResult",
    "description": "Response for the bulk-unassign action: how many assignees were cleared."
}

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

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

PATCH /api/v1/shootings/{shooting_id}/billing

Update Shooting Billing

Description

Set the per-shooting billing config: metering rule, funding, cash-cycle state, PO tag, and the included-round allowances.

Superuser-only write (mirrors the wallet write boundary); billing-role (MANAGER / REVIEWER) users see the fields via the shooting header + list. Only fields present on the request are applied; pass explicit null to clear one. Returns the lightweight header carrying the updated billing config.

Input parameters

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

Request body

{
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": null,
    "included_postprod_rounds": null,
    "billing_note": 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": {
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 128
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "anyOf": [
                {
                    "type": "integer",
                    "minimum": 0.0
                },
                {
                    "type": "null"
                }
            ],
            "title": "Included Proposal Rounds"
        },
        "included_postprod_rounds": {
            "anyOf": [
                {
                    "type": "integer",
                    "minimum": 0.0
                },
                {
                    "type": "null"
                }
            ],
            "title": "Included Postprod Rounds"
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string",
                    "maxLength": 1000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        }
    },
    "type": "object",
    "title": "ShootingBillingUpdate",
    "description": "Billing-config patch for a shooting (superuser / billing-role only).\n\nOnly provided fields are applied (service uses ``exclude_unset``); pass an\nexplicit ``null`` to clear one. Mode = metering rule × funding (orthogonal);\n``billing_state`` is the cash-cycle stage (human-set, store-derived default)."
}

Responses

{
    "id": "d6d2c7d3-6d5a-4c49-814b-0b3a91423275",
    "organization_id": null,
    "public": true,
    "name": "string",
    "description": null,
    "brand": null,
    "season": null,
    "collection": null,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "due_date": null,
    "owner_id": "2b3cfaf4-d229-4e83-a00f-bc24ef3ed9d4",
    "shooting_type_id": null,
    "shooting_type_key": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "board_pdf": null,
    "cover_image": null
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "organization_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Organization Id"
        },
        "public": {
            "type": "boolean",
            "title": "Public",
            "default": false
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "description": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Description"
        },
        "brand": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Brand"
        },
        "season": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Season"
        },
        "collection": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Collection"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "due_date": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Due Date"
        },
        "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id"
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingHeaderGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        }
    },
    "type": "object",
    "required": [
        "id",
        "name",
        "created_at",
        "updated_at",
        "owner_id"
    ],
    "title": "ShootingHeaderPublic",
    "description": "Lightweight Shooting response for the kanban header / SSR guard.\n\nExcludes shots, production_requests, predictions, outfits, products,\nassignees, and full preset objects. The endpoint that returns this\nschema must not scale with shot count."
}

{
    "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 Production Requests Summary

Description

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

Returns: - total_draft_production_requests: Total number of production_requests in DRAFT status - generating_count: Number of draft production_requests 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_production_requests": 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_production_requests": {
            "type": "integer",
            "title": "Total Draft Production Requests"
        },
        "generating_count": {
            "type": "integer",
            "title": "Generating Count"
        }
    },
    "type": "object",
    "required": [
        "total_draft_production_requests",
        "generating_count"
    ],
    "title": "DraftProductionRequestsSummary",
    "description": "Response model for draft production requests 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}/production-requests/{production_request_id}

Read Production Request

Description

Get a specific look for a shooting.

Input parameters

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

Responses

{
    "id": "44166635-d3c5-456e-956e-740e1344ffa0",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "00ce1aef-8257-4e35-b2ea-79e55047f7a5",
    "shooting_production_id": "765eac40-baab-4a79-b52b-48085d5783d4",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "b988fddd-f371-4e0a-af12-43f1224da7ea",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "2e11fe78-b30a-4531-80fb-4761cf873e5a",
            "default_shot_type": null,
            "owner_id": "8a82da9c-10b2-4b3c-baab-5aeda8b85b27",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "9e898093-5455-40e4-82bd-0bf383a15288",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "c4c5b18c-1011-4836-9e88-463216945330",
                    "shot_id": "93667708-b4e1-4e1d-afe6-2541980f1545",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "777f386b-5c57-47c9-b3db-9b14d4be9e61",
                            "shot_revision_id": "d5f5a9bb-7fb4-450a-9092-e184ac06085e",
                            "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": "0b969bf7-d39f-4e8d-8f33-4b40ca7c4fc5",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "7ea98880-e82f-48a9-9af8-291c00aecbfc",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "6c096304-19e3-46af-9a06-c18e2d1955a6",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "11c3e1ce-6187-4604-9b65-15f402e700a7",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "1cca630f-b140-4ed6-860f-9c8703161eb2",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "f8fc4418-88db-4ad8-a0cd-9dbeceff2e4e"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "b5724411-0d98-4f03-b151-aa7dcc50922c",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "ec71d185-c98a-45da-8107-f9967c546736",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "57ac65e4-8251-4b15-9a31-255273e8600f"
    ],
    "product_ids": [
        "39d70e52-6fbf-40b5-b80d-6493bf00438e"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "db2a8aa1-a136-491d-9c9f-468b3eec522a",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "1000134e-27f3-4dc2-9269-c3b756610911"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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}/production-requests/{production_request_id}

Update Production Request

Description

Update a specific look for a shooting.

Input parameters

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

Request body

{
    "subject_id": null,
    "product_id": null,
    "outfit_id": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "export_configuration_id": null,
    "readiness": null,
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "assignee_id": null,
    "shot_type_ids": null,
    "outfit_proposals": null,
    "outfit": null,
    "outfit_authoring": null,
    "auto_generate": true
}
⚠️ 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"
        },
        "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"
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestReadiness"
                },
                {
                    "type": "null"
                }
            ]
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id",
            "description": "Per-PR override for the workflow template. Cross-org templates are rejected (422). Mutually exclusive with ``use_subject_mannequin_double=True``."
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double",
            "description": "Tri-state mannequin-pipeline mode. PATCH-set ``null`` to switch the PR back to AUTO (resolved at dispatch from product_type), ``true`` to force mannequin (ON), ``false`` to force regular (OFF). Omit the key to leave the current value unchanged."
        },
        "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"
        },
        "outfit_proposals": {
            "anyOf": [
                {
                    "items": {
                        "$ref": "#/components/schemas/ProductionRequestOutfitUpsert"
                    },
                    "type": "array"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Proposals",
            "description": "Replace outfit proposal set on the production request. Only allowed while ``readiness=DRAFT``. Items with ``id`` update an existing proposal in place; items without ``id`` create a new proposal; existing proposals not present in the payload are deleted. Pass ``None`` (omit the field) to leave proposals untouched."
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitUpdate"
                },
                {
                    "type": "null"
                }
            ],
            "description": "In-place patch of the production request's currently selected outfit (the row referenced by ``outfit_id``). Only allowed while ``readiness=READY``. Mutually exclusive with ``outfit_proposals`` (which is DRAFT-only). Each supplied subfield is applied; absent ones stay untouched."
        },
        "outfit_authoring": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/OutfitAuthoringEnvelope"
                },
                {
                    "type": "null"
                }
            ],
            "description": "Optional provenance for actions represented by this canvas snapshot. The snapshot remains authoritative; the server validates every action."
        },
        "auto_generate": {
            "type": "boolean",
            "title": "Auto Generate",
            "default": true
        }
    },
    "type": "object",
    "title": "ProductionRequestUpdate",
    "description": "Request model for updating a ProductionRequest.\n\nNote: resolution_preset_id and custom width/height are mutually exclusive.\nSetting one will automatically clear the other during update."
}

Responses

{
    "id": "1461ed92-39de-4712-bdd1-7f359f65ce76",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "a0c89aa8-a2d8-4735-a699-87e23e5918d7",
    "shooting_production_id": "60a7db32-b575-4f18-8ec5-4237d7b6f16d",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "7cc61af0-8bbf-48c4-8b88-ec37225f0de4",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "c5e96b5d-d3d3-4c25-8009-e3dd08409665",
            "default_shot_type": null,
            "owner_id": "a3d836aa-0012-4bda-b340-3d8f7212b9fd",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "b17cd86b-71e3-4c2a-a914-50b9be46cd99",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "b4272d12-68e7-470e-9a42-bedc610db8b7",
                    "shot_id": "55c7c99f-dbec-4211-b447-9592dfc69690",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "c1e8ddfc-f765-4b55-a045-6f2512d39366",
                            "shot_revision_id": "7c0700dd-4855-4c77-85d6-600f82d79d83",
                            "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": "e788a16d-8727-49c9-bcb4-6413aeba8dfa",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "c6e8fabd-63fd-4be7-a824-bd71b5b0fe34",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "5f1aaed5-deda-48f1-99d3-9253af4a0001",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "dc409de1-0ac9-4ddb-96b1-1b26b2c5a19d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "963647b1-05ee-4c80-87da-04d0c12b3838",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "56726e7a-f9f2-439c-b6d7-baa2c87caa2e"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "8f1c0723-2b5a-4c6f-8462-fb5e7454b518",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "610b7c4b-6e3c-468d-b6cb-623ba6803318",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "57b9b530-2cab-4baf-b499-a70b5e915377"
    ],
    "product_ids": [
        "d47ba0e4-bf8e-4ea6-9a33-1c23bf44fc81"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "0b750455-a6c1-4aec-be4d-0649f862eef0",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "00a6f1d9-341c-48e0-812a-a354beffdd7b"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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}/production-requests/{production_request_id}

Delete Production Request

Description

Delete a specific look for a shooting.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
production_request_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/{shooting_id}/production-requests/{production_request_id}/reusable-outfits

Get Reusable Outfits For Production Request

Description

Find all finalized outfits in sibling production_requests that contain this look's core product.

Returns matches sorted by the most advanced shot status in each source look (descending), so the furthest-along look appears first.

Input parameters

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

Responses

[
    {
        "source_production_request_id": "98fc43dc-63fa-46d0-b5f7-ec9c0c67d170",
        "source_product": {
            "id": "63ab16e1-f249-4df5-b385-3346a33b7d91",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "18fb01d7-42ab-43c6-8a9e-44fefbf30c70",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                null
            ]
        },
        "outfit": {
            "id": "6b3561d8-8bea-46cd-81a3-09de76cc4809",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "9d95b5fd-ee31-4a6d-9734-68361537d3a9",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "185095fa-e54c-45a3-b844-2ff40c89e2d7"
            ],
            "outfit_product_positions": {},
            "outfit_products": null,
            "generation_status": null,
            "generation_error": null,
            "retry_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
{
    "type": "array",
    "items": {
        "$ref": "#/components/schemas/ReusableOutfitMatch"
    },
    "title": "Response Get Reusable Outfits For Production Request"
}

{
    "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}/production-requests/{production_request_id}/restore

Restore Production Request

Description

Restore a soft-deleted shooting look (admin only).

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
production_request_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/production-requests/{production_request_id}

Get Production Request

Description

Get a ProductionRequest 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
organization_id query No
production_request_id path string No

Responses

{
    "id": "d5301076-d167-4f76-b13a-9efe0442202e",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "4dc7abca-92c2-4e7c-99a1-f8a9dc85603f",
    "shooting_production_id": "94673442-6f24-49d9-a465-7be73046d4ac",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "fb6ef080-e51b-4413-8853-1cc4b3738066",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "26543c61-eeb5-4263-849d-8a344cdb8c57",
            "default_shot_type": null,
            "owner_id": "a98dc6c6-00a9-4ecc-b66f-b79dcd79e4ae",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "2bc078be-7a58-4079-9f20-8facd389fec1",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "762cba8d-f5bd-4924-b3a4-a2667c876cac",
                    "shot_id": "c813a5af-703b-440b-ba42-fc7adb2d0e0e",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "a07f4432-7a9f-416d-8e11-857953b96f2f",
                            "shot_revision_id": "17d7e3fc-6948-4a96-a759-480a5f1a8768",
                            "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": "ab7c70e5-4ab2-447e-8e16-b7edc1bdeb1c",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "4ec6d8bd-cce2-4ea4-b0a0-ccb82a4e71a7",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "5ea7adf7-e8e3-4741-8fc8-f7e2038cd0fe",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "0ce5801a-2112-46dd-9622-3c5a37ce7c7d",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "9afec413-ba1b-420d-bd00-003bdf6c0828",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "b35b4f08-9d3b-491d-ad2e-b6989bfe6cd5"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "b4c3ca91-444f-415c-9dbe-3faabe6452c2",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "6f34014b-76ac-4485-88ac-ee2692e54146",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "634f727c-213b-477e-a6f8-08c56bbfc5a1"
    ],
    "product_ids": [
        "188c0e27-3a9a-4b7b-9cfc-827ae395690f"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "cab75b8c-052b-4821-b1ee-f14dc658d1f9",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "8d53cb80-0e54-43ba-97d9-1f46ea47dc1f"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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/production-requests/{production_request_id}/agentic-generation-status

Read Production Request Agentic Generation Status

Description

Return the latest autonomous generation state for an accessible production request.

Input parameters

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

Responses

Schema of the response body
{
    "anyOf": [
        {
            "$ref": "#/components/schemas/ProductionRequestAgenticGenerationStatus"
        },
        {
            "type": "null"
        }
    ],
    "title": "Response Read Production Request Agentic 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"
}

POST /api/v1/shootings/production-requests/{production_request_id}/outfit

Create Manual Outfit For Production Request

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
production_request_id path string No

Request body

{
    "outfit_ref_imgs_urls": null,
    "outfit_instruction": null,
    "outfit_product_ids": [
        "91c9d298-8c26-4cc8-a6b3-8877e62b255a"
    ],
    "outfit_product_positions": 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_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": 10000
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Instruction"
        },
        "outfit_product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Outfit Product Ids"
        },
        "outfit_product_positions": {
            "anyOf": [
                {
                    "additionalProperties": {
                        "$ref": "#/components/schemas/OutfitPosition"
                    },
                    "propertyNames": {
                        "format": "uuid"
                    },
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Product Positions"
        }
    },
    "type": "object",
    "title": "ManualOutfitCreate",
    "description": "Request model for manually creating an outfit for a look (production_request_id from path)."
}

Responses

{
    "id": "58ba8589-066f-4a32-8d79-8c1132615017",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "26599702-47e8-402f-8492-6ec738686a96",
    "shooting_production_id": "d9eb6a0b-995d-4514-8ec8-3e4e793bb308",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "6e8d6859-2fa8-4452-a63c-88046f3a5b71",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "a9a6caf5-e255-4d3a-9a19-9e67bae545d8",
            "default_shot_type": null,
            "owner_id": "145d7ace-42bb-4f5f-9964-31437fdc90f2",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "5a946f36-0dfd-473a-9ba6-9c3aa51b8a65",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "c60e8895-0a3d-4fa2-b4b8-4c7e338b17cb",
                    "shot_id": "297b4c8d-ccff-4e95-b288-2a72b191de53",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "7d6a6c3e-e87a-483c-a3fd-c8f9745774cd",
                            "shot_revision_id": "f755826c-b5fc-4be7-a8bf-bff7b0443319",
                            "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": "5c4d7ade-2152-4025-bca7-25b0b64c54a6",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "6b33796f-4ce3-4862-b92d-feab4a1651a5",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "9cf94c0c-b845-4833-9354-d5373e5968f0",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "01636cfe-fa03-4fdd-be84-6cc18d19fabb",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "04b12627-738a-4f79-a27d-a3bd7e88ff78",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "bd6e8f3d-0ac5-4546-97f8-5df75b57c9e9"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "698def38-0e7d-4f2c-9df0-bc3f2ea39f71",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "af041b5d-1f33-4ca6-aa4c-bdbabe93d84a",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "b9279920-8032-44a0-ae99-0c8578d9b1e2"
    ],
    "product_ids": [
        "8761c60e-7f43-4e73-858f-89fdc4e6a88d"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "162a77d2-0768-429b-bbc3-e4b743e48320",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "7b4cefa0-ad34-40a6-9ecb-bb4d82afc2f9"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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/production-requests/{production_request_id}/finalize-outfit

Finalize Production Request 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 production_request_id: UUID of the shooting look to finalize outfit for outfit_in: Request containing either outfit_id or outfit creation fields

Returns: Updated ProductionRequest 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
production_request_id path string No

Request body

{
    "outfit_id": null,
    "outfit_ref_imgs_urls": null,
    "outfit_instruction": null,
    "outfit_product_ids": null,
    "confirmed_look_preview_id": null,
    "outfit_product_positions": 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": 10000
                },
                {
                    "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"
        },
        "confirmed_look_preview_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Confirmed Look Preview Id",
            "description": "Preview to keep when finalizing; all other previews of this look are deleted. Omit to delete every preview."
        },
        "outfit_product_positions": {
            "anyOf": [
                {
                    "additionalProperties": {
                        "$ref": "#/components/schemas/OutfitPosition"
                    },
                    "propertyNames": {
                        "format": "uuid"
                    },
                    "type": "object"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Product Positions",
            "description": "Normalized 0..1 canvas coords per product UUID for new outfit. Partial maps allowed."
        }
    },
    "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": "edbeda9a-9234-46ee-908e-5b3c9b6eef1b",
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "shooting_id": "1648e76e-755d-4173-9240-0ba3f60b7b6d",
    "shooting_production_id": "01f3bc2b-48ef-4214-a8ea-7527cc77c56b",
    "production_kind": "MAIN",
    "production_archived": true,
    "shooting_type_key": null,
    "subject_id": null,
    "subject_name": null,
    "product_id": null,
    "product_name": null,
    "product_sku": null,
    "product_cover_image_url": null,
    "product_wear_id": null,
    "product_wear": null,
    "resolution_preset_id": null,
    "width": null,
    "height": null,
    "background_preset_id": null,
    "set_design_id": null,
    "set_design": null,
    "export_configuration_id": null,
    "readiness": "DRAFT",
    "shot_status": null,
    "lifecycle_stage": null,
    "download_status": "NOT_STARTED",
    "assignee_id": null,
    "assignee": null,
    "pose_presets": [
        {
            "id": "ef0424ca-7716-49e8-9cf0-c276feed2127",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "name": "string",
            "prompt": null,
            "shot_type_id": "77d3c66b-5229-4148-9c12-d330c2566a65",
            "default_shot_type": null,
            "owner_id": "b235e61b-7dbc-411a-8888-29014d43996a",
            "organization_id": null,
            "public": true,
            "pose_image_url": null,
            "pose_image_media": null,
            "deleted_at": null
        }
    ],
    "generative_workflow_template_id": null,
    "use_subject_mannequin_double": null,
    "deleted_at": null,
    "shots": [
        {
            "id": "c21d186c-c473-4e57-b9b0-28b6637f0374",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": null,
            "revisions": [
                {
                    "id": "3f8176bc-7e8f-49bf-9617-a4fed1c541fb",
                    "shot_id": "0993be88-4adf-4d82-bde5-1d7639721432",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "74231296-a06d-4f6f-8e68-be5ea6bb7b48",
                            "shot_revision_id": "a3af4d18-289b-4a99-b20c-3c6d5b6e95f6",
                            "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": "c14fb429-6556-4bd2-bc65-4aa1f8d9240c",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "21896824-24d4-4c95-a46b-a2f912c6bb96",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "b3e8d2d7-35ee-41cd-a134-fcce48ad6271",
                    "label": null,
                    "description": "string",
                    "reference_media": null
                }
            ],
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "outfit_proposals": [
        {
            "id": "028bca1b-1a15-482c-bf53-f36407db29c5",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "production_request_id": "8ec72419-65ef-4ebb-9864-b7c75bae3fbc",
            "outfit_ref_imgs_urls": [
                "string"
            ],
            "outfit_ref_images_media": null,
            "outfit_instruction": null,
            "outfit_product_ids": [
                "b1361710-ff54-41c2-9601-e9933b66b28d"
            ],
            "outfit_product_positions": {},
            "outfit_products": [
                {
                    "id": "e5cd39c7-bd14-4fc7-9ece-244ce631a88e",
                    "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,
                    "barcode": null,
                    "product_family": null,
                    "product_type": null,
                    "product_type_id": null,
                    "product_wear": null,
                    "product_wear_id": null,
                    "gender": "MALE",
                    "age_class": null,
                    "placement": null,
                    "zone": null,
                    "styling_slot": "top",
                    "type": null,
                    "category": null,
                    "sleeve_type": null,
                    "neckline": null,
                    "closure_type": null,
                    "fit_type": null,
                    "length_type": null,
                    "pattern": null,
                    "materials": null,
                    "colour": null,
                    "color_name": null,
                    "color_code": null,
                    "style_group_id": null,
                    "season": null,
                    "year": null,
                    "style_code": null,
                    "in_store_date": null,
                    "theme": null,
                    "brand_collection": null,
                    "ingest_job_id": 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,
                    "color_swatch_media": null,
                    "data_image_urls": [
                        "string"
                    ],
                    "public": true,
                    "enabled": true,
                    "archived": true,
                    "demo": true,
                    "is_filler": true,
                    "incomplete": true,
                    "deleted_at": null,
                    "owner_id": "4d6d8680-c8b5-4731-b709-131ea90cc253",
                    "organization_id": null,
                    "shot_status": null,
                    "shot_status_production_request_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,
    "subject_ids": [
        "b0974f39-eace-4a02-854a-b33cfdbb3a9c"
    ],
    "product_ids": [
        "a5be5809-5698-41ca-8557-ce5134103b3c"
    ],
    "products": null,
    "content_defs": null,
    "reference_media": [
        {
            "id": "01cc8565-ed8b-4ede-b7d8-ca1ab1e9190c",
            "resource_type": "IMAGE",
            "url": "string",
            "content_hash": "string",
            "extension": "string",
            "file_size": 0,
            "width": null,
            "height": null,
            "dominant_color": null,
            "protected": true,
            "alt_text": null,
            "caption": null,
            "color_profile": null,
            "duration": null,
            "aspect_ratio": null,
            "orientation": null,
            "created_at": "2022-04-13T15:42:05.901Z"
        }
    ],
    "reference_imgs_urls": [
        "string"
    ],
    "title": null,
    "outfit_ref_imgs_urls": [
        "string"
    ],
    "outfit_instruction": null,
    "outfit_product_ids": [
        "fbc1ec4f-9097-492b-9f91-73fed7566348"
    ],
    "outfit_product_positions": {}
}
⚠️ 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"
        },
        "shooting_production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Production Id"
        },
        "production_kind": {
            "$ref": "#/components/schemas/ProductionKind"
        },
        "production_archived": {
            "type": "boolean",
            "title": "Production Archived"
        },
        "shooting_type_key": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Key"
        },
        "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"
        },
        "product_wear_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear Id"
        },
        "product_wear": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Product Wear"
        },
        "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"
                }
            ]
        },
        "export_configuration_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Export Configuration Id"
        },
        "readiness": {
            "$ref": "#/components/schemas/ProductionRequestReadiness"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "lifecycle_stage": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Lifecycle Stage"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "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": []
        },
        "generative_workflow_template_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Generative Workflow Template Id"
        },
        "use_subject_mannequin_double": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Use Subject Mannequin Double"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shots": {
            "items": {
                "$ref": "#/components/schemas/ShotPublic"
            },
            "type": "array",
            "title": "Shots",
            "default": []
        },
        "outfit_proposals": {
            "items": {
                "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
            },
            "type": "array",
            "title": "Outfit Proposals",
            "default": []
        },
        "outfit_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Outfit Id"
        },
        "outfit": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestOutfitPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "subject_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Subject Ids"
        },
        "product_ids": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids"
        },
        "products": {
            "items": {
                "$ref": "#/components/schemas/ProductPublic"
            },
            "type": "array",
            "title": "Products"
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs"
        },
        "reference_media": {
            "items": {
                "$ref": "#/components/schemas/MediaResourcePublic"
            },
            "type": "array",
            "title": "Reference Media"
        },
        "reference_imgs_urls": {
            "items": {
                "type": "string"
            },
            "type": "array",
            "title": "Reference Imgs Urls"
        },
        "title": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Title"
        },
        "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
        },
        "outfit_product_positions": {
            "additionalProperties": {
                "additionalProperties": {
                    "type": "number"
                },
                "type": "object"
            },
            "type": "object",
            "title": "Outfit Product Positions",
            "description": "Get per-product canvas positions from the selected outfit.",
            "readOnly": true
        }
    },
    "type": "object",
    "required": [
        "id",
        "created_at",
        "updated_at",
        "shooting_id",
        "shooting_production_id",
        "production_kind",
        "production_archived",
        "readiness",
        "outfit_ref_imgs_urls",
        "outfit_instruction",
        "outfit_product_ids",
        "outfit_product_positions"
    ],
    "title": "ProductionRequestPublic",
    "description": "Response model for ProductionRequest."
}

{
    "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/production-requests/{production_request_id}/outfit-proposals/{proposal_id}

Delete Production Request Outfit Proposal

Description

Delete one outfit proposal card from a DRAFT production request.

Removes the proposal row together with its reference images and any look previews bound to it. Sibling proposals (and their previews) are untouched, and deleting the last remaining card is allowed — an empty canvas is a valid pre-generation state. If the proposal was the active outfit, the selection is cleared.

Raises: HTTPException 404: production request not found, or the proposal does not belong to it HTTPException 403: caller cannot write the shooting HTTPException 409: request is not DRAFT, or the proposal's generation is still in flight (wait for it to complete or fail)

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
production_request_id path string No
proposal_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/shootings/production-requests/{production_request_id}/start-generations

Start Production Request 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 production_request_id: UUID of the shooting look to generate for request_in: Optional request body with generation parameters

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
production_request_id path string No

Request body

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

Responses

{
    "message": "string",
    "production_request_id": "f3f10354-f038-4078-b15a-9a241a53df76",
    "generation_ids": [
        "965fc1ff-54cc-4bcc-8936-76672c9c7228"
    ],
    "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"
        },
        "production_request_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Request 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",
        "production_request_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/production-requests/{production_request_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 - Product-only shot types use the still-life workflow - Subject-based shot types use the subject base image and outfit references - 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 production_request_id: UUID of the shooting look to generate for request_in: Request body with shot_type_id and generations_count

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
production_request_id path string No

Request body

{
    "shot_type_id": "e101f00c-cffa-4311-8dba-c35c71f5f56b",
    "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 production request."
}

Responses

{
    "message": "string",
    "production_request_id": "c07c4406-ef8e-4922-9d99-bb449601219f",
    "shot_type_id": "974338bb-ec60-4c4d-a27c-2f3a84a5dccb",
    "generation_ids": [
        "d9630ec1-2605-4464-97ee-6b2d4638dca7"
    ],
    "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"
        },
        "production_request_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Request 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",
        "production_request_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"
}

POST /api/v1/shootings/{shooting_id}/productions

Create Shooting Production

Description

Create a MAIN or TEST production under a shooting.

Without payload.run this is a bare shell create with the same side effects as before: snapshots the default guidelines, and for kind=MAIN enforces require_test_shooting + MAIN uniqueness and auto-transitions phase to PRODUCTION. (The response uses the run-aware envelope, so the bare path carries the seven run fields as null.)

With payload.run it is an atomic start: the production is created-or-resolved AND seeded with its initial looks — one per requested product, subject selected balanced-randomly from the compatible pool — in one transaction (ProductionRunService). A run that leaves the production with zero live looks rolls everything back and returns a typed incompatible_pairing 422 — no orphan shell.

Input parameters

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

Request body

{
    "kind": "string",
    "run": 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": {
        "kind": {
            "type": "string",
            "title": "Kind",
            "description": "MAIN or TEST."
        },
        "run": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/GenerateProductionRequestsRequest"
                },
                {
                    "type": "null"
                }
            ],
            "description": "Optional run spec. When present, the production is created/resolved and seeded atomically with one production-request per requested product, each paired with a balanced-randomly selected compatible subject; a run that leaves the production with zero live looks rolls everything back (422)."
        }
    },
    "type": "object",
    "required": [
        "kind"
    ],
    "title": "ShootingProductionCreate",
    "description": "Body for ``POST /shootings/{id}/productions``.\n\nThe ``kind`` discriminator picks MAIN vs TEST.  All other\nproduction state (snapshot, archived flag, deleted_at) is owned\nserver-side.\n\nOptional ``run`` turns this into an *atomic start*: the production is\ncreated-or-resolved AND seeded with its initial looks in one transaction.\nIf zero looks survive the gender+age gate, nothing persists and the caller\ngets a typed ``incompatible_pairing`` 422. Omit ``run`` for a bare shell."
}

Responses

{
    "id": "9a412569-e8f9-43f6-89b3-9de099911417",
    "shooting_id": "c9f2b4a5-6c7c-49a5-8d65-8fa213f04b16",
    "kind": "string",
    "archived": true,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "deleted_at": null,
    "guidelines_id": null,
    "status_breakdown": [
        {
            "status": "DRAFT",
            "count": 0
        }
    ],
    "production_created": null,
    "requested_product_count": null,
    "created_count": null,
    "skipped_existing_count": null,
    "skipped_no_compatible_subject_count": null,
    "gender_blocked_pair_count": null,
    "age_blocked_pair_count": 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"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "kind": {
            "type": "string",
            "title": "Kind"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Guidelines Id"
        },
        "status_breakdown": {
            "items": {
                "$ref": "#/components/schemas/ShootingStatusCount"
            },
            "type": "array",
            "title": "Status Breakdown",
            "default": []
        },
        "production_created": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Created"
        },
        "requested_product_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Requested Product Count"
        },
        "created_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Created Count"
        },
        "skipped_existing_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Skipped Existing Count"
        },
        "skipped_no_compatible_subject_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Skipped No Compatible Subject Count"
        },
        "gender_blocked_pair_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Gender Blocked Pair Count"
        },
        "age_blocked_pair_count": {
            "anyOf": [
                {
                    "type": "integer"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Age Blocked Pair Count"
        }
    },
    "type": "object",
    "required": [
        "id",
        "shooting_id",
        "kind",
        "archived",
        "created_at",
        "updated_at"
    ],
    "title": "ShootingProductionRunPublic",
    "description": "Response for the atomic-start ``POST /productions {run}`` path only.\n\nExtends the production view with the run outcome so the FE can surface\n\"started with N looks, M skipped\" in one hop. Kept off the base model so\nGET/LIST/PATCH responses don't carry these permanently-null fields."
}

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

List Shooting Productions

Description

List productions for a shooting (optionally filtered by kind).

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
include_deleted query boolean False No
kind query No Filter by MAIN or TEST.
shooting_id path string No

Responses

{
    "data": [
        {
            "id": "52cede0f-c69a-4246-a24f-906b406ede65",
            "shooting_id": "e68e652d-9e46-41da-be90-1f7cca03ab11",
            "kind": "string",
            "archived": true,
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "deleted_at": null,
            "guidelines_id": null,
            "status_breakdown": [
                {
                    "status": "DRAFT",
                    "count": 0
                }
            ]
        }
    ],
    "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/ShootingProductionPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductionsList",
    "description": "Paginated list of productions for a 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/{shooting_id}/productions/{production_id}

Read Shooting Production

Description

Read a single production by id.

Input parameters

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

Responses

{
    "id": "86a22174-a2ed-4ad2-9db9-e78ce350e487",
    "shooting_id": "b2538cc5-b3d6-4a79-a328-2f81bf2666db",
    "kind": "string",
    "archived": true,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "deleted_at": null,
    "guidelines_id": null,
    "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": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "kind": {
            "type": "string",
            "title": "Kind"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Guidelines Id"
        },
        "status_breakdown": {
            "items": {
                "$ref": "#/components/schemas/ShootingStatusCount"
            },
            "type": "array",
            "title": "Status Breakdown",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "shooting_id",
        "kind",
        "archived",
        "created_at",
        "updated_at"
    ],
    "title": "ShootingProductionPublic",
    "description": "Response model for ShootingProduction.\n\nIncludes the snapshot id (if present) for clients that want to\nwalk to the production-baked guidelines.  The full snapshot body\nis reachable via the standard guidelines endpoints."
}

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

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

PATCH /api/v1/shootings/{shooting_id}/productions/{production_id}

Update Shooting Production

Description

Patch a production. Only archived is mutable per Q5.

Input parameters

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

Request body

{
    "archived": 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": {
        "archived": {
            "anyOf": [
                {
                    "type": "boolean"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Archived"
        }
    },
    "type": "object",
    "title": "ShootingProductionUpdate",
    "description": "Body for ``PATCH /shootings/{id}/productions/{prod_id}``.\n\nOnly ``archived`` is mutable per Q5 — guidelines edits go\nthrough the shooting-level update flow + automatic re-bake."
}

Responses

{
    "id": "78dfbcad-d752-4b71-8b09-4fd94da22a8f",
    "shooting_id": "2cebdad0-f798-4174-abd8-4557e8e537f2",
    "kind": "string",
    "archived": true,
    "created_at": "2022-04-13T15:42:05.901Z",
    "updated_at": "2022-04-13T15:42:05.901Z",
    "deleted_at": null,
    "guidelines_id": null,
    "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": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "kind": {
            "type": "string",
            "title": "Kind"
        },
        "archived": {
            "type": "boolean",
            "title": "Archived"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Guidelines Id"
        },
        "status_breakdown": {
            "items": {
                "$ref": "#/components/schemas/ShootingStatusCount"
            },
            "type": "array",
            "title": "Status Breakdown",
            "default": []
        }
    },
    "type": "object",
    "required": [
        "id",
        "shooting_id",
        "kind",
        "archived",
        "created_at",
        "updated_at"
    ],
    "title": "ShootingProductionPublic",
    "description": "Response model for ShootingProduction.\n\nIncludes the snapshot id (if present) for clients that want to\nwalk to the production-baked guidelines.  The full snapshot body\nis reachable via the standard guidelines endpoints."
}

{
    "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}/productions/{production_id}

Delete Shooting Production

Description

Soft-delete a production. Always allowed per Q6 — MAIN and TEST are deletable in any phase. Cascades through the existing ShootingProductionService.delete soft-delete chain.

Input parameters

Parameter In Type Default Nullable Description
OAuth2PasswordBearer header string N/A No
production_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/{shooting_id}/productions/{production_id}/shot-rules/preview

Preview Shooting Production Shot Rules

Input parameters

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

Responses

{
    "shooting_id": "281e38d4-8b5e-4e70-b19c-05dba719f9d9",
    "production_id": "e5713361-d9dd-4fce-a593-dacd129b380a",
    "guidelines_snapshot_id": "5aed850a-02b5-4053-996c-7abaee2d0253",
    "production_request_count": 0,
    "affected_production_request_count": 0,
    "shots_to_add_count": 0,
    "has_changes": true
}
⚠️ 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": {
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Id"
        },
        "guidelines_snapshot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Guidelines Snapshot Id"
        },
        "production_request_count": {
            "type": "integer",
            "title": "Production Request Count"
        },
        "affected_production_request_count": {
            "type": "integer",
            "title": "Affected Production Request Count"
        },
        "shots_to_add_count": {
            "type": "integer",
            "title": "Shots To Add Count"
        },
        "has_changes": {
            "type": "boolean",
            "title": "Has Changes"
        }
    },
    "type": "object",
    "required": [
        "shooting_id",
        "production_id",
        "guidelines_snapshot_id",
        "production_request_count",
        "affected_production_request_count",
        "shots_to_add_count",
        "has_changes"
    ],
    "title": "ShootingProductionShotRulesPreview"
}

{
    "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}/productions/{production_id}/shot-rules/apply

Apply Shooting Production Shot Rules

Input parameters

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

Request body

{
    "expected_guidelines_snapshot_id": "8b3b9d55-792e-44e0-a2eb-447eaebb69c4"
}
⚠️ 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": {
        "expected_guidelines_snapshot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Expected Guidelines Snapshot Id"
        }
    },
    "type": "object",
    "required": [
        "expected_guidelines_snapshot_id"
    ],
    "title": "ShootingProductionShotRulesApplyRequest"
}

Responses

{
    "shooting_id": "f86a3350-8931-4c03-8e9d-e3607f375560",
    "production_id": "fe3beeef-40a3-4482-b6b5-03cacc588fe1",
    "guidelines_snapshot_id": "d139b19c-30ce-45f1-8335-fefa37231d56",
    "affected_production_request_count": 0,
    "shots_added_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": {
        "shooting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shooting Id"
        },
        "production_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Id"
        },
        "guidelines_snapshot_id": {
            "type": "string",
            "format": "uuid",
            "title": "Guidelines Snapshot Id"
        },
        "affected_production_request_count": {
            "type": "integer",
            "title": "Affected Production Request Count"
        },
        "shots_added_count": {
            "type": "integer",
            "title": "Shots Added Count"
        }
    },
    "type": "object",
    "required": [
        "shooting_id",
        "production_id",
        "guidelines_snapshot_id",
        "affected_production_request_count",
        "shots_added_count"
    ],
    "title": "ShootingProductionShotRulesApplyResult"
}

{
    "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}/main-products

List Shooting Main Products

Input parameters

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

Responses

{
    "data": [
        {
            "id": "e25dad39-7df2-432d-8d1d-f45c464c3dce",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "33eab39b-4eef-4f2b-b72e-11204ebf87da",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/main-products

Add Shooting Main Products

Input parameters

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

Request body

{
    "product_ids": [
        "b2d28f3b-d26d-4da4-9c3d-b1adad57ac1b"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "45f304d9-8a9d-4d16-8481-4d968e25f018",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "4c999a99-76a5-4f24-af0a-83589c9a6def",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/main-products

Remove Shooting Main Products

Input parameters

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

Request body

{
    "product_ids": [
        "c5f80e47-4ea2-4c1a-a00e-c3ca33750b93"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "8c9a10db-55fb-44ed-ae72-a13208e4a36c",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "e6760afa-926a-4651-ad14-b05350a7dccc",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/main-products

Replace Shooting Main Products

Input parameters

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

Request body

{
    "product_ids": [
        "25bf2c41-0bc6-4358-817e-5b893fc5b9c6"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "76baeff4-1661-4d2e-aa0e-cbd74f372001",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "d59021ff-4bc1-4dfa-afe2-0dc5c2007198",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/sample-products

List Shooting Sample Products

Input parameters

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

Responses

{
    "data": [
        {
            "id": "7127f53a-130a-4382-8065-a2f57a55fad9",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "3ee442b8-1b0f-4565-8fb9-e1ee71ac2be9",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/sample-products

Add Shooting Sample Products

Input parameters

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

Request body

{
    "product_ids": [
        "f046250e-fd57-4ae5-b494-c399ff7f2374"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "79a7b8a1-367a-4057-8544-b77b1876824d",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "7fee5fed-168c-494e-bae5-9a492882b285",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/sample-products

Remove Shooting Sample Products

Input parameters

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

Request body

{
    "product_ids": [
        "a6f10b41-e348-4421-af55-5456128e8cdd"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "39f7859a-f129-440a-a604-c63f4c904960",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "2b6fd36f-4584-49c9-a2be-bb76a262ef7a",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

{
    "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}/sample-products

Replace Shooting Sample Products

Input parameters

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

Request body

{
    "product_ids": [
        "ddc21d0b-ed56-4c70-89a0-ffb27a8434bb"
    ]
}
⚠️ 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": {
            "items": {
                "type": "string",
                "format": "uuid"
            },
            "type": "array",
            "title": "Product Ids",
            "description": "Product IDs to add, remove, or replace the set with."
        }
    },
    "type": "object",
    "title": "ShootingProductIdsRequest",
    "description": "Body shape for bulk add/remove/replace of products on a shooting."
}

Responses

{
    "data": [
        {
            "id": "afabf62a-0fb9-4b84-aac0-2fa7d9c28fb9",
            "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,
            "barcode": null,
            "product_family": null,
            "product_type": null,
            "product_type_id": null,
            "product_wear": null,
            "product_wear_id": null,
            "gender": "MALE",
            "age_class": null,
            "placement": null,
            "zone": null,
            "styling_slot": "top",
            "type": null,
            "category": null,
            "sleeve_type": null,
            "neckline": null,
            "closure_type": null,
            "fit_type": null,
            "length_type": null,
            "pattern": null,
            "materials": null,
            "colour": null,
            "color_name": null,
            "color_code": null,
            "style_group_id": null,
            "season": null,
            "year": null,
            "style_code": null,
            "in_store_date": null,
            "theme": null,
            "brand_collection": null,
            "ingest_job_id": 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,
            "color_swatch_media": null,
            "data_image_urls": [
                "string"
            ],
            "public": true,
            "enabled": true,
            "archived": true,
            "demo": true,
            "is_filler": true,
            "incomplete": true,
            "deleted_at": null,
            "owner_id": "bafa09bb-36d2-4f00-b4ca-cc2117ead9e9",
            "organization_id": null,
            "shot_status": null,
            "shot_status_production_request_id": null,
            "integration_name": null,
            "exports_completed": null,
            "exports_total": null,
            "shots": [
                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/ProductPublic"
            },
            "type": "array",
            "title": "Data"
        },
        "count": {
            "type": "integer",
            "title": "Count"
        }
    },
    "type": "object",
    "required": [
        "data",
        "count"
    ],
    "title": "ShootingProductsList",
    "description": "Paginated list of products linked to a shooting via either the\nmain set (``shooting_product``) or the sample set\n(``shooting_sample_product``)."
}

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

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

PATCH /api/v1/shootings/{shooting_id}/phase

Update Shooting Phase

Description

Append a new phase change row. Idempotent — no-op when the new phase equals the current. No transition-matrix validation per Q3.

Input parameters

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

Request body

{
    "phase": "BRIEF"
}
⚠️ 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": {
        "phase": {
            "$ref": "#/components/schemas/ShootingPhase",
            "description": "The new phase to transition to."
        }
    },
    "type": "object",
    "required": [
        "phase"
    ],
    "title": "ShootingPhaseUpdateRequest",
    "description": "Body for ``PATCH /shootings/{id}/phase``.\n\nThe transition matrix is intentionally permissive (no per-edge\nvalidation per Q3); the only rejection happens when the move\nwould violate the require_test_shooting guard at MAIN creation\ntime (handled deeper in the service)."
}

Responses

{
    "id": "3265de39-900a-4beb-90e7-217b107a7c86",
    "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": "bfb68dcd-1122-4f82-b129-191f94c3f538",
    "organization_id": null,
    "archived": true,
    "season": null,
    "collection": null,
    "brand": null,
    "billing_metering_rule": null,
    "billing_funding": null,
    "billing_state": null,
    "po_tag": null,
    "included_proposal_rounds": 0,
    "included_postprod_rounds": 0,
    "billing_note": null,
    "default_guidelines_id": null,
    "default_guidelines": null,
    "column_owners": {},
    "phase": null,
    "latest_test_production_id": null,
    "require_test_shooting": true,
    "shooting_type_id": null,
    "shooting_type": null,
    "deleted_at": null,
    "shot_status": null,
    "status": null,
    "board_pdf": null,
    "cover_image": null,
    "background_images": [
        null
    ]
}
⚠️ This example has been generated automatically from the schema and it is not accurate. Refer to the schema for more information.

Schema of the response body
{
    "properties": {
        "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
        },
        "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
        },
        "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
        },
        "name": {
            "type": "string",
            "title": "Name"
        },
        "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"
        },
        "billing_metering_rule": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingMeteringRule"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_funding": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingFunding"
                },
                {
                    "type": "null"
                }
            ]
        },
        "billing_state": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/BillingState"
                },
                {
                    "type": "null"
                }
            ]
        },
        "po_tag": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Po Tag"
        },
        "included_proposal_rounds": {
            "type": "integer",
            "title": "Included Proposal Rounds",
            "default": 1
        },
        "included_postprod_rounds": {
            "type": "integer",
            "title": "Included Postprod Rounds",
            "default": 1
        },
        "billing_note": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Billing Note"
        },
        "default_guidelines_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Default Guidelines Id"
        },
        "default_guidelines": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingGuidelinesPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "column_owners": {
            "additionalProperties": {
                "$ref": "#/components/schemas/OwnerParty"
            },
            "type": "object",
            "title": "Column Owners",
            "default": {}
        },
        "phase": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingPhase"
                },
                {
                    "type": "null"
                }
            ]
        },
        "latest_test_production_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Latest Test Production Id"
        },
        "require_test_shooting": {
            "type": "boolean",
            "title": "Require Test Shooting",
            "default": false
        },
        "shooting_type_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Shooting Type Id"
        },
        "shooting_type": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingTypePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "deleted_at": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "date-time"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Deleted At"
        },
        "shot_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShootingStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "board_pdf": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourceMetadataPublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "cover_image": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/MediaResourcePublic"
                },
                {
                    "type": "null"
                }
            ]
        },
        "background_images": {
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/components/schemas/MediaResourcePublic"
                    },
                    {
                        "type": "string"
                    }
                ]
            },
            "type": "array",
            "title": "Background Images"
        }
    },
    "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/{shooting_id}/production-request-statuses

List Shooting Production Request Statuses

Description

Return the lifecycle statuses valid for this shooting's type.

The list is read from the M:N shootingtype_productionrequeststatus junction, ordered by ProductionRequestStatus.sorting (worst → best, matching the rollup convention). Org-aware read access required.

Input parameters

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

Responses

[
    {
        "id": "f6c8e96f-e211-4173-ae75-d1875306cb54",
        "key": "string",
        "label": "string",
        "sorting": 0,
        "lifecycle_stage": "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
{
    "type": "array",
    "items": {
        "$ref": "#/components/schemas/ProductionRequestStatusPublic"
    },
    "title": "Response List Shooting Production Request Statuses"
}

{
    "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,
    "production_request_id": "7c0e0fbb-cdde-44c1-a638-a023adf45ce1"
}
⚠️ 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"
        },
        "production_request_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Request Id"
        }
    },
    "type": "object",
    "required": [
        "production_request_id"
    ],
    "title": "ShotCreate",
    "description": "Schema for creating a Shot"
}

Responses

{
    "id": "02411f59-3404-4e69-a7e3-41373be1d4ec",
    "production_request_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "download_status": "NOT_STARTED",
    "revisions": [
        {
            "id": "69e1c067-ec19-4e9c-abf6-445a296b1872",
            "shot_id": "4ac7d684-cf0d-4af5-b3a8-637b7f6069ed",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "automatic_quality_assessment_status": null,
            "post_prod_source": null,
            "post_prod_fallback_reason": 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": "5f8e06b3-25d8-4dfd-b21f-fac608388600",
                    "shot_revision_id": "7e6db482-557f-4c71-b968-3eedaedfa95a",
                    "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": "68c9f0d6-a6d3-4619-a635-4f92280470a2",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "754c80e5-6f94-4746-a5f1-5c1eeb866f6f",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null,
                    "failure_reason": null,
                    "integration_name": null
                }
            ],
            "push_status": null
        }
    ],
    "content_defs": [
        {
            "id": "1970c1eb-2d3f-4a41-a6d1-2328e481f5f6",
            "label": null,
            "description": "string",
            "reference_media": 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"
        },
        "production_request_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Request 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/ProductionRequestStatusKey"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs",
            "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.

product_id matches only the scalar Product on ECOMMERCE Production Requests. Direct CUSTOM Product links do not make a Shot a Product Shot.

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
production_request_id query No
shooting_id query No
shot_type query No
skip query integer 0 No
status query No

Responses

{
    "data": [
        {
            "id": "078569eb-90a1-4cf8-b50c-c09673eaf8ef",
            "production_request_id": null,
            "shot_type": null,
            "pose_preset_id": null,
            "rework_available": 0,
            "rework_used": 0,
            "status": "PENDING",
            "current_revision_id": null,
            "download_status": "NOT_STARTED",
            "revisions": [
                {
                    "id": "2fc0b1eb-40f1-475b-9463-3b1b79a65d99",
                    "shot_id": "08eb6d72-46d1-47e3-93f3-717b6e8a8bd5",
                    "version": 0,
                    "notes": null,
                    "shot_status": null,
                    "shot_revision_status": null,
                    "automatic_quality_assessment_status": null,
                    "post_prod_source": null,
                    "post_prod_fallback_reason": 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": "eb75dbec-89c2-4203-bd56-ecf57af3ff08",
                            "shot_revision_id": "4062ae6d-8e62-4481-928b-ba69b8366bfc",
                            "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": "dabfed8f-940e-4fb0-9249-b5f181b94055",
                            "created_at": "2022-04-13T15:42:05.901Z",
                            "updated_at": "2022-04-13T15:42:05.901Z",
                            "integration_id": "504e5fc8-145f-46ea-9eb7-232a5c72f040",
                            "push_status": "PENDING",
                            "pushed_at": null,
                            "completed_at": null,
                            "error_message": null,
                            "failure_reason": null,
                            "integration_name": null
                        }
                    ],
                    "push_status": null
                }
            ],
            "content_defs": [
                {
                    "id": "c5f6dc9a-a57f-41c7-baaf-094593401591",
                    "label": null,
                    "description": "string",
                    "reference_media": 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": "6c2f00cd-0207-484d-b9d0-91efbf563991",
    "production_request_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "download_status": "NOT_STARTED",
    "revisions": [
        {
            "id": "e6572e65-13b5-491c-bcf1-6e397e2c5e60",
            "shot_id": "65194a50-5448-40ca-adee-116470ab0c83",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "automatic_quality_assessment_status": null,
            "post_prod_source": null,
            "post_prod_fallback_reason": 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": "4ab8c436-c1c8-4ff2-9a86-b8781147c352",
                    "shot_revision_id": "817fe744-12d3-431c-aa29-b07305440ec3",
                    "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": "aff773db-24ee-4ccf-aa82-9bcc7d92c58f",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "37fec2bc-8d2c-4ab6-88ad-0737c7f0aa7f",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null,
                    "failure_reason": null,
                    "integration_name": null
                }
            ],
            "push_status": null
        }
    ],
    "content_defs": [
        {
            "id": "0dfc258b-9c3a-4c9a-9d3d-d85942c3c031",
            "label": null,
            "description": "string",
            "reference_media": 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"
        },
        "production_request_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Request 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/ProductionRequestStatusKey"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs",
            "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": "c994caa8-1cbc-400f-bdee-2dbfa68dddb6",
    "production_request_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "download_status": "NOT_STARTED",
    "revisions": [
        {
            "id": "343d73f1-2ae6-44ad-98f4-28ff1ce188c4",
            "shot_id": "482cbc79-5a68-418e-a95d-1e1de9d10271",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "automatic_quality_assessment_status": null,
            "post_prod_source": null,
            "post_prod_fallback_reason": 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": "3d873b9a-4071-4618-8552-10243a9fbaee",
                    "shot_revision_id": "ef7f8233-8c5c-4de6-a5db-ddd7cf555bae",
                    "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": "f681f50b-2923-4c34-8ff2-50cbb0637d8f",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "6ca5f9c6-1464-4b24-adf2-f381d0894b1d",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null,
                    "failure_reason": null,
                    "integration_name": null
                }
            ],
            "push_status": null
        }
    ],
    "content_defs": [
        {
            "id": "4e9e3474-e0e4-475c-9376-c32cb778f34d",
            "label": null,
            "description": "string",
            "reference_media": 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"
        },
        "production_request_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Request 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/ProductionRequestStatusKey"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs",
            "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": "a48528ab-604c-490e-899f-88fa9fd08b7f",
    "production_request_id": null,
    "shot_type": null,
    "pose_preset_id": null,
    "rework_available": 0,
    "rework_used": 0,
    "status": "PENDING",
    "current_revision_id": null,
    "download_status": "NOT_STARTED",
    "revisions": [
        {
            "id": "dcf682b8-809b-46de-a41f-0f909d158d9d",
            "shot_id": "25b5bf42-11d1-429d-87cf-5c01ad54ef7e",
            "version": 0,
            "notes": null,
            "shot_status": null,
            "shot_revision_status": null,
            "automatic_quality_assessment_status": null,
            "post_prod_source": null,
            "post_prod_fallback_reason": 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": "9f8a30c1-32d1-4af8-9df6-38edb6ae070e",
                    "shot_revision_id": "97035241-1150-4688-9ed2-d4048201860d",
                    "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": "73e78388-b082-47ee-8711-4e7e703dbe8d",
                    "created_at": "2022-04-13T15:42:05.901Z",
                    "updated_at": "2022-04-13T15:42:05.901Z",
                    "integration_id": "be506d0a-9eb6-44fd-8c0f-0efb2c4f8ad3",
                    "push_status": "PENDING",
                    "pushed_at": null,
                    "completed_at": null,
                    "error_message": null,
                    "failure_reason": null,
                    "integration_name": null
                }
            ],
            "push_status": null
        }
    ],
    "content_defs": [
        {
            "id": "8a3f72c7-8d1e-4410-88fb-9b9a503ca11e",
            "label": null,
            "description": "string",
            "reference_media": 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"
        },
        "production_request_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Production Request 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/ProductionRequestStatusKey"
        },
        "current_revision_id": {
            "anyOf": [
                {
                    "type": "string",
                    "format": "uuid"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Current Revision Id"
        },
        "download_status": {
            "$ref": "#/components/schemas/DownloadStatus",
            "default": "NOT_STARTED"
        },
        "revisions": {
            "items": {
                "$ref": "#/components/schemas/ShotRevisionPublic"
            },
            "type": "array",
            "title": "Revisions",
            "default": []
        },
        "content_defs": {
            "items": {
                "$ref": "#/components/schemas/ContentDefPublic"
            },
            "type": "array",
            "title": "Content Defs",
            "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)

When the resolved export configuration enables it, a visible "AI Generated" disclosure badge (EU AI Act Art. 50(4)) is composited onto the returned image.

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": null,
    "action": null,
    "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": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ProductionRequestStatusKey"
                },
                {
                    "type": "null"
                }
            ]
        },
        "action": {
            "anyOf": [
                {
                    "type": "string",
                    "enum": [
                        "approve",
                        "rework",
                        "reject"
                    ]
                },
                {
                    "type": "null"
                }
            ],
            "title": "Action"
        },
        "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": [
        "images"
    ],
    "title": "CreateShotRevisionRequest",
    "description": "Schema for creating a shot revision via the new unified endpoint.\nSupports multiple images with flexible input formats.\n\n``action`` (optional, preferred) lets the frontend request a workflow\naction (approve / rework / reject) instead of naming a raw ``shot_status``\nkey. The backend resolves the correct target status for the shooting's\nShootingType. ``shot_status`` remains for backward compat — ``action``\ntakes precedence when both are set."
}

Responses

{
    "id": "12ad9092-e82e-4831-ad20-e13fe4cbf19d",
    "shot_id": "db095dab-ac7e-4bd2-b0af-c1bfbcd65b79",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "automatic_quality_assessment_status": null,
    "post_prod_source": null,
    "post_prod_fallback_reason": 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": "60d80bde-fec1-4f3f-99df-5c1625c7eb58",
            "shot_revision_id": "d8585d29-e8a5-40cf-ba5a-869cdbc534f1",
            "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": "2fc76ebe-3b6f-4054-beae-119cacb699e3",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "62533463-fc53-4430-bcb9-ea9cb1e529fd",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null,
            "failure_reason": null,
            "integration_name": 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/ProductionRequestStatusKey"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "automatic_quality_assessment_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/QualityAssessmentStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "post_prod_source": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Source"
        },
        "post_prod_fallback_reason": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Fallback Reason"
        },
        "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/{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": "5ba722fd-976d-4ffc-9d30-6d09093a1785",
    "shot_id": "2607cae7-43f1-439f-acf9-eb3b6fa998fb",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "automatic_quality_assessment_status": null,
    "post_prod_source": null,
    "post_prod_fallback_reason": 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": "e3290a31-9f9e-440f-a44c-41d4aa736fad",
            "shot_revision_id": "a2e5a3f9-ff3f-4402-abd0-d4c6bb7ee780",
            "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": "8afc73e6-f929-47d8-b017-81e004e44eb8",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "c50a0b12-5ed5-4110-8498-98b3a65c8d93",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null,
            "failure_reason": null,
            "integration_name": 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/ProductionRequestStatusKey"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "automatic_quality_assessment_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/QualityAssessmentStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "post_prod_source": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Source"
        },
        "post_prod_fallback_reason": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Fallback Reason"
        },
        "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": "75484249-cec3-47a6-b5f5-818499ce398b",
    "shot_id": "2bdc6ec6-7016-418e-be03-db060ebecdf3",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "automatic_quality_assessment_status": null,
    "post_prod_source": null,
    "post_prod_fallback_reason": 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": "998b59cb-9c6d-4d29-be0a-000be0f8a761",
            "shot_revision_id": "1f3df5b5-d717-4845-ba05-37b04a647fb5",
            "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": "f54ee98b-da77-4d0b-b1f2-72524898c346",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "baaeb4ed-53f4-48a4-8ba7-23e59db6be55",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null,
            "failure_reason": null,
            "integration_name": 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/ProductionRequestStatusKey"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "automatic_quality_assessment_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/QualityAssessmentStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "post_prod_source": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Source"
        },
        "post_prod_fallback_reason": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Fallback Reason"
        },
        "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": "d374e4b0-5f7b-45af-b081-1674732c4a39",
    "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/production-requests/{production_request_id}/export

Export Production Request

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
production_request_id path string No

Responses

{
    "production_request_id": "2232fc5d-bf7a-429f-8c91-9ad778ece61f",
    "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": {
        "production_request_id": {
            "type": "string",
            "format": "uuid",
            "title": "Production Request 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": [
        "production_request_id",
        "revisions_processed",
        "revisions_skipped",
        "exports_created",
        "exports_skipped",
        "message"
    ],
    "title": "ExportProductionRequestResponse",
    "description": "Response for export production request 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": "fb42aa5a-88d6-4e8e-9fe2-b168299b9303",
    "shot_id": "03c92029-8a36-4839-abfc-42219757dd7c",
    "version": 0,
    "notes": null,
    "shot_status": "PENDING",
    "shot_revision_status": null,
    "automatic_quality_assessment_status": null,
    "post_prod_source": null,
    "post_prod_fallback_reason": 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": "8116cd30-7b82-4d80-b921-012c409da7fa",
            "shot_revision_id": "192e2739-6b47-4429-8d14-c153e4abed15",
            "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": "194c5769-74e6-4b2b-a61c-ae66629418c7",
            "created_at": "2022-04-13T15:42:05.901Z",
            "updated_at": "2022-04-13T15:42:05.901Z",
            "integration_id": "551eec1a-b4a6-4fb2-bc38-67ced7a8b441",
            "push_status": "PENDING",
            "pushed_at": null,
            "completed_at": null,
            "error_message": null,
            "failure_reason": null,
            "integration_name": 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/ProductionRequestStatusKey"
        },
        "shot_revision_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/ShotRevisionStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "automatic_quality_assessment_status": {
            "anyOf": [
                {
                    "$ref": "#/components/schemas/QualityAssessmentStatus"
                },
                {
                    "type": "null"
                }
            ]
        },
        "post_prod_source": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Source"
        },
        "post_prod_fallback_reason": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "title": "Post Prod Fallback Reason"
        },
        "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

AutoGenerationMode

Type: string

AutoPostProductionMode

Type: string

BaseImagePublic

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

BillingFunding

Type: string

BillingMeterCounts

Name Type Description
proposals integer
review_rounds integer
reworks integer
rights_delivered integer
stylist_runs integer

BillingMeteringRule

Type: string

BillingMeterTokens

Name Type Description
absorbed number
gross number
net number
proposals number
review_rounds number
reworks number
rights number
stylist_runs number

BillingState

Type: string

BodyType

Type: string

BulkUnassignProductionRequestsBody

Name Type Description
all_in_scope boolean
production_request_ids
status_keys

BulkUnassignProductionRequestsResult

Name Type Description
updated_count integer

ColumnOwnerUpdate

Name Type Description
column_key string
owner

ContentDefCreate

Name Type Description
description string
label
reference_media Array<MediaInput>

ContentDefPublic

Name Type Description
description string
id string(uuid)
label
reference_media

CreateShotRevisionRequest

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

CustomProductionRequestCreate

Name Type Description
assignee_id
content_defs Array<ContentDefCreate>
id
product_ids Array<string(uuid)>
readiness ProductionRequestReadiness
require_all_existing_draft boolean
shots Array<CustomShotCreate>
subject_ids Array<string(uuid)>
title

CustomProductionRequestUpdate

Name Type Description
assignee_id
content_defs
product_ids
readiness
shots
subject_ids
title

CustomShootingCreate

Name Type Description
archived boolean
board_pdf
brand
collection
cover_image
description
due_date
name string
organization_id Organization this shooting belongs to
season

CustomShotCreate

Name Type Description
content_defs Array<ContentDefCreate>

DefaultShotTypes

Type: string

DownloadStatus

Type: string

DraftProductionRequestsSummary

Name Type Description
generating_count integer
total_draft_production_requests integer

ExportProductionRequestResponse

Name Type Description
exports_created integer
exports_skipped integer
message string
production_request_id string(uuid)
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
failure_reason
id string(uuid)
integration_id string(uuid)
integration_name
push_status PushStatus
pushed_at
updated_at string(date-time)

EyeColor

Type: string

FinalizeOutfitRequest

Name Type Description
confirmed_look_preview_id Preview to keep when finalizing; all other previews of this look are deleted. Omit to delete every preview.
outfit_id ID of existing outfit proposal to finalize
outfit_instruction Instructions for new outfit
outfit_product_ids Product IDs for new outfit
outfit_product_positions Normalized 0..1 canvas coords per product UUID for new outfit. Partial maps allowed.
outfit_ref_imgs_urls Reference image URLs for new outfit

Gender

Type: string

GenerateProductionRequestsRequest

Name Type Description
default_background_preset_id
default_export_configuration_id
default_height
default_instructions string
default_resolution_preset_id
default_width
generate_base_images boolean
generate_outfit AI outfit generation intent. Omitted/null inherits the brief's auto_generate_outfits (via the production snapshot); an explicit value always wins. product_outfit_configs implies false.
generative_workflow_template_id Optional override for the generative workflow template attached to the created production requests. When omitted/null, inherited from the snapshot guidelines. Cross-org templates are rejected (422).
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, age_class, product_type, product_wear_id, 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)
production_id Target ShootingProduction. Defaults to the shooting's MAIN production. Pass a TEST production's id to create production requests in that test run.
readiness
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)>
skip_existing boolean When True, skip products that already have a live (non-soft-deleted) ProductionRequest in the target production, regardless of that request's subject. Lets the FE re-call this endpoint idempotently after a brief edit (e.g., adding a subject or sample product to a running TEST production) without producing duplicates. The default ``False`` preserves the historical 'allow duplicates' contract for explicit bulk-create flows (one new request per product per call).
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).
use_subject_mannequin_double Tri-state mannequin-pipeline mode for the created PRs. ``null`` (default) = AUTO: server resolves at dispatch from the core product's ``product_type`` (restricted slugs in RESTRICTED_PRODUCT_TYPES opt in). ``true`` = ON (force mannequin). ``false`` = OFF (force regular). ``true`` is mutually exclusive with ``generative_workflow_template_id`` (422).

GenerateProductionRequestsResponse

Name Type Description
age_blocked_pair_count integer Diagnostic: ``(product, subject)`` pairs across the full compatibility matrix blocked by the age filter (e.g. an ADULT product with a child-age subject). A product with no ``age_class`` is unclassified and never contributes here. Does not sum with the product counters.
created_count integer Production requests actually inserted on this call. Always equal to ``len(production_requests)`` and at most ``requested_product_count``.
gender_blocked_pair_count integer Diagnostic: ``(product, subject)`` pairs across the full compatibility matrix blocked by the gender filter (e.g. a MALE product with a FEMALE subject, or a UNISEX product whose ``unisex_gender_preference`` excluded the subject). Does not sum with the product counters.
generation_results Array<GenerationCreationResult>
production_requests Array<ProductionRequestPublic>
requested_product_count integer Products the request asked the service to consider (one production request is created per product at most). Equal to the number of requested/resolved unique product ids.
skipped_existing_count integer Products dropped because a live (non-soft-deleted) ProductionRequest for the same product — regardless of subject — already exists in the target production. Non-zero only when the request set ``skip_existing=True``.
skipped_no_compatible_subject_count integer Products dropped because no requested subject passed the gender/age compatibility gate for them. Partial success stays a 200. When nothing at all can be created, the default path (``skip_existing=False``) returns a typed 422 instead, while an idempotent ``skip_existing=True`` call returns an empty 200.
total_generations_created integer

GenerationCreationResult

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

GuidelineShotTypePublic

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

GuidelinesShotTypeRuleGroup

Name Type Description
rule_kind GuidelinesShotTypeRuleKind
rule_value string
shot_types Array<GuidelineShotTypePublic>

GuidelinesShotTypeRuleGroupInput

Name Type Description
rule_kind GuidelinesShotTypeRuleKind
rule_value string
shot_type_ids Array<string(uuid)>
shot_type_images

GuidelinesShotTypeRuleKind

Type: string

HairColor

Type: string

HTTPValidationError

Name Type Description
detail Array<ValidationError>

ManualOutfitCreate

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

MediaInput

Name Type Description
alt_text
caption
color_profile
dominant_color
duration
height
media_resource_id
protected boolean
url
width

MediaResourceMetadataPublic

Name Type Description
caption
content_type
created_at string(date-time)
extension string
file_size integer
id string(uuid)
protected boolean
resource_type MediaResourceType

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

OutfitAuthoringEnvelope

Name Type Description
actions Array<>
schema_version string

OutfitGenerationStatus

Type: string

OutfitPosition

Name Type Description
x number
y number

OutfitRackAddAction

Name Type Description
action_id string(uuid)
kind string
outfit_id string(uuid)
product_id string(uuid)

OutfitReplacementAction

Name Type Description
action_id string(uuid)
from_product_id string(uuid)
kind string
outfit_id string(uuid)
to_product_id string(uuid)

OutfitRestyleApplyAction

Name Type Description
action_id string(uuid)
delivered_outfit_id string(uuid)
kind string
option_run_id string(uuid)
outfit_id string(uuid)

OvsDamDeliveryMode

Type: string

OvsDamDeliveryRequest

Name Type Description
mode OvsDamDeliveryMode

OvsDamDeliveryResponse

Name Type Description
failure_reason
image_count integer
integration_name
status OvsDamDeliveryStatus

OvsDamDeliveryStatus

Type: string

OwnerParty

Type: string

PosePresetPublic

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

ProductGender

Type: string

ProductionKind

Type: string

ProductionRequestAgenticGenerationStatus

Name Type Description
id string(uuid)
status string

ProductionRequestComputedStatus

Type: string

ProductionRequestOutfitPublic

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

ProductionRequestOutfitUpdate

Name Type Description
outfit_instruction
outfit_product_ids
outfit_product_positions
outfit_ref_imgs_urls

ProductionRequestOutfitUpsert

Name Type Description
id
outfit_instruction
outfit_product_ids
outfit_product_positions
outfit_ref_imgs_urls

ProductionRequestPublic

Name Type Description
assignee
assignee_id
background_preset_id
content_defs Array<ContentDefPublic>
created_at string(date-time)
deleted_at
download_status DownloadStatus
export_configuration_id
generative_workflow_template_id
height
id string(uuid)
lifecycle_stage
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_product_positions Get per-product canvas positions from the selected outfit.
outfit_proposals Array<ProductionRequestOutfitPublic>
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_ids Array<string(uuid)>
product_name
product_sku
product_wear
product_wear_id
production_archived boolean
production_kind ProductionKind
products Array<ProductPublic>
readiness ProductionRequestReadiness
reference_imgs_urls Array<string>
reference_media Array<MediaResourcePublic>
resolution_preset_id
set_design
set_design_id
shooting_id string(uuid)
shooting_production_id string(uuid)
shooting_type_key
shot_status
shots Array<ShotPublic>
subject_id
subject_ids Array<string(uuid)>
subject_name
title
updated_at string(date-time)
use_subject_mannequin_double
width

ProductionRequestReadiness

Type: string

ProductionRequestsBoardColumn

Name Type Description
count integer
data Array<ProductionRequestSummary>
key string

ProductionRequestsBoardPublic

Name Type Description
columns Array<ProductionRequestsBoardColumn>

ProductionRequestsPublic

Name Type Description
count integer
data Array<ProductionRequestPublic>

ProductionRequestsSummaryPublic

Name Type Description
count integer
data Array<ProductionRequestSummary>

ProductionRequestStatusKey

Type: string

ProductionRequestStatusPublic

Name Type Description
id string(uuid)
key string
label string
lifecycle_stage string
sorting integer

ProductionRequestSummary

Name Type Description
assignee
assignee_id
created_at string(date-time)
download_status DownloadStatus
id string(uuid)
lifecycle_stage
outfit_generation_status
outfit_products_count integer
product_cover_image_url
product_id
product_ids Array<string(uuid)>
product_name
product_sku
product_wear
product_wear_id
production_archived boolean
production_kind ProductionKind
products Array<ProductPublic>
readiness ProductionRequestReadiness
reference_imgs_urls Array<string>
reference_media Array<MediaResourcePublic>
shooting_id string(uuid)
shooting_production_id string(uuid)
shooting_type_key
shot_status
shots Array<ShotSummary>
title
updated_at string(date-time)

ProductionRequestUpdate

Name Type Description
assignee_id
auto_generate boolean
background_preset_id
export_configuration_id
generative_workflow_template_id Per-PR override for the workflow template. Cross-org templates are rejected (422). Mutually exclusive with ``use_subject_mannequin_double=True``.
height
outfit In-place patch of the production request's currently selected outfit (the row referenced by ``outfit_id``). Only allowed while ``readiness=READY``. Mutually exclusive with ``outfit_proposals`` (which is DRAFT-only). Each supplied subfield is applied; absent ones stay untouched.
outfit_authoring Optional provenance for actions represented by this canvas snapshot. The snapshot remains authoritative; the server validates every action.
outfit_id
outfit_proposals Replace outfit proposal set on the production request. Only allowed while ``readiness=DRAFT``. Items with ``id`` update an existing proposal in place; items without ``id`` create a new proposal; existing proposals not present in the payload are deleted. Pass ``None`` (omit the field) to leave proposals untouched.
product_id
readiness
resolution_preset_id
shot_type_ids
subject_id
use_subject_mannequin_double Tri-state mannequin-pipeline mode. PATCH-set ``null`` to switch the PR back to AUTO (resolved at dispatch from product_type), ``true`` to force mannequin (ON), ``false`` to force regular (OFF). Omit the key to leave the current value unchanged.
width

ProductOutfitConfig

Name Type Description
background_preset_id
export_configuration_id
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
width

ProductPlacement

Type: string

ProductPublic

Name Type Description
age_class
archived boolean
back_description
back_image_media
back_image_url
barcode
brand
brand_collection
brand_metadata
category
closure_type
color_code
color_name
color_swatch_media
colour
cover_image_media
cover_image_url
created_at string(date-time)
data_image_urls Array<string>
deleted_at
demo boolean
description
ecommerce_description
enabled boolean
exports_completed
exports_total
fit_type
gender ProductGender
id string(uuid)
in_store_date
incomplete boolean
ingest_job_id
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
product_wear
product_wear_id
public boolean
reference_images Array<string>
reference_images_media
season
shot_status
shot_status_production_request_id
shots Array<>
sku
sleeve_type
style_code
style_group_id
styling_slot StylingSlot
theme
type
updated_at string(date-time)
year
zone

ProductShootingStatus

Type: string

PushFailureReason

Type: string

PushStatus

Type: string

QualityAssessmentMode

Type: string

QualityAssessmentStatus

Type: string

ReusableOutfitMatch

Name Type Description
outfit ProductionRequestOutfitPublic
source_product ProductPublic
source_production_request_id string(uuid)

RevisionSource

Type: string

RoleName

Type: string

RolePublic

Name Type Description
description
id string(uuid)
name RoleName

SetBaseImagePublic

Name Type Description
created_at string(date-time)
id string(uuid)
image_media
image_url
shot_type_id string(uuid)
subject_id string(uuid)
updated_at string(date-time)
variant_index integer

SetDesignPublic

Name Type Description
background_preset_id
base_images Array<SetBaseImagePublic>
created_at string(date-time)
deleted_at
description
id string(uuid)
is_draft boolean
name string
organization_id
owner_id string(uuid)
production_due_at
reference_images Array<SetReferenceImagePublic>
subject_portraits Array<SubjectPortraitPublic>
updated_at string(date-time)

SetReferenceImagePublic

Name Type Description
created_at string(date-time)
id string(uuid)
image_media
image_url
label
shot_type_id string(uuid)
updated_at string(date-time)

ShootingBillingSummary

Name Type Description
billable
billing_funding
billing_metering_rule
billing_note
billing_state
counts BillingMeterCounts
included_postprod_rounds integer
included_proposal_rounds integer
organization_id
po_tag
shooting_id string(uuid)
tokens BillingMeterTokens

ShootingBillingUpdate

Name Type Description
billing_funding
billing_metering_rule
billing_note
billing_state
included_postprod_rounds
included_proposal_rounds
po_tag

ShootingBoardUrl

Name Type Description
url string

ShootingCreate

Name Type Description
archived boolean
board_pdf
brand
collection
cover_image
default_guidelines Inline guidelines to create alongside the shooting. Mutually exclusive with default_guidelines_id. When supplied, omitting both shot_type_ids and shot_type_rules seeds the default e-commerce photo pack; supplying either field, even as an empty list (or shot_type_rules as null), preserves that explicit selection and suppresses the seed.
default_guidelines_id Default guidelines preset for this shooting (existing template)
description
due_date Optional; nothing computes on it. Set it later if needed.
name string Optional; omit or send blank to have it date-stamped.
organization_id Organization this shooting belongs to
phase ShootingPhase Initial lifecycle phase. Only BRIEF and PRODUCTION are valid at creation. PRODUCTION (default) eagerly creates the MAIN production; BRIEF skips production creation. The intermediate phases (TEST_SHOOTING, PRODUCTS_SELECTION, AGREEMENT) and the terminal CLOSED phase are user-driven transitions reachable only via PATCH /shootings/{id}/phase, and are rejected here.
require_test_shooting boolean When True, MAIN production cannot be created until at least one TEST production exists for this shooting. Editable via the update endpoint until the MAIN production exists; frozen afterwards.
season

ShootingGuidelinesCreate

Name Type Description
allow_back_shots_without_back_image boolean
auto_generate_outfits boolean Whether brief-driven creations (wizard run-starts, expansions) compose initial looks with the AI Stylist. Request-level generate_outfit overrides this when sent explicitly.
auto_generation_mode AutoGenerationMode Auto-generation engine: 'default' (legacy), 'agentic' (autonomous agent), 'off' (disabled).
auto_post_production_mode AutoPostProductionMode Auto post-production behavior: 'none' skips it, 'default' runs the system workflow, 'custom' runs the selected auto_post_production_template_id (falling back to default on error).
auto_post_production_template_id Custom auto-post-prod workflow. Required with mode='custom', forbidden otherwise. Must be purpose='post_production', valid, and org-owned or public (422 at the route layer).
background_preset_id
export_configuration_id
generative_workflow_template_id Optional generative workflow template attached at guideline creation. Cross-org and invalid-validation-status templates are rejected at the route layer (422).
name string
organization_id Organization these guidelines belong to
owner_id
pose_preset_ids Array<string(uuid)>
quality_assessment_mode QualityAssessmentMode Quality Assessment behavior: none | default | custom.
quality_assessment_template_id Custom Quality Assessment workflow. Required with mode='custom' and forbidden otherwise.
resolution_preset_id
set_design_id
shooting_type_id
shot_type_ids Array<string(uuid)>
shot_type_rules Optional list of shot-type rules to create alongside the guideline (one DB transaction). Each entry is one (rule_kind, rule_value) → list of shot_type_ids group. Omit to create the guideline with no rules.
stylist_fillers_mode string How the stylist may use generic filler products: 'auto' keeps the required-slot rescue lane, 'off' disables fillers for this brief. The interactive Restyle lane can override per run.
stylist_id
subject_ids Array<string(uuid)>

ShootingGuidelinesPublic

Name Type Description
allow_back_shots_without_back_image boolean
auto_generate_outfits boolean
auto_generation_mode AutoGenerationMode
auto_post_production_mode AutoPostProductionMode
auto_post_production_template_id
background_images Array<>
background_preset_id
created_at string(date-time)
deleted_at
export_configuration_id
generative_workflow_template_id
id string(uuid)
is_system boolean
name string
organization_id
owner_id
pose_presets Array<PosePresetPublic>
quality_assessment_mode QualityAssessmentMode
quality_assessment_template_id
resolution_preset_id
set_design
set_design_id
shooting_type_id string(uuid)
shooting_type_key ShootingTypeKey
shot_type_rules Array<GuidelinesShotTypeRuleGroup>
shot_types Array<GuidelineShotTypePublic>
stylist_fillers_mode string
stylist_id
subjects Array<SubjectPublic>
updated_at string(date-time)

ShootingHeaderGuidelinesPublic

Name Type Description
auto_generate_outfits boolean
auto_generation_mode AutoGenerationMode
auto_post_production_mode AutoPostProductionMode
auto_post_production_template_id
background_preset_id
created_at string(date-time)
export_configuration_id
pose_presets Array<PosePresetPublic>
quality_assessment_mode QualityAssessmentMode
quality_assessment_template_id
resolution_preset_id
set_design_id
shot_types Array<ShotTypePublic>
stylist
stylist_fillers_mode string
stylist_id
subjects Array<SubjectPublic>
updated_at string(date-time)

ShootingHeaderPublic

Name Type Description
billing_funding
billing_metering_rule
billing_note
billing_state
board_pdf
brand
collection
column_owners
cover_image
created_at string(date-time)
default_guidelines
default_guidelines_id
description
due_date
id string(uuid)
included_postprod_rounds integer
included_proposal_rounds integer
latest_test_production_id
name string
organization_id
owner_id string(uuid)
phase
po_tag
public boolean
require_test_shooting boolean
season
shooting_type_id
shooting_type_key
updated_at string(date-time)

ShootingPhase

Type: string

ShootingPhaseUpdateRequest

Name Type Description
phase ShootingPhase The new phase to transition to.

ShootingProductIdsRequest

Name Type Description
product_ids Array<string(uuid)> Product IDs to add, remove, or replace the set with.

ShootingProductionCreate

Name Type Description
kind string MAIN or TEST.
run Optional run spec. When present, the production is created/resolved and seeded atomically with one production-request per requested product, each paired with a balanced-randomly selected compatible subject; a run that leaves the production with zero live looks rolls everything back (422).

ShootingProductionPublic

Name Type Description
archived boolean
created_at string(date-time)
deleted_at
guidelines_id
id string(uuid)
kind string
shooting_id string(uuid)
status_breakdown Array<ShootingStatusCount>
updated_at string(date-time)

ShootingProductionRunPublic

Name Type Description
age_blocked_pair_count
archived boolean
created_at string(date-time)
created_count
deleted_at
gender_blocked_pair_count
guidelines_id
id string(uuid)
kind string
production_created
requested_product_count
shooting_id string(uuid)
skipped_existing_count
skipped_no_compatible_subject_count
status_breakdown Array<ShootingStatusCount>
updated_at string(date-time)

ShootingProductionShotRulesApplyRequest

Name Type Description
expected_guidelines_snapshot_id string(uuid)

ShootingProductionShotRulesApplyResult

Name Type Description
affected_production_request_count integer
guidelines_snapshot_id string(uuid)
production_id string(uuid)
shooting_id string(uuid)
shots_added_count integer

ShootingProductionShotRulesPreview

Name Type Description
affected_production_request_count integer
guidelines_snapshot_id string(uuid)
has_changes boolean
production_id string(uuid)
production_request_count integer
shooting_id string(uuid)
shots_to_add_count integer

ShootingProductionsList

Name Type Description
count integer
data Array<ShootingProductionPublic>

ShootingProductionUpdate

Name Type Description
archived

ShootingProductsList

Name Type Description
count integer
data Array<ProductPublic>

ShootingPublic

Name Type Description
archived boolean
background_images Array<>
billing_funding
billing_metering_rule
billing_note
billing_state
board_pdf
brand
collection
column_owners
cover_image
created_at string(date-time)
default_guidelines
default_guidelines_id
deleted_at
description
due_date
id string(uuid)
included_postprod_rounds integer
included_proposal_rounds integer
latest_test_production_id
name string
organization_id
owner_id string(uuid)
phase
po_tag
require_test_shooting boolean
season
shooting_type
shooting_type_id
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 ProductionRequestComputedStatus

ShootingStatusFilter

Type: string

ShootingSummary

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

ShootingTypeKey

Type: string

ShootingTypePublic

Name Type Description
archived boolean
description
id string(uuid)
key string
label string

ShootingUpdate

Name Type Description
archived
board_pdf
brand
collection
cover_image
default_guidelines_id Default guidelines preset for this shooting
description
due_date
name
organization_id Organization to transfer this shooting to
require_test_shooting boolean Whether a TEST production is required before MAIN. Editable only while the shooting has no MAIN production; a change after that is rejected with 400, because the MAIN-creation guard has already run and cannot be applied retroactively. Omit to leave it untouched.
season

ShotCreate

Name Type Description
production_request_id string(uuid)
shot_type_id

ShotPublic

Name Type Description
content_defs Array<ContentDefPublic>
created_at string(date-time)
current_revision_id
download_status DownloadStatus
id string(uuid)
pose_preset_id
production_request_id
revisions Array<ShotRevisionPublic>
rework_available integer
rework_used integer
shot_type
status ProductionRequestStatusKey
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
automatic_quality_assessment_status
created_at string(date-time)
display_name string
effective_image_url
id string(uuid)
images Array<ShotRevisionImagePublic>
notes
owner
owner_id
post_prod_fallback_reason
post_prod_source
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 ProductionRequestStatusKey
updated_at string(date-time)
version integer

ShotRevisionStatus

Type: string

ShotsPublic

Name Type Description
count integer
data Array<ShotPublic>

ShotStatusFilter

Type: string

ShotSummary

Name Type Description
current_revision_id
download_status DownloadStatus
id string(uuid)
push_error_message
push_failure_reason
push_integration_name
push_status
shot_type
status ProductionRequestStatusKey

ShotTypeFraming

Type: string

ShotTypePublic

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

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
message string
production_request_id string(uuid)

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
message string
production_request_id string(uuid)
shot_type_id string(uuid)

StylingSlot

Type: string

StylistSummary

Name Type Description
id string(uuid)
name string

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
deleted_at
description
enabled boolean
ethnicity
gender Gender
id string(uuid)
measurements
name string
organization_id
owner_id string(uuid)
portfolio_images_media
portrait_image_media
portrait_image_url
public boolean
ready boolean
slug string
subject_type SubjectType
surname
updated_at string(date-time)

SubjectType

Type: string

UserSummary

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

ValidationError

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

ViewAngle

Type: string

Security schemes

Name Type Scheme Description
OAuth2PasswordBearer oauth2