diff --git a/invokeai/app/api/routers/images.py b/invokeai/app/api/routers/images.py index f31c075a50..692dc7fd21 100644 --- a/invokeai/app/api/routers/images.py +++ b/invokeai/app/api/routers/images.py @@ -5,7 +5,7 @@ from PIL import Image from fastapi import Body, HTTPException, Path, Query, Request, Response, UploadFile from fastapi.responses import FileResponse from fastapi.routing import APIRouter -from pydantic import BaseModel +from pydantic import BaseModel, Field from invokeai.app.invocations.metadata import ImageMetadata from invokeai.app.models.image import ImageCategory, ResourceOrigin @@ -19,6 +19,7 @@ from ..dependencies import ApiDependencies images_router = APIRouter(prefix="/v1/images", tags=["images"]) + # images are immutable; set a high max-age IMAGE_MAX_AGE = 31536000 @@ -286,30 +287,41 @@ async def delete_images_from_list( return DeleteImagesFromListResult(deleted_images=deleted_images) except Exception as e: raise HTTPException(status_code=500, detail="Failed to delete images") - - -@images_router.post("/star", operation_id="star_images_in_list") + + +class ImagesUpdatedFromListResult(BaseModel): + updated_image_names: list[str] = Field(description="The image names that were updated") + + +@images_router.post("/star", operation_id="star_images_in_list", response_model=ImagesUpdatedFromListResult) async def star_images_in_list( image_names: list[str] = Body(description="The list of names of images to star", embed=True), -): +) -> ImagesUpdatedFromListResult: try: + updated_image_names: list[str] = [] for image_name in image_names: try: ApiDependencies.invoker.services.images.update(image_name, changes=ImageRecordChanges(starred=True)) + updated_image_names.append(image_name) except: pass + return ImagesUpdatedFromListResult(updated_image_names=updated_image_names) except Exception as e: raise HTTPException(status_code=500, detail="Failed to star images") - -@images_router.post("/unstar", operation_id="unstar_images_in_list") + + +@images_router.post("/unstar", operation_id="unstar_images_in_list", response_model=ImagesUpdatedFromListResult) async def unstar_images_in_list( image_names: list[str] = Body(description="The list of names of images to unstar", embed=True), -): +) -> ImagesUpdatedFromListResult: try: + updated_image_names: list[str] = [] for image_name in image_names: try: ApiDependencies.invoker.services.images.update(image_name, changes=ImageRecordChanges(starred=False)) + updated_image_names.append(image_name) except: pass + return ImagesUpdatedFromListResult(updated_image_names=updated_image_names) except Exception as e: - raise HTTPException(status_code=500, detail="Failed to unstar images") \ No newline at end of file + raise HTTPException(status_code=500, detail="Failed to unstar images") diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesStarred.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesStarred.ts index b5e7f5f087..5988eee207 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesStarred.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesStarred.ts @@ -7,7 +7,7 @@ export const addImagesStarredListener = () => { startAppListening({ matcher: imagesApi.endpoints.starImages.matchFulfilled, effect: async (action, { dispatch, getState }) => { - const { images: starredImages } = action.payload; + const { updated_image_names: starredImages } = action.payload; const state = getState(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesUnstarred.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesUnstarred.ts index c8fc8c7c8b..3df76861d4 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesUnstarred.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imagesUnstarred.ts @@ -7,7 +7,7 @@ export const addImagesUnstarredListener = () => { startAppListening({ matcher: imagesApi.endpoints.unstarImages.matchFulfilled, effect: async (action, { dispatch, getState }) => { - const { images: unstarredImages } = action.payload; + const { updated_image_names: unstarredImages } = action.payload; const state = getState(); diff --git a/invokeai/frontend/web/src/services/api/endpoints/images.ts b/invokeai/frontend/web/src/services/api/endpoints/images.ts index 7c849e45aa..e5bc6b6e7f 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/images.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/images.ts @@ -8,7 +8,7 @@ import { } from 'features/gallery/store/types'; import { keyBy } from 'lodash'; import { ApiFullTagDescription, LIST_TAG, api } from '..'; -import { components } from '../schema'; +import { components, paths } from '../schema'; import { DeleteBoardResult, ImageCategory, @@ -296,11 +296,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - imageDTO.board_id ?? 'none' - )(getState()) + imageDTO.board_id ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - imageDTO.board_id ?? 'none' - )(getState()); + imageDTO.board_id ?? 'none' + )(getState()); // IF it eligible for insertion into existing $cache // "eligible" means either: @@ -391,13 +391,13 @@ export const imagesApi = api.injectEndpoints({ * Star a list of images. */ starImages: build.mutation< - { images: string[] }, + paths['/api/v1/images/unstar']['post']['responses']['200']['content']['application/json'], { images: ImageDTO[] } >({ query: ({ images }) => ({ url: `images/star`, method: 'POST', - body: { image_names: images.map(img => img.image_name) }, + body: { image_names: images.map((img) => img.image_name) }, }), invalidatesTags: (result, error, { images }) => { // assume all images are on the same board/category @@ -412,15 +412,11 @@ export const imagesApi = api.injectEndpoints({ categories, }), }, - ] + ]; } - return [] - + return []; }, - async onQueryStarted( - { images }, - { dispatch, queryFulfilled, getState } - ) { + async onQueryStarted({ images }, { dispatch, queryFulfilled, getState }) { try { /** * Cache changes for pinImages: @@ -428,12 +424,18 @@ export const imagesApi = api.injectEndpoints({ * - *upsert* into list for each image */ - // assume all images are on the same board/category - if (!images[0]) return; - const categories = getCategories(images[0]); - const boardId = images[0].board_id; + const { data } = await queryFulfilled; + const updatedImages = images.filter((i) => + data.updated_image_names.includes(i.image_name) + ); - images.forEach((imageDTO) => { + if (!updatedImages[0]) return; + + // assume all images are on the same board/category + const categories = getCategories(updatedImages[0]); + const boardId = updatedImages[0].board_id; + + updatedImages.forEach((imageDTO) => { const { image_name } = imageDTO; dispatch( imagesApi.util.updateQueryData( @@ -447,7 +449,7 @@ export const imagesApi = api.injectEndpoints({ const queryArgs = { board_id: boardId ?? 'none', - categories + categories, }; const currentCache = imagesApi.endpoints.listImages.select( @@ -458,11 +460,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - boardId ?? 'none' - )(getState()) + boardId ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - boardId ?? 'none' - )(getState()); + boardId ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && @@ -482,7 +484,7 @@ export const imagesApi = api.injectEndpoints({ (draft) => { imagesAdapter.upsertOne(draft, { ...imageDTO, - starred: true + starred: true, }); } ) @@ -498,13 +500,13 @@ export const imagesApi = api.injectEndpoints({ * Unstar a list of images. */ unstarImages: build.mutation< - { images: string[] }, + paths['/api/v1/images/unstar']['post']['responses']['200']['content']['application/json'], { images: ImageDTO[] } >({ query: ({ images }) => ({ url: `images/unstar`, method: 'POST', - body: { image_names: images.map(img => img.image_name) }, + body: { image_names: images.map((img) => img.image_name) }, }), invalidatesTags: (result, error, { images }) => { // assume all images are on the same board/category @@ -519,15 +521,11 @@ export const imagesApi = api.injectEndpoints({ categories, }), }, - ] + ]; } - return [] - + return []; }, - async onQueryStarted( - { images }, - { dispatch, queryFulfilled, getState } - ) { + async onQueryStarted({ images }, { dispatch, queryFulfilled, getState }) { try { /** * Cache changes for unstarImages: @@ -535,12 +533,17 @@ export const imagesApi = api.injectEndpoints({ * - *upsert* into list for each image */ - // assume all images are on the same board/category - if (!images[0]) return; - const categories = getCategories(images[0]); - const boardId = images[0].board_id; + const { data } = await queryFulfilled; + const updatedImages = images.filter((i) => + data.updated_image_names.includes(i.image_name) + ); - images.forEach((imageDTO) => { + if (!updatedImages[0]) return; + // assume all images are on the same board/category + const categories = getCategories(updatedImages[0]); + const boardId = updatedImages[0].board_id; + + updatedImages.forEach((imageDTO) => { const { image_name } = imageDTO; dispatch( imagesApi.util.updateQueryData( @@ -552,10 +555,9 @@ export const imagesApi = api.injectEndpoints({ ) ); - const queryArgs = { board_id: boardId ?? 'none', - categories + categories, }; const currentCache = imagesApi.endpoints.listImages.select( @@ -566,11 +568,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - boardId ?? 'none' - )(getState()) + boardId ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - boardId ?? 'none' - )(getState()); + boardId ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && @@ -590,7 +592,7 @@ export const imagesApi = api.injectEndpoints({ (draft) => { imagesAdapter.upsertOne(draft, { ...imageDTO, - starred: false + starred: false, }); } ) @@ -941,11 +943,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - imageDTO.board_id ?? 'none' - )(getState()) + imageDTO.board_id ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - imageDTO.board_id ?? 'none' - )(getState()); + imageDTO.board_id ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && currentCache.data.ids.length >= (total ?? 0); @@ -1061,11 +1063,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - imageDTO.board_id ?? 'none' - )(getState()) + imageDTO.board_id ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - imageDTO.board_id ?? 'none' - )(getState()); + imageDTO.board_id ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && currentCache.data.ids.length >= (total ?? 0); @@ -1188,11 +1190,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - new_board_id ?? 'none' - )(getState()) + new_board_id ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - new_board_id ?? 'none' - )(getState()); + new_board_id ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && @@ -1319,11 +1321,11 @@ export const imagesApi = api.injectEndpoints({ imageDTO.image_category ) ? boardsApi.endpoints.getBoardImagesTotal.select( - imageDTO.board_id ?? 'none' - )(getState()) + imageDTO.board_id ?? 'none' + )(getState()) : boardsApi.endpoints.getBoardAssetsTotal.select( - imageDTO.board_id ?? 'none' - )(getState()); + imageDTO.board_id ?? 'none' + )(getState()); const isCacheFullyPopulated = currentCache.data && currentCache.data.ids.length >= (total ?? 0); @@ -1376,5 +1378,5 @@ export const { useDeleteBoardAndImagesMutation, useDeleteBoardMutation, useStarImagesMutation, - useUnstarImagesMutation + useUnstarImagesMutation, } = imagesApi; diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts index bac9f1ae96..8d0ddee429 100644 --- a/invokeai/frontend/web/src/services/api/schema.d.ts +++ b/invokeai/frontend/web/src/services/api/schema.d.ts @@ -1958,10 +1958,8 @@ export type components = { | components['schemas']['SDXLLoraLoaderInvocation'] | components['schemas']['VaeLoaderInvocation'] | components['schemas']['MetadataAccumulatorInvocation'] - | components['schemas']['RangeInvocation'] - | components['schemas']['RangeOfSizeInvocation'] - | components['schemas']['RandomRangeInvocation'] - | components['schemas']['ImageCollectionInvocation'] + | components['schemas']['SDXLModelLoaderInvocation'] + | components['schemas']['SDXLRefinerModelLoaderInvocation'] | components['schemas']['CompelInvocation'] | components['schemas']['SDXLCompelPromptInvocation'] | components['schemas']['SDXLRefinerCompelPromptInvocation'] @@ -1987,21 +1985,11 @@ export type components = { | components['schemas']['ImageHueAdjustmentInvocation'] | components['schemas']['ImageLuminosityAdjustmentInvocation'] | components['schemas']['ImageSaturationAdjustmentInvocation'] - | components['schemas']['CvInpaintInvocation'] - | components['schemas']['InfillColorInvocation'] - | components['schemas']['InfillTileInvocation'] - | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['DenoiseLatentsInvocation'] | components['schemas']['LatentsToImageInvocation'] | components['schemas']['ResizeLatentsInvocation'] | components['schemas']['ScaleLatentsInvocation'] | components['schemas']['ImageToLatentsInvocation'] - | components['schemas']['AddInvocation'] - | components['schemas']['SubtractInvocation'] - | components['schemas']['MultiplyInvocation'] - | components['schemas']['DivideInvocation'] - | components['schemas']['RandomIntInvocation'] - | components['schemas']['NoiseInvocation'] | components['schemas']['ONNXPromptInvocation'] | components['schemas']['ONNXTextToLatentsInvocation'] | components['schemas']['ONNXLatentsToImageInvocation'] @@ -2009,15 +1997,27 @@ export type components = { | components['schemas']['OnnxModelLoaderInvocation'] | components['schemas']['DynamicPromptInvocation'] | components['schemas']['PromptsFromFileInvocation'] + | components['schemas']['AddInvocation'] + | components['schemas']['SubtractInvocation'] + | components['schemas']['MultiplyInvocation'] + | components['schemas']['DivideInvocation'] + | components['schemas']['RandomIntInvocation'] | components['schemas']['ParamIntInvocation'] | components['schemas']['ParamFloatInvocation'] | components['schemas']['ParamStringInvocation'] | components['schemas']['ParamPromptInvocation'] + | components['schemas']['CvInpaintInvocation'] + | components['schemas']['RangeInvocation'] + | components['schemas']['RangeOfSizeInvocation'] + | components['schemas']['RandomRangeInvocation'] + | components['schemas']['ImageCollectionInvocation'] | components['schemas']['FloatLinearRangeInvocation'] | components['schemas']['StepParamEasingInvocation'] - | components['schemas']['SDXLModelLoaderInvocation'] - | components['schemas']['SDXLRefinerModelLoaderInvocation'] + | components['schemas']['NoiseInvocation'] | components['schemas']['ESRGANInvocation'] + | components['schemas']['InfillColorInvocation'] + | components['schemas']['InfillTileInvocation'] + | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['GraphInvocation'] | components['schemas']['IterateInvocation'] | components['schemas']['CollectInvocation'] @@ -2082,22 +2082,8 @@ export type components = { results: { [key: string]: | ( - | components['schemas']['BooleanOutput'] - | components['schemas']['BooleanCollectionOutput'] - | components['schemas']['IntegerOutput'] - | components['schemas']['IntegerCollectionOutput'] - | components['schemas']['FloatOutput'] - | components['schemas']['FloatCollectionOutput'] - | components['schemas']['StringOutput'] - | components['schemas']['StringCollectionOutput'] | components['schemas']['ImageOutput'] - | components['schemas']['ImageCollectionOutput'] - | components['schemas']['LatentsOutput'] - | components['schemas']['LatentsCollectionOutput'] - | components['schemas']['ColorOutput'] - | components['schemas']['ColorCollectionOutput'] - | components['schemas']['ConditioningOutput'] - | components['schemas']['ConditioningCollectionOutput'] + | components['schemas']['MaskOutput'] | components['schemas']['ControlOutput'] | components['schemas']['ModelLoaderOutput'] | components['schemas']['LoraLoaderOutput'] @@ -2106,8 +2092,18 @@ export type components = { | components['schemas']['MetadataAccumulatorOutput'] | components['schemas']['SDXLModelLoaderOutput'] | components['schemas']['SDXLRefinerModelLoaderOutput'] + | components['schemas']['CompelOutput'] | components['schemas']['ClipSkipInvocationOutput'] + | components['schemas']['LatentsOutput'] | components['schemas']['ONNXModelLoaderOutput'] + | components['schemas']['PromptOutput'] + | components['schemas']['PromptCollectionOutput'] + | components['schemas']['IntOutput'] + | components['schemas']['FloatOutput'] + | components['schemas']['StringOutput'] + | components['schemas']['IntCollectionOutput'] + | components['schemas']['FloatCollectionOutput'] + | components['schemas']['ImageCollectionOutput'] | components['schemas']['NoiseOutput'] | components['schemas']['GraphInvocationOutput'] | components['schemas']['IterateInvocationOutput'] @@ -3175,6 +3171,14 @@ export type components = { */ metadata?: components['schemas']['CoreMetadata']; }; + /** ImagesUpdatedFromListResult */ + ImagesUpdatedFromListResult: { + /** + * Updated Image Names + * @description The image names that were updated + */ + updated_image_names: string[]; + }; /** * Solid Color Infill * @description Infills transparent areas of an image with a solid color @@ -6405,100 +6409,6 @@ export type components = { */ image?: components['schemas']['ImageField']; }; - /** - * StableDiffusion2ModelFormat - * @description An enumeration. - * @enum {string} - */ - Input: 'connection' | 'direct' | 'any'; - /** - * ControlNetModelFormat - * @description An enumeration. - * @enum {string} - */ - ControlNetModelFormat: 'checkpoint' | 'diffusers'; - /** - * StableDiffusion1ModelFormat - * @description An enumeration. - * @enum {string} - */ - UIType: - | 'integer' - | 'float' - | 'boolean' - | 'string' - | 'array' - | 'ImageField' - | 'LatentsField' - | 'ConditioningField' - | 'ControlField' - | 'ColorField' - | 'ImageCollection' - | 'ConditioningCollection' - | 'ColorCollection' - | 'LatentsCollection' - | 'IntegerCollection' - | 'FloatCollection' - | 'StringCollection' - | 'BooleanCollection' - | 'MainModelField' - | 'SDXLMainModelField' - | 'SDXLRefinerModelField' - | 'ONNXModelField' - | 'VaeModelField' - | 'LoRAModelField' - | 'ControlNetModelField' - | 'UNetField' - | 'VaeField' - | 'ClipField' - | 'Collection' - | 'CollectionItem' - | 'FilePath' - | 'enum'; - /** - * StableDiffusionOnnxModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusionOnnxModelFormat: 'olive' | 'onnx'; - /** - * _InputField - * @description *DO NOT USE* - * This helper class is used to tell the client about our custom field attributes via OpenAPI - * schema generation, and Typescript type generation from that schema. It serves no functional - * purpose in the backend. - */ - _InputField: { - input: components['schemas']['Input']; - /** Ui Hidden */ - ui_hidden: boolean; - ui_type?: components['schemas']['UIType']; - ui_component?: components['schemas']['UIComponent']; - }; - /** - * _OutputField - * @description *DO NOT USE* - * This helper class is used to tell the client about our custom field attributes via OpenAPI - * schema generation, and Typescript type generation from that schema. It serves no functional - * purpose in the backend. - */ - _OutputField: { - /** Ui Hidden */ - ui_hidden: boolean; - ui_type?: components['schemas']['UIType']; - }; - /** - * StableDiffusionXLModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusionXLModelFormat: 'checkpoint' | 'diffusers'; - /** - * StableDiffusion1ModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusion1ModelFormat: 'checkpoint' | 'diffusers'; /** * ControlNetModelFormat * @description An enumeration. @@ -6511,12 +6421,24 @@ export type components = { * @enum {string} */ StableDiffusion2ModelFormat: 'checkpoint' | 'diffusers'; + /** + * StableDiffusionXLModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusionXLModelFormat: 'checkpoint' | 'diffusers'; /** * StableDiffusionOnnxModelFormat * @description An enumeration. * @enum {string} */ StableDiffusionOnnxModelFormat: 'olive' | 'onnx'; + /** + * StableDiffusion1ModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusion1ModelFormat: 'checkpoint' | 'diffusers'; }; responses: never; parameters: never; @@ -6634,10 +6556,8 @@ export type operations = { | components['schemas']['SDXLLoraLoaderInvocation'] | components['schemas']['VaeLoaderInvocation'] | components['schemas']['MetadataAccumulatorInvocation'] - | components['schemas']['RangeInvocation'] - | components['schemas']['RangeOfSizeInvocation'] - | components['schemas']['RandomRangeInvocation'] - | components['schemas']['ImageCollectionInvocation'] + | components['schemas']['SDXLModelLoaderInvocation'] + | components['schemas']['SDXLRefinerModelLoaderInvocation'] | components['schemas']['CompelInvocation'] | components['schemas']['SDXLCompelPromptInvocation'] | components['schemas']['SDXLRefinerCompelPromptInvocation'] @@ -6663,21 +6583,11 @@ export type operations = { | components['schemas']['ImageHueAdjustmentInvocation'] | components['schemas']['ImageLuminosityAdjustmentInvocation'] | components['schemas']['ImageSaturationAdjustmentInvocation'] - | components['schemas']['CvInpaintInvocation'] - | components['schemas']['InfillColorInvocation'] - | components['schemas']['InfillTileInvocation'] - | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['DenoiseLatentsInvocation'] | components['schemas']['LatentsToImageInvocation'] | components['schemas']['ResizeLatentsInvocation'] | components['schemas']['ScaleLatentsInvocation'] | components['schemas']['ImageToLatentsInvocation'] - | components['schemas']['AddInvocation'] - | components['schemas']['SubtractInvocation'] - | components['schemas']['MultiplyInvocation'] - | components['schemas']['DivideInvocation'] - | components['schemas']['RandomIntInvocation'] - | components['schemas']['NoiseInvocation'] | components['schemas']['ONNXPromptInvocation'] | components['schemas']['ONNXTextToLatentsInvocation'] | components['schemas']['ONNXLatentsToImageInvocation'] @@ -6685,15 +6595,27 @@ export type operations = { | components['schemas']['OnnxModelLoaderInvocation'] | components['schemas']['DynamicPromptInvocation'] | components['schemas']['PromptsFromFileInvocation'] + | components['schemas']['AddInvocation'] + | components['schemas']['SubtractInvocation'] + | components['schemas']['MultiplyInvocation'] + | components['schemas']['DivideInvocation'] + | components['schemas']['RandomIntInvocation'] | components['schemas']['ParamIntInvocation'] | components['schemas']['ParamFloatInvocation'] | components['schemas']['ParamStringInvocation'] | components['schemas']['ParamPromptInvocation'] + | components['schemas']['CvInpaintInvocation'] + | components['schemas']['RangeInvocation'] + | components['schemas']['RangeOfSizeInvocation'] + | components['schemas']['RandomRangeInvocation'] + | components['schemas']['ImageCollectionInvocation'] | components['schemas']['FloatLinearRangeInvocation'] | components['schemas']['StepParamEasingInvocation'] - | components['schemas']['SDXLModelLoaderInvocation'] - | components['schemas']['SDXLRefinerModelLoaderInvocation'] + | components['schemas']['NoiseInvocation'] | components['schemas']['ESRGANInvocation'] + | components['schemas']['InfillColorInvocation'] + | components['schemas']['InfillTileInvocation'] + | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['GraphInvocation'] | components['schemas']['IterateInvocation'] | components['schemas']['CollectInvocation'] @@ -6756,10 +6678,8 @@ export type operations = { | components['schemas']['SDXLLoraLoaderInvocation'] | components['schemas']['VaeLoaderInvocation'] | components['schemas']['MetadataAccumulatorInvocation'] - | components['schemas']['RangeInvocation'] - | components['schemas']['RangeOfSizeInvocation'] - | components['schemas']['RandomRangeInvocation'] - | components['schemas']['ImageCollectionInvocation'] + | components['schemas']['SDXLModelLoaderInvocation'] + | components['schemas']['SDXLRefinerModelLoaderInvocation'] | components['schemas']['CompelInvocation'] | components['schemas']['SDXLCompelPromptInvocation'] | components['schemas']['SDXLRefinerCompelPromptInvocation'] @@ -6785,21 +6705,11 @@ export type operations = { | components['schemas']['ImageHueAdjustmentInvocation'] | components['schemas']['ImageLuminosityAdjustmentInvocation'] | components['schemas']['ImageSaturationAdjustmentInvocation'] - | components['schemas']['CvInpaintInvocation'] - | components['schemas']['InfillColorInvocation'] - | components['schemas']['InfillTileInvocation'] - | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['DenoiseLatentsInvocation'] | components['schemas']['LatentsToImageInvocation'] | components['schemas']['ResizeLatentsInvocation'] | components['schemas']['ScaleLatentsInvocation'] | components['schemas']['ImageToLatentsInvocation'] - | components['schemas']['AddInvocation'] - | components['schemas']['SubtractInvocation'] - | components['schemas']['MultiplyInvocation'] - | components['schemas']['DivideInvocation'] - | components['schemas']['RandomIntInvocation'] - | components['schemas']['NoiseInvocation'] | components['schemas']['ONNXPromptInvocation'] | components['schemas']['ONNXTextToLatentsInvocation'] | components['schemas']['ONNXLatentsToImageInvocation'] @@ -6807,15 +6717,27 @@ export type operations = { | components['schemas']['OnnxModelLoaderInvocation'] | components['schemas']['DynamicPromptInvocation'] | components['schemas']['PromptsFromFileInvocation'] + | components['schemas']['AddInvocation'] + | components['schemas']['SubtractInvocation'] + | components['schemas']['MultiplyInvocation'] + | components['schemas']['DivideInvocation'] + | components['schemas']['RandomIntInvocation'] | components['schemas']['ParamIntInvocation'] | components['schemas']['ParamFloatInvocation'] | components['schemas']['ParamStringInvocation'] | components['schemas']['ParamPromptInvocation'] + | components['schemas']['CvInpaintInvocation'] + | components['schemas']['RangeInvocation'] + | components['schemas']['RangeOfSizeInvocation'] + | components['schemas']['RandomRangeInvocation'] + | components['schemas']['ImageCollectionInvocation'] | components['schemas']['FloatLinearRangeInvocation'] | components['schemas']['StepParamEasingInvocation'] - | components['schemas']['SDXLModelLoaderInvocation'] - | components['schemas']['SDXLRefinerModelLoaderInvocation'] + | components['schemas']['NoiseInvocation'] | components['schemas']['ESRGANInvocation'] + | components['schemas']['InfillColorInvocation'] + | components['schemas']['InfillTileInvocation'] + | components['schemas']['InfillPatchMatchInvocation'] | components['schemas']['GraphInvocation'] | components['schemas']['IterateInvocation'] | components['schemas']['CollectInvocation'] @@ -7718,7 +7640,7 @@ export type operations = { /** @description Successful Response */ 200: { content: { - 'application/json': unknown; + 'application/json': components['schemas']['ImagesUpdatedFromListResult']; }; }; /** @description Validation Error */ @@ -7740,7 +7662,7 @@ export type operations = { /** @description Successful Response */ 200: { content: { - 'application/json': unknown; + 'application/json': components['schemas']['ImagesUpdatedFromListResult']; }; }; /** @description Validation Error */