{"openapi":"3.0.0","paths":{"/partner/v1/items":{"get":{"operationId":"PartnerController_listItems","parameters":[{"name":"cursor","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"api-key":[]}],"summary":"Catalogue du vendeur (incl. désactivés, keyset)","tags":["partner"]},"post":{"operationId":"PartnerController_createItem","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerCreateItemDto"}}}},"responses":{"201":{"description":""}},"security":[{"api-key":[]}],"summary":"Créer un article","tags":["partner"]}},"/partner/v1/items/{id}":{"patch":{"operationId":"PartnerController_updateItem","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerUpdateItemDto"}}}},"responses":{"200":{"description":""}},"security":[{"api-key":[]}],"summary":"Mettre à jour un article (partiel : prix, stock…)","tags":["partner"]},"delete":{"operationId":"PartnerController_removeItem","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"api-key":[]}],"summary":"Retirer un article (soft delete + désindexation)","tags":["partner"]}},"/partner/v1/orders":{"get":{"operationId":"PartnerController_listOrders","parameters":[{"name":"cursor","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"api-key":[]}],"summary":"Commandes contenant les articles du vendeur (keyset)","tags":["partner"]}},"/partner/v1/sandbox/orders":{"post":{"operationId":"PartnerController_simulateOrder","parameters":[],"responses":{"201":{"description":""}},"security":[{"api-key":[]}],"summary":"Créer une commande de TEST et déclencher son webhook (clé sandbox requise)","tags":["partner"]}},"/partner/v1/sandbox/reset":{"post":{"operationId":"PartnerController_resetSandbox","parameters":[],"responses":{"201":{"description":""}},"security":[{"api-key":[]}],"summary":"Effacer mes commandes de test","tags":["partner"]}},"/partner/v1/orders/{id}/advance":{"post":{"operationId":"PartnerController_advanceOrder","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"api-key":[]}],"summary":"Faire avancer une commande depuis son propre système (préparée → expédiée → livrée)","tags":["partner"]}},"/connectors/inbound/{connectionId}":{"post":{"operationId":"InboundWebhookController_receive","parameters":[{"name":"connectionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"202":{"description":""}},"summary":"Notification de changement depuis la boutique du marchand","tags":["connectors"]}},"/seller/webhooks":{"get":{"operationId":"WebhooksController_list","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Mes abonnements webhooks","tags":["webhooks"]},"post":{"operationId":"WebhooksController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEndpointDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Créer un abonnement (le secret n’est affiché qu’ici)","tags":["webhooks"]}},"/seller/webhooks/{id}/test":{"post":{"operationId":"WebhooksController_test","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"summary":"Envoyer un évènement de test à cette URL","tags":["webhooks"]}},"/seller/webhooks/deliveries":{"get":{"operationId":"WebhooksController_deliveries","parameters":[{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"summary":"Journal des livraisons (ce que tu as reçu, et quand)","tags":["webhooks"]}},"/seller/webhooks/{id}":{"delete":{"operationId":"WebhooksController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["webhooks"]}}},"info":{"title":"Générale CI — API partenaire","description":"Endpoints destinés aux boutiques et à leurs intégrations. Guide complet : https://generale-ci.com/docs","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"PresignDto":{"type":"object","properties":{}},"RegisterDto":{"type":"object","properties":{"fullName":{"type":"string","example":"Awa Konaté"},"phone":{"type":"string","example":"+2250708123456"},"password":{"type":"string","example":"motdepasse123"}},"required":["fullName","phone","password"]},"LoginDto":{"type":"object","properties":{"phone":{"type":"string","example":"+2250708123456"},"password":{"type":"string"}},"required":["phone","password"]},"LoginEmailDto":{"type":"object","properties":{"email":{"type":"string","example":"admin@generale-ci.com"},"password":{"type":"string"}},"required":["email","password"]},"RequestOtpDto":{"type":"object","properties":{"phone":{"type":"string","example":"+2250708123456"},"purpose":{"type":"string","enum":["REGISTER","LOGIN","RESET_PASSWORD"],"default":"REGISTER"}},"required":["phone","purpose"]},"VerifyOtpDto":{"type":"object","properties":{"phone":{"type":"string","example":"+2250708123456"},"code":{"type":"string","example":"123456"},"purpose":{"type":"string","enum":["REGISTER","LOGIN","RESET_PASSWORD"],"default":"REGISTER"}},"required":["phone","code","purpose"]},"RefreshDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"UpdateProfileDto":{"type":"object","properties":{"fullName":{"type":"string"},"location":{"type":"string"}}},"UpdateDeviceLocationDto":{"type":"object","properties":{"lat":{"type":"number","example":5.36},"lng":{"type":"number","example":-3.97},"accuracy":{"type":"number","description":"Précision GPS en mètres"}},"required":["lat","lng"]},"UpsertAddressDto":{"type":"object","properties":{"label":{"type":"string"},"recipient":{"type":"string"},"line":{"type":"string"},"city":{"type":"string"},"phone":{"type":"string"},"isDefault":{"type":"boolean"},"communeSlug":{"type":"string","example":"cocody","description":"Slug commune du référentiel Grand Abidjan"},"quartier":{"type":"string"},"quartierId":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"placeLabel":{"type":"string"}},"required":["label","recipient","line","city","phone","communeSlug"]},"UpdateAddressDto":{"type":"object","properties":{"label":{"type":"string"},"recipient":{"type":"string"},"line":{"type":"string"},"city":{"type":"string"},"phone":{"type":"string"},"isDefault":{"type":"boolean"},"communeSlug":{"type":"string","description":"Slug commune du référentiel Grand Abidjan"},"quartier":{"type":"string"},"quartierId":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"placeLabel":{"type":"string"}}},"RegisterDeviceDto":{"type":"object","properties":{"token":{"type":"string","example":"ExpoPushToken[xxxxxxxx]"},"platform":{"type":"string","enum":["IOS","ANDROID"]}},"required":["token","platform"]},"UpdateNotificationPrefDto":{"type":"object","properties":{"orders":{"type":"boolean"},"live":{"type":"boolean"},"promo":{"type":"boolean"},"ai":{"type":"boolean"}}},"UpsertItemDto":{"type":"object","properties":{"kind":{"type":"string","enum":["product","service"]},"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number"},"oldPrice":{"type":"number"},"priceSuffix":{"type":"string"},"availability":{"type":"string","description":"Disponibilité d’un service, texte FR lisible (« Du 13 juil. au 30 août »)."},"categoryId":{"type":"string"},"stock":{"type":"number"},"imageUrl":{"type":"string","description":"URL publique de la photo (upload presign products)."},"images":{"description":"Galerie d’images (URLs publiques) ; la 1ʳᵉ sert de couverture si imageUrl est absent.","type":"array","items":{"type":"string"}},"active":{"type":"boolean","description":"Activer/désactiver l’article sans le supprimer."},"gradient":{"type":"array","items":{"type":"string"}},"variants":{"type":"array","items":{"type":"string"}},"labels":{"type":"array","items":{"type":"string"}},"badges":{"type":"array","items":{"type":"string"}},"condition":{"type":"string","enum":["NEUF","COMME_NEUF","PREMIER_CHOIX","DEUXIEME_CHOIX","BON_ETAT","ETAT_CORRECT"],"description":"État friperie / seconde main (null = neuf/non précisé)."},"conditionNote":{"type":"string","description":"Note libre décrivant l’état / un défaut du produit d’occasion."},"deliveryLarge":{"type":"boolean","description":"Gros colis ne passant pas à moto : la boutique assure la livraison et les retours (le partenaire CLT n’intervient pas). false = colis moto (grille CLT auto)."},"shopDeliveryFee":{"type":"number","description":"Tarif de livraison boutique (FCFA) quand deliveryLarge = true."}},"required":["kind","name","description","price"]},"AdTargetingDto":{"type":"object","properties":{"communes":{"description":"Slugs de communes ciblées","type":"array","items":{"type":"string"}},"categoryIds":{"description":"Ids de catégories de navigation ciblées","type":"array","items":{"type":"string"}},"kinds":{"type":"array","items":{"type":"string","enum":["PRODUCT","SERVICE"]}}}},"CreateAdCampaignDto":{"type":"object","properties":{"itemId":{"type":"string","description":"Article du vendeur à mettre en avant"},"days":{"type":"number","minimum":1,"maximum":30,"description":"Durée de diffusion en jours"},"targeting":{"$ref":"#/components/schemas/AdTargetingDto"}},"required":["itemId","days"]},"UpdateAdCampaignDto":{"type":"object","properties":{"cancel":{"type":"boolean","description":"Annule la campagne"}}},"UpsertAdminDto":{"type":"object","properties":{"phone":{"type":"string","description":"Requis à la création (identifiant unique en base)"}}},"SetConfigDto":{"type":"object","properties":{}},"BanUserDto":{"type":"object","properties":{"reason":{"type":"string"}}},"SetRoleDto":{"type":"object","properties":{}},"SetItemActiveDto":{"type":"object","properties":{"reason":{"type":"string","description":"Motif de la désactivation (tracé)"}}},"UpsertCommissionRateDto":{"type":"object","properties":{}},"SetExemptDto":{"type":"object","properties":{}},"CreateReviewDto":{"type":"object","properties":{"rating":{"type":"number","minimum":1,"maximum":5,"example":5},"comment":{"type":"string","maxLength":2000}},"required":["rating"]},"SignalLabelDto":{"type":"object","properties":{}},"SignalColorDto":{"type":"object","properties":{}},"ImageSearchSignalsDto":{"type":"object","properties":{"labels":{"type":"array","items":{"$ref":"#/components/schemas/SignalLabelDto"}},"colors":{"type":"array","items":{"$ref":"#/components/schemas/SignalColorDto"}},"hasBarcode":{"type":"object"}},"required":["labels","colors","hasBarcode"]},"ScanDto":{"type":"object","properties":{"imageUri":{"type":"string"},"signals":{"$ref":"#/components/schemas/ImageSearchSignalsDto"}}},"CartItemDto":{"type":"object","properties":{"itemId":{"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"priceSuffix":{"type":"string"},"kind":{"type":"string","enum":["product","service"]},"gradient":{"type":"array","items":{"type":"string"}},"imageUrl":{"type":"string"},"qty":{"type":"number"},"variant":{"type":"string"},"bookingStart":{"type":"string","description":"Début de réservation (service), date ISO 8601"},"bookingEnd":{"type":"string","description":"Fin de réservation (service), date ISO 8601"}},"required":["itemId","name","price","kind","gradient","qty"]},"CreateOrderDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CartItemDto"}},"paymentMethod":{"type":"string","enum":["wave","cod"]},"deliveryFee":{"type":"number","description":"Ignoré — frais de livraison calculés côté serveur selon la commune."},"promoCode":{"type":"string","description":"Code promo (un seul par commande)"},"useCredit":{"type":"boolean","description":"Utiliser le crédit du wallet"},"addressId":{"type":"string","description":"Id de l’adresse de livraison"},"liveRoomId":{"type":"string","description":"Achat direct pendant un live : id de la salle (diffusion du stock temps réel)."}},"required":["items","paymentMethod"]},"DeliveryQuoteItemDto":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]},"DeliveryQuoteDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeliveryQuoteItemDto"}},"communeSlug":{"type":"string","description":"Slug commune du client (adresse sélectionnée)"}},"required":["items"]},"EnhanceImageDto":{"type":"object","properties":{"imageUrl":{"type":"string","description":"URL publique de la photo source (upload presign products)."},"style":{"type":"string","enum":["studio","situation","lifestyle"],"description":"Style de mise en scène souhaité."}},"required":["imageUrl","style"]},"AttachReferralDto":{"type":"object","properties":{}},"ToggleOnlineDto":{"type":"object","properties":{}},"DeliverDto":{"type":"object","properties":{}},"FailDeliveryDto":{"type":"object","properties":{}},"AssignDriverDto":{"type":"object","properties":{}},"CreateExternalDeliveryDto":{"type":"object","properties":{}},"CreateDriverDto":{"type":"object","properties":{}},"UpdateDriverDto":{"type":"object","properties":{}},"SettleDto":{"type":"object","properties":{}},"BootstrapDto":{"type":"object","properties":{}},"CartLineDto":{"type":"object","properties":{"itemId":{"type":"string"},"sellerId":{"type":"string"},"categoryId":{"type":"string"},"unitPrice":{"type":"number"},"qty":{"type":"number"}},"required":["itemId","sellerId","unitPrice","qty"]},"PreviewIncentiveDto":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/CartLineDto"}},"code":{"type":"string","description":"Un seul code par commande"},"useCredit":{"type":"boolean","description":"Appliquer le crédit du wallet"}},"required":["lines"]},"UpsertPromoCodeDto":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string","enum":["PERCENT","FIXED"]},"value":{"type":"number","description":"% si PERCENT, FCFA si FIXED"},"categoryId":{"type":"string"},"minOrder":{"type":"number"},"maxUsesTotal":{"type":"number"},"maxUsesPerUser":{"type":"number"},"budgetCap":{"type":"number"},"startsAt":{"type":"string"},"endsAt":{"type":"string"},"active":{"type":"boolean"}},"required":["code","type","value"]},"UpdateReferralRuleDto":{"type":"object","properties":{"refereeAmount":{"type":"number"},"referrerAmount":{"type":"number"},"minOrderAmount":{"type":"number"},"creditTtlDays":{"type":"number"},"active":{"type":"boolean"}}},"ImportCodesDto":{"type":"object","properties":{}},"CreateApiKeyDto":{"type":"object","properties":{"sandbox":{"type":"boolean"},"name":{"type":"string","example":"Intégration ERP","description":"Libellé de la clé."},"scopes":{"type":"array","example":["items:read","items:write"],"description":"Portées accordées à la clé.","items":{"type":"string","enum":["items:read","items:write","orders:read","orders:write"]}}},"required":["name","scopes"]},"CreateConnectionDto":{"type":"object","properties":{"platform":{"type":"string","enum":["SHOPIFY","WOOCOMMERCE","ODOO"]},"config":{"type":"object","additionalProperties":true,"description":"Identifiants de la plateforme (forme selon `platform`)."}},"required":["platform","config"]},"PartnerCreateItemDto":{"type":"object","properties":{"kind":{"type":"string","enum":["product","service"]},"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number"},"oldPrice":{"type":"number"},"priceSuffix":{"type":"string"},"availability":{"type":"string","description":"Disponibilité d’un service, texte FR lisible (« Du 13 juil. au 30 août »)."},"categoryId":{"type":"string"},"stock":{"type":"number"},"imageUrl":{"type":"string","description":"URL publique de la photo (upload presign products)."},"images":{"description":"Galerie d’images (URLs publiques) ; la 1ʳᵉ sert de couverture si imageUrl est absent.","type":"array","items":{"type":"string"}},"active":{"type":"boolean","description":"Activer/désactiver l’article sans le supprimer."},"gradient":{"type":"array","items":{"type":"string"}},"variants":{"type":"array","items":{"type":"string"}},"labels":{"type":"array","items":{"type":"string"}},"badges":{"type":"array","items":{"type":"string"}},"condition":{"type":"string","enum":["NEUF","COMME_NEUF","PREMIER_CHOIX","DEUXIEME_CHOIX","BON_ETAT","ETAT_CORRECT"],"description":"État friperie / seconde main (null = neuf/non précisé)."},"conditionNote":{"type":"string","description":"Note libre décrivant l’état / un défaut du produit d’occasion."},"deliveryLarge":{"type":"boolean","description":"Gros colis ne passant pas à moto : la boutique assure la livraison et les retours (le partenaire CLT n’intervient pas). false = colis moto (grille CLT auto)."},"shopDeliveryFee":{"type":"number","description":"Tarif de livraison boutique (FCFA) quand deliveryLarge = true."},"sourceRef":{"type":"string","description":"Référence du produit dans ton système (SKU, id interne)"}},"required":["kind","name","description","price"]},"PartnerUpdateItemDto":{"type":"object","properties":{"kind":{"type":"string","enum":["product","service"]},"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number"},"oldPrice":{"type":"number"},"priceSuffix":{"type":"string"},"availability":{"type":"string","description":"Disponibilité d’un service, texte FR lisible (« Du 13 juil. au 30 août »)."},"categoryId":{"type":"string"},"stock":{"type":"number"},"imageUrl":{"type":"string","description":"URL publique de la photo (upload presign products)."},"images":{"description":"Galerie d’images (URLs publiques) ; la 1ʳᵉ sert de couverture si imageUrl est absent.","type":"array","items":{"type":"string"}},"active":{"type":"boolean","description":"Activer/désactiver l’article sans le supprimer."},"gradient":{"type":"array","items":{"type":"string"}},"variants":{"type":"array","items":{"type":"string"}},"labels":{"type":"array","items":{"type":"string"}},"badges":{"type":"array","items":{"type":"string"}},"condition":{"type":"string","enum":["NEUF","COMME_NEUF","PREMIER_CHOIX","DEUXIEME_CHOIX","BON_ETAT","ETAT_CORRECT"],"description":"État friperie / seconde main (null = neuf/non précisé)."},"conditionNote":{"type":"string","description":"Note libre décrivant l’état / un défaut du produit d’occasion."},"deliveryLarge":{"type":"boolean","description":"Gros colis ne passant pas à moto : la boutique assure la livraison et les retours (le partenaire CLT n’intervient pas). false = colis moto (grille CLT auto)."},"shopDeliveryFee":{"type":"number","description":"Tarif de livraison boutique (FCFA) quand deliveryLarge = true."}}},"CreateCommentDto":{"type":"object","properties":{}},"FollowPrefsDto":{"type":"object","properties":{}},"PinProductDto":{"type":"object","properties":{}},"StartLiveDto":{"type":"object","properties":{}},"PatchLiveDto":{"type":"object","properties":{}},"TrackEventDto":{"type":"object","properties":{}},"UpsertPreferencesDto":{"type":"object","properties":{}},"OpeningHoursDto":{"type":"object","properties":{"days":{"description":"Jours ouverts (1=lun … 7=dim)","type":"array","items":{"type":"number"}},"open":{"type":"string","example":"08:00"},"close":{"type":"string","example":"19:00"}},"required":["days","open","close"]},"CreateSellerDto":{"type":"object","properties":{"name":{"type":"string","example":"Koffi Style"},"communeSlug":{"type":"string","example":"cocody","description":"Slug commune du référentiel Grand Abidjan"},"quartier":{"type":"string","example":"Angré 7e tranche"},"lat":{"type":"number"},"lng":{"type":"number"},"wavePhone":{"type":"string","example":"+225 07 01 23 45 67","description":"Numéro Wave pour recevoir les paiements"},"description":{"type":"string","description":"Présentation courte de la boutique"},"logoUrl":{"type":"string"},"coverUrl":{"type":"string"},"openingHours":{"$ref":"#/components/schemas/OpeningHoursDto"}},"required":["name","communeSlug","wavePhone"]},"UpdateSellerDto":{"type":"object","properties":{"name":{"type":"string"},"communeSlug":{"type":"string"},"quartier":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"wavePhone":{"type":"string"},"description":{"type":"string"},"logoUrl":{"type":"string"},"coverUrl":{"type":"string"},"openingHours":{"$ref":"#/components/schemas/OpeningHoursDto"}}},"RequestPayoutDto":{"type":"object","properties":{}},"SignalDto":{"type":"object","properties":{"type":{"type":"string","enum":["IMPRESSION","VIEW","CLICK","ADD_TO_CART","HEART","COMMENT","PURCHASE","FOLLOW","SHARE"]},"surface":{"type":"string","enum":["HOME","SEARCH","LIVE","SHORT","PRODUCT","CATEGORY"]},"itemId":{"type":"string"},"sellerId":{"type":"string"},"liveRoomId":{"type":"string"},"categoryId":{"type":"string"}},"required":["type","surface"]},"TrackSignalsDto":{"type":"object","properties":{"signals":{"description":"Lot de signaux (max 100)","type":"array","items":{"$ref":"#/components/schemas/SignalDto"}}},"required":["signals"]},"SubmitVerificationDto":{"type":"object","properties":{"idDocKeys":{"description":"Clés d’objet MinIO (privées) des photos de pièce d’identité","type":"array","items":{"type":"string"}},"businessDocKeys":{"description":"Registre de commerce / justificatif d’activité (optionnel)","type":"array","items":{"type":"string"}}},"required":["idDocKeys"]},"ReviewVerificationDto":{"type":"object","properties":{"action":{"type":"string","enum":["approve","reject","revoke"]},"note":{"type":"string","description":"Motif renvoyé au vendeur (rejet / révocation)"}},"required":["action"]},"SetOfficialDto":{"type":"object","properties":{"official":{"type":"boolean"}},"required":["official"]},"ReportIssueDto":{"type":"object","properties":{}},"ResolveIssueDto":{"type":"object","properties":{}},"UpdateWeightsDto":{"type":"object","properties":{}},"CreateOverrideDto":{"type":"object","properties":{}},"CreateEndpointDto":{"type":"object","properties":{}},"ChatAttachmentDto":{"type":"object","properties":{"type":{"type":"string","enum":["image","file"]},"url":{"type":"string","description":"URL publique de la pièce jointe"},"name":{"type":"string"},"mimeType":{"type":"string"}},"required":["type","url"]},"ChatRefDto":{"type":"object","properties":{"itemId":{"type":"string","description":"id de l'article référencé"},"label":{"type":"string","description":"Nom de l'article (aide au contexte)"}},"required":["itemId"]},"ChatInputDto":{"type":"object","properties":{"text":{"type":"string","description":"Message du client (peut être vide si attachments)"},"conversationId":{"type":"string","description":"Fil de conversation (mémoire serveur par thread)"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/ChatAttachmentDto"}},"refs":{"description":"Articles référencés par tap sur une carte","type":"array","items":{"$ref":"#/components/schemas/ChatRefDto"}}},"required":["text"]},"InitUploadDto":{"type":"object","properties":{"contentType":{"type":"string","example":"video/mp4"}},"required":["contentType"]},"SignPartDto":{"type":"object","properties":{"objectKey":{"type":"string"},"uploadId":{"type":"string"},"partNumber":{"type":"number"}},"required":["objectKey","uploadId","partNumber"]},"CompletedPartDto":{"type":"object","properties":{}},"CompleteUploadDto":{"type":"object","properties":{"objectKey":{"type":"string"},"uploadId":{"type":"string"},"parts":{"type":"array","items":{"$ref":"#/components/schemas/CompletedPartDto"}}},"required":["objectKey","uploadId","parts"]},"EditClipDto":{"type":"object","properties":{}},"TextOverlayDto":{"type":"object","properties":{}},"MusicTrackDto":{"type":"object","properties":{}},"CreateShortDto":{"type":"object","properties":{"clips":{"type":"array","items":{"$ref":"#/components/schemas/EditClipDto"}},"textOverlays":{"type":"array","items":{"$ref":"#/components/schemas/TextOverlayDto"}},"musicTrack":{"$ref":"#/components/schemas/MusicTrackDto"},"originalVolume":{"type":"number"},"coverTimeMs":{"type":"number"},"linkedItemId":{"type":"string"}},"required":["clips","textOverlays","originalVolume","coverTimeMs"]}}}}