# Cria ou atualiza composições Atualiza ou insere itens na lista de composições de um produto. Esse endpoint deleta todos os componentes que não estiverem na lista de componentes informada. Importante: - O produto que receberá os componentes deve ser COMBO ou PROCESSO-PRODUTIVO - Todos os produtos na lista de componentes devem ser do tipo componente - flg_component = true - composition_type = 0 - Produtos com grade de preços não podem ter composições - Se o campo id for informado, o sistema fará um update da composição existente - Se o campo id não for informado, o sistema fará um insert de uma nova composição Endpoint: PUT /api/v3/products/{productId}/compositions Version: 3.0.0 Security: OAuth2 ## Path parameters: - `productId` (integer, required) Identificador único do produto. Example: 3 ## Request fields (application/json): - `max_remove_components` (integer, required) Número máximo de componentes que podem ser removidos. Example: 4 - `components` (array, required) Lista de componentes do produto. - `components.id` (integer) Identificador único da associação do componente com o produto. Se informado, o sistema fará um update da composição existente. Se não informado, o sistema fará um insert de uma nova composição. Example: 2 - `components.component_id` (integer, required) Identificador do produto a ser associado como componente. Example: 5 - `components.amount` (number, required) Quantidade de itens do componente na venda do produto principal. Example: 1.45 - `components.is_optional` (boolean, required) Indica se o componente é opcional ou obrigatório. Example: true - `components.value` (object, required) Valor unitário do produto na associação do componente com o produto. Esse valor pode ser diferente do valor original do produto. - `components.value.amount` (number, required) Valor expresso como um número decimal das principais unidades monetárias Example: 99.95 - `components.value.currency` (string, required) Código de moeda de 3 letras conforme definido pela ISO-4217 Example: "BRL" - `components.order` (integer, required) Indica a posição de ordenação do componente em listagens Example: 1 ## Response 200 fields (application/json): - `data` (object) Dados do produto com suas composições atualizadas. - `data.product` (object) Informações do produto - `data.product.id` (integer) ID do produto Example: 3 - `data.product.name` (string) Nome do produto Example: "Travesseiro" - `data.product.sku` (string) SKU do produto Example: "3" - `data.product.category` (object) - `data.product.category.id` (integer) Example: 7 - `data.product.category.name` (string) Example: "Mercadoria para Revenda" - `data.product.image_url` (string) URL da imagem do produto Example: "https://example.com/image.jpg" - `data.product.unitary_value` (object) Valor unitário do produto - `data.product.unitary_value.amount` (number, required) Valor expresso como um número decimal das principais unidades monetárias Example: 99.95 - `data.product.unitary_value.currency` (string, required) Código de moeda de 3 letras conforme definido pela ISO-4217 Example: "BRL" - `data.max_remove_components` (integer) Número máximo de componentes que podem ser removidos Example: 4 - `data.compositions` (array) Lista das composições do produto - `data.compositions.id` (integer) ID da composição Example: 1382 - `data.compositions.id_component` (integer) ID do produto componente Example: 5 - `data.compositions.amount` (number) Quantidade do componente Example: 1.45 - `data.compositions.value` (object) Valor do componente - `data.compositions.disabled` (boolean) Se o componente está desabilitado - `data.compositions.is_optional` (boolean) Se o componente é opcional Example: true - `data.compositions.order` (integer) Ordem do componente Example: 1 ## Response 400 fields (application/json): - `code` (string, required) Código de erro. Example: "missing_headers" - `message` (string) Descrição do erro. Example: "error message" - `meta` (array) Dados adicionais sobre o erro. ## Response 422 fields (application/json): - `code` (string, required) Código de erro. Example: "uneditable_entity" - `message` (string) Descrição do erro. Example: "description error" - `meta` (array) Dados adicionais sobre o erro. - `meta.field` (string, required) Nome do campo no qual existe um erro de validação. Example: "name" - `meta.validations` (array) - `meta.validations.type` (string, required) Tipo da validação aplicada. Example: "Required" - `meta.validations.value` (array) Tipo de valor aplicável (esse campo pode ser vazio). ## Response 401 fields ## Response 404 fields