{"info":{"version":"v1","description":"API-first Phoenix backend for product intake, AI processing, storefront management, exports, and imports.","title":"ResellerIO API"},"components":{"schemas":{"ErrorEnvelope":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","detail","status"],"properties":{"code":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"}},"additionalProperties":true}}},"LimitExceededResponse":{"type":"object","required":["error","operation","used","limit","upgrade_url"],"properties":{"error":{"const":"limit_exceeded","type":"string"},"used":{"type":"integer"},"operation":{"type":"string"},"limit":{"type":"integer"},"upgrade_url":{"type":"string"}}},"SuccessEnvelope":{"type":"object","required":["data"],"properties":{"data":{"type":"object","additionalProperties":true}}},"ValidationErrorEnvelope":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","detail","status","fields"],"properties":{"code":{"const":"validation_failed","type":"string"},"status":{"const":422,"type":"integer"},"fields":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"detail":{"type":"string"}},"additionalProperties":true}}}},"securitySchemes":{"BearerAuth":{"scheme":"bearer","type":"http","bearerFormat":"token"}}},"paths":{"/api/v1/storefront/pages":{"get":{"description":"Lists the authenticated user's storefront pages in display order.","parameters":[],"summary":"List storefront pages","tags":["Storefront"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1StorefrontPages","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"description":"Creates one storefront page.","parameters":[],"summary":"Create storefront page","tags":["Storefront"],"requestBody":{"description":"Storefront page payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"page":{"title":"About","body":"We source collectible pieces with verified condition notes.","slug":"about"}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1StorefrontPages","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/storefront/assets/{kind}":{"delete":{"description":"Deletes one storefront branding asset by kind.","parameters":[{"in":"path","name":"kind","description":"kind value.","required":true,"schema":{"type":"string","enum":["logo","header"]}}],"summary":"Delete storefront asset","tags":["Storefront"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1StorefrontAssetsByKind","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/inquiries":{"get":{"description":"Lists storefront inquiries for the authenticated user with search and pagination.","parameters":[],"summary":"List inquiries","tags":["Inquiries"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1Inquiries","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/storefront/pages/order":{"put":{"description":"Sets display positions for storefront pages using an ordered list of page ULIDs.","parameters":[],"summary":"Reorder storefront pages","tags":["Storefront"],"requestBody":{"description":"Page ULID order","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"page_ids":["01HZY3X6J4T4QX3W7N6M8P1C2E","01HZY3X6J4T4QX3W7N6M8P1C2D","01HZY3X6J4T4QX3W7N6M8P1C2F"]}}}},"security":[{"BearerAuth":[]}],"operationId":"putApiV1StorefrontPagesOrder","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/imports/{id}":{"get":{"description":"Returns one import request for the authenticated user.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Get import","tags":["Imports"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1ImportsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/generate_lifestyle_images":{"post":{"description":"Starts manual lifestyle-image generation for a review-ready product.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Generate lifestyle images","tags":["Lifestyle Images"],"requestBody":{"description":"Optional lifestyle scene selection","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"scene_key":"modern-living-room"}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdGenerateLifestyleImages","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Usage limit exceeded for the current plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitExceededResponse"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/images/{image_id}/storefront":{"patch":{"description":"Updates storefront visibility and display order for one product image.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}},{"in":"path","name":"image_id","description":"Product image ULID.","required":true,"schema":{"type":"string"}}],"summary":"Update storefront image settings","tags":["Product Images"],"requestBody":{"description":"Storefront visibility and ordering values","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"storefront_position":1,"storefront_visible":true}}}},"security":[{"BearerAuth":[]}],"operationId":"patchApiV1ProductsByIdImagesByImageIdStorefront","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/auth/login":{"post":{"description":"Authenticates a user and returns a bearer token.","parameters":[],"summary":"Log in","tags":["Authentication"],"requestBody":{"description":"Login payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"password":"very-secure-password","email":"seller@example.com","device_name":"iPhone"}}}},"operationId":"postApiV1AuthLogin","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/images/storefront_order":{"put":{"description":"Sets storefront_position for an ordered list of product-image ULIDs.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Reorder storefront images","tags":["Product Images"],"requestBody":{"description":"Image ULID order","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"image_ids":["01HZY3T3R6Z0D3X9B7QY5G1W9M","01HZY3T3R6Z0D3X9B7QY5G1W9N","01HZY3T3R6Z0D3X9B7QY5G1W9P"]}}}},"security":[{"BearerAuth":[]}],"operationId":"putApiV1ProductsByIdImagesStorefrontOrder","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/me":{"get":{"description":"Returns the authenticated user and marketplace settings.","parameters":[],"summary":"Get current user","tags":["User"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1Me","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"patch":{"description":"Updates the authenticated user's marketplace settings.","parameters":[],"summary":"Update current user","tags":["User"],"requestBody":{"description":"User marketplace preferences","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"user":{"selected_marketplaces":["ebay","mercari","etsy"]}}}}},"security":[{"BearerAuth":[]}],"operationId":"patchApiV1Me","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/product_tabs/{id}":{"delete":{"description":"Deletes one seller-defined product tab.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete product tab","tags":["Product Tabs"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1ProductTabsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"patch":{"description":"Updates one seller-defined product tab.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Update product tab","tags":["Product Tabs"],"requestBody":{"description":"Product tab payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"product_tab":{"name":"Summer edit"}}}}},"security":[{"BearerAuth":[]}],"operationId":"patchApiV1ProductTabsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/health":{"get":{"description":"Returns service health and application version information.","parameters":[],"summary":"Get service health","tags":["System"],"operationId":"getApiV1Health","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}}}}},"/api/v1/product_tabs":{"get":{"description":"Lists seller-defined product tabs for the authenticated user.","parameters":[],"summary":"List product tabs","tags":["Product Tabs"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1ProductTabs","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"description":"Creates one seller-defined product tab.","parameters":[],"summary":"Create product tab","tags":["Product Tabs"],"requestBody":{"description":"Product tab payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"product_tab":{"name":"New arrivals"}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductTabs","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/storefront/assets/{kind}/prepare_upload":{"post":{"description":"Creates or replaces a storefront logo or header asset record and returns a signed upload instruction.","parameters":[{"in":"path","name":"kind","description":"kind value.","required":true,"schema":{"type":"string","enum":["logo","header"]}}],"summary":"Prepare storefront asset upload","tags":["Storefront"],"requestBody":{"description":"Storefront asset upload payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"asset":{"byte_size":48000,"filename":"logo.png","width":400,"content_type":"image/png","height":400}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1StorefrontAssetsByKindPrepareUpload","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/reprocess":{"post":{"description":"Restarts the core AI pipeline for one product.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Reprocess product","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdReprocess","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Usage limit exceeded for the current plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitExceededResponse"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/lifestyle_generation_runs":{"get":{"description":"Lists dedicated lifestyle-image generation runs for one product.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"List lifestyle generation runs","tags":["Lifestyle Images"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1ProductsByIdLifestyleGenerationRuns","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/mark_sold":{"post":{"description":"Marks one product as sold.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Mark product sold","tags":["Products"],"requestBody":{"description":"Optional seller-managed sold fields","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"product":{"sold_at":"2026-04-01","sold_price":"185.00"}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdMarkSold","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/products/{id}":{"delete":{"description":"Deletes one product and its related records.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete product","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1ProductsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"get":{"description":"Returns one product for the authenticated user.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Get product","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1ProductsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"patch":{"description":"Updates seller-managed product fields, storefront publication flags, and marketplace external URLs.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Update product","tags":["Products"],"requestBody":{"description":"Seller-managed product fields","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"product":{"title":"Vintage Coach shoulder bag","tags":["vintage","leather"],"storefront_enabled":true},"marketplace_external_urls":{"ebay":"https://www.ebay.com/itm/1234567890"}}}}},"security":[{"BearerAuth":[]}],"operationId":"patchApiV1ProductsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/products/{id}/generated_images/{image_id}":{"delete":{"description":"Deletes one generated lifestyle preview.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}},{"in":"path","name":"image_id","description":"Product image ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete generated image","tags":["Lifestyle Images"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1ProductsByIdGeneratedImagesByImageId","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/unarchive":{"post":{"description":"Restores one archived product.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Unarchive product","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdUnarchive","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/storefront":{"get":{"description":"Returns the authenticated user's storefront configuration and the available theme presets.","parameters":[],"summary":"Get storefront","tags":["Storefront"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1Storefront","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"put":{"description":"Creates or updates the authenticated user's storefront and returns the available theme presets.","parameters":[],"summary":"Create or update storefront","tags":["Storefront"],"requestBody":{"description":"Storefront payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"storefront":{"description":"Curated vintage and designer pieces","title":"Vintage Vault","slug":"vintage-vault","theme_id":"desert-clay"}}}}},"security":[{"BearerAuth":[]}],"operationId":"putApiV1Storefront","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/storefront/pages/{page_id}":{"delete":{"description":"Deletes one storefront page.","parameters":[{"in":"path","name":"page_id","description":"Storefront page ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete storefront page","tags":["Storefront"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1StorefrontPagesByPageId","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"patch":{"description":"Updates one storefront page.","parameters":[{"in":"path","name":"page_id","description":"Storefront page ULID.","required":true,"schema":{"type":"string"}}],"summary":"Update storefront page","tags":["Storefront"],"requestBody":{"description":"Storefront page payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"page":{"title":"Shipping","body":"Orders ship within two business days."}}}}},"security":[{"BearerAuth":[]}],"operationId":"patchApiV1StorefrontPagesByPageId","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/openapi.json":{"get":{"description":"Returns the OpenAPI 3.1 document for the current API version.","parameters":[],"summary":"Get OpenAPI document","tags":["System"],"operationId":"getApiV1Openapi.json","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v1/exports/{id}":{"get":{"description":"Returns one export request for the authenticated user.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Get export","tags":["Exports"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1ExportsById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1":{"get":{"description":"Returns API metadata and the list of currently available endpoints.","parameters":[],"summary":"Get API metadata","tags":["System"],"operationId":"getApiV1","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}}}}},"/api/v1/me/usage":{"get":{"description":"Returns monthly usage counters, plan limits, and addon credits.","parameters":[],"summary":"Get monthly usage","tags":["User"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1MeUsage","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/imports":{"post":{"description":"Queues a ResellerIO ZIP import for the authenticated user using Products.xls, manifest.json, and images.","parameters":[],"summary":"Request import","tags":["Imports"],"requestBody":{"description":"Import payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"import":{"filename":"batch.zip","archive_base64":"<base64 encoded zip>"}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1Imports","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/images/{image_id}":{"delete":{"description":"Deletes one uploaded product image and its processed variants.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}},{"in":"path","name":"image_id","description":"Product image ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete product image","tags":["Product Images"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1ProductsByIdImagesByImageId","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/finalize_uploads":{"post":{"description":"Marks uploaded product images as ready for processing.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Finalize uploads","tags":["Products"],"requestBody":{"description":"List of uploaded files to finalize","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"uploads":[{"id":"01HZY3T3R6Z0D3X9B7QY5G1W9M","checksum":"abc123","width":1200,"height":1600}]}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdFinalizeUploads","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Usage limit exceeded for the current plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitExceededResponse"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/archive":{"post":{"description":"Archives one product.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Archive product","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdArchive","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/exports":{"post":{"description":"Queues a filtered ZIP export for the authenticated user with optional saved name and filter params.","parameters":[],"summary":"Request export","tags":["Exports"],"requestBody":{"description":"Optional export name and filters","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"export":{"name":"Poshmark-ready","filters":{"status":"ready","product_tab_id":"01HZY3V2J4T4QX3W7N6M8P1C2D"}}}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1Exports","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/auth/register":{"post":{"description":"Creates a user account and returns a bearer token.","parameters":[],"summary":"Register an account","tags":["Authentication"],"requestBody":{"description":"Registration payload","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"password":"very-secure-password","email":"seller@example.com","selected_marketplaces":["ebay","depop","poshmark"],"device_name":"iPhone"}}}},"operationId":"postApiV1AuthRegister","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}}}}},"/api/v1/products/{id}/generated_images/{image_id}/approve":{"post":{"description":"Marks one generated lifestyle preview as seller-approved.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}},{"in":"path","name":"image_id","description":"Product image ULID.","required":true,"schema":{"type":"string"}}],"summary":"Approve generated image","tags":["Lifestyle Images"],"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdGeneratedImagesByImageIdApprove","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products":{"get":{"description":"Lists products for the authenticated user with filtering, sorting, and pagination.","parameters":[{"in":"query","name":"page","description":"Page number for paginated results.","required":false,"schema":{"type":"integer","minimum":1}},{"in":"query","name":"page_size","description":"Number of products per page.","required":false,"schema":{"type":"integer","minimum":1}},{"in":"query","name":"status","description":"Filter by product status.","required":false,"schema":{"type":"string"}},{"in":"query","name":"query","description":"Free-text search query.","required":false,"schema":{"type":"string"}},{"in":"query","name":"product_tab_id","description":"Filter by product tab ULID.","required":false,"schema":{"type":"string"}},{"in":"query","name":"updated_from","description":"Filter by update date lower bound in ISO-8601 date format.","required":false,"schema":{"type":"string","format":"date"}},{"in":"query","name":"updated_to","description":"Filter by update date upper bound in ISO-8601 date format.","required":false,"schema":{"type":"string","format":"date"}},{"in":"query","name":"sort","description":"Sort field.","required":false,"schema":{"type":"string"}},{"in":"query","name":"dir","description":"Sort direction.","required":false,"schema":{"type":"string","enum":["asc","desc"]}}],"summary":"List products","tags":["Products"],"security":[{"BearerAuth":[]}],"operationId":"getApiV1Products","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"post":{"description":"Creates a product and optionally returns signed upload instructions.","parameters":[],"summary":"Create product","tags":["Products"],"requestBody":{"description":"Product payload and optional upload descriptors","required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"product":{"title":"Vintage Coach bag","brand":"Coach"},"uploads":[{"filename":"front.jpg","content_type":"image/jpeg"}]}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1Products","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/v1/inquiries/{id}":{"delete":{"description":"Deletes one storefront inquiry for the authenticated user.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Delete inquiry","tags":["Inquiries"],"security":[{"BearerAuth":[]}],"operationId":"deleteApiV1InquiriesById","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/v1/products/{id}/prepare_uploads":{"post":{"description":"Creates upload placeholders for an existing product and returns signed upload instructions.","parameters":[{"in":"path","name":"id","description":"Primary resource ULID.","required":true,"schema":{"type":"string"}}],"summary":"Prepare product uploads","tags":["Products"],"requestBody":{"description":"List of upload intents","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"uploads":[{"byte_size":345678,"filename":"side.jpg","content_type":"image/jpeg"}]}}}},"security":[{"BearerAuth":[]}],"operationId":"postApiV1ProductsByIdPrepareUploads","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Usage limit exceeded for the current plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitExceededResponse"}}}},"404":{"description":"Requested resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"422":{"description":"Request could not be completed in the current resource state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}},"tags":[{"name":"Authentication"},{"name":"Exports"},{"name":"Imports"},{"name":"Inquiries"},{"name":"Lifestyle Images"},{"name":"Product Images"},{"name":"Product Tabs"},{"name":"Products"},{"name":"Storefront"},{"name":"System"},{"name":"User"}],"externalDocs":{"description":"Interactive API docs","url":"/docs/api"},"openapi":"3.1.0","servers":[{"description":"Current environment","url":"/"}]}