# Cria novo produto Cria uma novo produto. Endpoint: POST /api/v3/products Version: 3.0.0 Security: OAuth2 ## Header parameters: - `CPlug-Company-Id` (number, required) Id da Empresa (Company). Você pode localizar os IDs das empresas no _endpoint_ de listagem de empresas. Example: 12 - `Idempotency-Key` (string, required) UUID aleatório gerado por você. Nós utilizamos esse header para evitar duplicidade de registros, ou seja, caso você não tenha recebido a resposta de alguma requisição e mandar o mesmo UUID, nós não duplicaremos o registro. ## Request fields (application/json): - `name` (string, required) Nome do produto. Example: "Nome do produto" - `type` (string) Tipo do produto. - simple: Produto simples. - combo: Produto combo. - production_process: Processo produtivo. - automatic_production: Produção automática. - component: Insumo. Enum: "simple", "combo", "production_process", "automatic_production", "component" - `sku` (string, required) Código SKU do produto. Esse código deve ser único. Exemplo: COD-CP-01 Example: "COD-CP-01" - `unitary_value` (object, required) Preço do produto. Esse campo pode ser opcional quando o produto for do tipo "Combo". - `unitary_value.amount` (number, required) Valor expresso como um número decimal das principais unidades monetárias Example: 99.95 - `unitary_value.currency` (string, required) Código de moeda de 3 letras conforme definido pela ISO-4217 Example: "BRL" - `category_id` (integer, required) Identificador da categoria do produto. Example: 1 - `unit_id` (integer, required) Identificador da unidade de medida do produto. Example: 1 - `description` (null,string) Descrição do produto. Example: "Descrição do produto." - `barcodes` (array) Lista dos códigos de barras do produto. Example: ["6683713903949"] - `additionals` (object) Configurações dos produtos adicionais de um produto. - `additionals.min_choices` (integer, required) Número mínimo de produtos adicionais que devem ser selecionado. Se o número mínimo for 0 torna a seleção de produtos adicionais opcional, se o número for maior que 0 torna a seleção obrigatória até o número mínimo de opções selecionadas. - `additionals.max_choices` (integer, required) Número máximo de produtos adicionais que devem ser selecionado. O número máximo deve ser igual ou maior que o número mínimo. Example: 1 - `additionals.charge_from_quantity` (integer) Indica a partir de qual quantidade de adicionais deve iniciar o calculo de cobrança. Se charge_from_quantity for 2, e o forem seleciona 3 adicionais para o produto no valor de 10 BRL, o valor do atributo será equivalente à 10 BRL, e não 30 BRL, pois ele só começa a ser calculado a partir da opção número 3. - `additionals.items` (array, required) Lista de produtos adicionais - `additionals.items.product_id` (integer, required) Identificador do produto adicional associado com o produto principal. Example: 123 - `additionals.items.amount` (number, required) Quantidade de itens do adicional na venda do produto principal. Example: 1 - `additionals.items.waste_amount` (number) Quantidade de desperdício do adicional para geração da venda do produto principal. Example: 0.5 - `additionals.items.max_choices` (integer) Número máximo de adicionais que devem ser selecionado. Example: 1 - `additionals.items.position` (integer) Indica a posição de ordenação do produto adicional em listagens. Example: 1 - `recommendations` (array) Lista de produtos a serem sugeridos como recomendação na venda do produto principal. - `recommendations.product_id` (integer) Identificador do produto a ser recomendado na venda do produto principal. Example: 123 - `recommendations.position` (integer) Indica a posição de ordenação do produto recomendado nas listagens. Example: 1 - `companies` (array) Id da Empresa (Company). Por padrão é considerado a empresa informado no header em CPlug-Company-Id. Você pode localizar os IDs das empresas no _endpoint_ de [listagem de empresas](#tag/Companies/operation/get-companies). Example: [1] - `is_perishable` (boolean) Se este produto é perecível. - `stock_settings` (object) Configurações de estoque do produto. - `stock_settings.is_stock_control` (boolean) Se este produto possui um controle de estoque. Example: true - `stock_settings.is_stock_notification` (boolean) Se este produto tem notificação de estoque. - `stock_settings.min` (integer) Se is_stock_notification = true. Quantidade mínima no estoque. Example: 1 - `stock_settings.max` (integer) Se is_stock_notification = true. Quantidade máxima no estoque. Example: 1 - `kds_ids` (array) Id do KDS. Você pode localizar os IDs dos KDS no _endpoint_ de [listagem de kds](#tag/Kds/operation/get-kds). Example: [1,2,3] - `attributes` (array) ⚠️ DEPRECIADO: Este campo será removido nas próximas versões. Utilize este [endpoint](#tag/Products/operation/put-products-attributes) para adicionar atributos ao produto. Lista de atributos relacionado com o produto. Produtos do tipo "Combo" não podem conter atributos. - `attributes.attribute_id` (integer) Identificador único do atributo. Example: 123 - `attributes.price_calculation_type` (string) Tipo de calculo de preço a ser aplicado nas opções do atributo. - highest: calcula pelo maior valor. - average: calcula pela média dos valores. - proportional: calcula proporcionalmente os valores. - cumulative: calcula a soma dos valores. Enum: "highest", "average", "proportional", "cumulative" - `attributes.min_choices` (integer) Número mínimo de opções que devem ser seleciona no atributo. Se o número mínimo for 0 torna a seleção de atributos opcional, se o número for maior que 0 torna a seleção de atributos obrigatória até o número mínimo de opções selecionadas. - `attributes.max_choices` (integer) Número máximo de opções que devem ser seleciona no atributo. O número máximo deve ser igual ou maior que o número mínimo. Example: 1 - `attributes.charge_from_quantity` (integer) Indica a partir de qual quantidade de atributos deve iniciar o calculo de cobrança pelo atributo selecionado. Se charge_from_quantity for 2, e o forem seleciona 3 opções para o atributo no valor de 10 BRL com o tipo de calculo cumulative, o valor do atributo será equivalente à 10 BRL, e não 30 BRL, pois ele só começa a ser calculado a partir da opção número 3. - `attributes.position` (integer) Indica a posição de ordenação do atributo em listagens Example: 1 - `attributes.options` (array) Lista de opções do atributo. - `attributes.options.option_id` (integer) Identificador único da opção. Example: 123 - `attributes.options.barcode` (string) Código de barras da opção do atributo. Example: "1234567890123" - `attributes.options.unitary_value` (object) Valor unitário da opção na associação do atributo com o produto. Esse valor pode ser diferente do valor do template da opção. - `attributes.options.position` (integer) Indica a posição de ordenação da opção em listagens. Example: 1 - `attributes.options.components` (array) Lista de opções do atributo. - `attributes.options.components.component_id` (integer) Identificador único do componente. Example: 123 - `attributes.options.components.amount` (integer) Quantidade de componentes associados à opção. Example: 1 - `attributes.options.components.is_optional` (boolean) Indica se a opção é opcional. - `components` (array) ⚠️ DEPRECIADO: Este campo será removido nas próximas versões. Utilize este [endpoint](#tag/Products/operation/update-products-compositions) para adicionar componentes ao produto. Lista de componentes do produto. - `components.id` (integer) Identificador único da associação do componente com o produto. Esse compo é readOnly na criação e pode ser informado na edição para atualização. Example: 123 - `components.product_id` (integer) Identificador do produto a ser associado com o produto principal. (Ex: Combo) Example: 123 - `components.unitary_value` (object) Valor unitário do produto na associação do componente com o produto. Esse valor pode ser diferente do valor do valor original do produto. - `components.amount` (number) Quantidade de itens do componente na venda do produto principal (Ex: combo). Example: 1 - `components.waste_amount` (number) Quantidade de desperdício do componente para geração da venda do produto principal (Ex: produto de produção). Example: 0.5 - `components.position` (integer) Indica a posição de ordenação do componente em listagens Example: 1 - `grids` (array) ⚠️ DEPRECIADO: Este campo será removido nas próximas versões. Utilize este [endpoint](#tag/Products/operation/post-products) para adicionar grade de preços ao produto. Lista de grade de preços do produto. Apenas produtos do tipo "Simples" podem conter grade de preços. - `grids.id` (integer) Identificador único da grade de preço. Esse compo é readOnly na criação e pode ser informado na edição para atualização. Example: 123 - `grids.product_id` (integer) Identificador único do produto relacionado a grade de preço. Example: 123 - `grids.order` (integer) Ordem da grade de preço. - `grids.unitary_value` (object) Valor unitário do produto na grade de preço. _Também pode ser interpretado como valor unitário do produto para o conjuntos das opções contida em options desse objeto_. Esse valor pode ser diferente do valor do valor original do produto. - `grids.status` (string) Status da grade de preço. - active: grade de preço disponíveis para venda. - inactive: grade de preço não disponíveis para venda. Enum: "active", "inactive" - `grids.barcode` (string) Código de barras da grade de preço. Example: "1234567890123" - `grids.image` (string) URL da imagem da grade de preço. Example: "https://images.connectplug.com.br/4f01c1252eea.jpg" - `grids.options` (array) Lista de opções que compõe a grade de preço. - `grids.options.name` (string) Nome da opção. Example: "Opção 1" - `grids.options.order` (integer) Ordem do item na grade de preço. ## Response 201 fields (application/json): - `id` (integer, required) Identificador único do produto. Example: 123 - `name` (string, required) Nome do produto. Example: "Nome do produto" - `type` (string) Tipo do produto. - simple: Produto simples. - combo: Produto combo. - production_process: Processo produtivo. - automatic_production: Produção automática. - component: Insumo. Enum: "simple", "combo", "production_process", "automatic_production", "component" - `option_type` (object) Informações sobre as opções do produto. - `option_type.type` (string) Tipo de opção do produto. - simple: Produto sem variações ou grades. - composition: Produto com variações. - grid: Produto com grades. Enum: "simple", "composition", "grid" - `option_type.count` (integer) Quantidade de opções disponíveis para este produto. Para cada type temos: - simple: Sempre será 0 - composition: Será a quantidade de variações disponíveis para este produto. - grid: Será a quantidade de grades disponíveis para este produto. - `sku` (string, required) Código SKU do produto. Esse código deve ser único. Exemplo: COD-CP-01 Example: "COD-CP-01" - `unitary_value` (object, required) Preço do produto. Esse campo pode ser opcional quando o produto for do tipo "Combo". - `unitary_value.amount` (number, required) Valor expresso como um número decimal das principais unidades monetárias Example: 99.95 - `unitary_value.currency` (string, required) Código de moeda de 3 letras conforme definido pela ISO-4217 Example: "BRL" - `category` (object, required) Categoria do produto. - `category.id` (integer) Identificador único da categoria. Example: 1 - `category.name` (string) Nome da categoria. Example: "Nome da categoria" - `unit` (object, required) Unidade de medida do produto. - `unit.id` (integer) Identificador único da unidade de medida. Example: 1 - `unit.name` (string) Nome da unidade de medida, exemplo "quilos". Example: "Kilos" - `unit.abbreviation` (string) A abreviatura da unidade, exemplo "kg". Example: "kg" - `unit.precision` (integer) Um número inteiro entre 0 e 6 que representa o número máximo de posições permitidas após o decimal em quantidades medidas com esta unidade. Por exemplo: - se a precisão for 0, a quantidade pode ser 1, 2, 3, etc. - se a precisão for 1, a quantidade pode ser 0.1, 0.2, 0.3, etc. - se a precisão for 2, a quantidade pode ser 0.01, 0.02, 0.03, etc. Example: 1 - `description` (null,string) Descrição do produto. Example: "Descrição do produto." - `barcodes` (array) Lista dos códigos de barras do produto. Example: ["6683713903949"] - `attributes` (array) Lista de atributos relacionado com o produto. Produtos do tipo "Combo" não podem conter atributos. - `attributes.attribute_id` (integer) Identificador único do atributo. Example: 123 - `attributes.name` (string) Nome do atributo. Example: "Nome do atributo" - `attributes.code` (string) Código do atributo. Esse código deve ser único. Exemplo: COD-CP-01 Example: "COD-CP-01" - `attributes.price_calculation_type` (string) Tipo de calculo de preço a ser aplicado nas opções do atributo. - highest: calcula pelo maior valor. - average: calcula pela média dos valores. - proportional: calcula proporcionalmente os valores. - cumulative: calcula a soma dos valores. Enum: "highest", "average", "proportional", "cumulative" - `attributes.min_choices` (integer) Número mínimo de opções que devem ser seleciona no atributo. Se o número mínimo for 0 torna a seleção de atributos opcional, se o número for maior que 0 torna a seleção de atributos obrigatória até o número mínimo de opções selecionadas. - `attributes.max_choices` (integer) Número máximo de opções que devem ser seleciona no atributo. O número máximo deve ser igual ou maior que o número mínimo. Example: 1 - `attributes.charge_from_quantity` (integer) Indica a partir de qual quantidade de atributos deve iniciar o calculo de cobrança pelo atributo selecionado. Se charge_from_quantity for 2, e o forem seleciona 3 opções para o atributo no valor de 10 BRL com o tipo de calculo cumulative, o valor do atributo será equivalente à 10 BRL, e não 30 BRL, pois ele só começa a ser calculado a partir da opção número 3. - `attributes.position` (integer) Indica a posição de ordenação do atributo em listagens Example: 1 - `attributes.options` (array) Lista de opções do atributo. - `attributes.options.option_id` (integer) Identificador único da opção. Example: 123 - `attributes.options.barcode` (string) Código de barras da opção do atributo. Example: "1234567890123" - `attributes.options.name` (string) Nome da opção. Example: "Nome da opção" - `attributes.options.code` (string) Código da opção. Esse código deve ser único. Exemplo: COD-CP-01 Example: "COD-CP-01" - `attributes.options.description` (string) Descrição da opção. Example: "Descrição da opção" - `attributes.options.unitary_value` (object) Valor unitário da opção na associação do atributo com o produto. Esse valor pode ser diferente do valor do template da opção. - `attributes.options.image_url` (null,string) URL da imagem da opção. Example: "https://images.connectplug.com.br/4f01c1252eea.jpg" - `attributes.options.position` (integer) Indica a posição de ordenação da opção em listagens. Example: 1 - `attributes.options.created_at` (string) Data da última criação. Example: "2020-01-01T09:00:00-03:00" - `attributes.options.updated_at` (string) Data da última atualização. Example: "2020-01-01T09:00:00-03:00" - `attributes.options.components` (array) Lista de opções do atributo. - `attributes.options.components.amount` (integer) Quantidade de componentes associados à opção. Example: 1 - `attributes.options.components.is_optional` (boolean) Indica se a opção é opcional. - `attributes.options.components.product` (object) Componente associado à opção. - `attributes.options.components.product.id` (integer) Identificador único do componente. Example: 123 - `attributes.options.components.product.name` (string) Nome do componente. Example: "Componente 1" - `components` (array) Lista de componentes do produto. - `components.id` (integer) Identificador único da associação do componente com o produto. Esse compo é readOnly na criação e pode ser informado na edição para atualização. Example: 123 - `components.amount` (number) Quantidade de itens do componente na venda do produto principal (Ex: combo). Example: 1 - `components.waste_amount` (number) Quantidade de desperdício do componente para geração da venda do produto principal (Ex: produto de produção). Example: 0.5 - `components.position` (integer) Indica a posição de ordenação do componente em listagens Example: 1 - `components.product` (object) Dados do produto que Compõe o produto principal. - `components.created_at` (string) Data de criação. Example: "2020-01-01T09:00:00-03:00" - `grids` (array) Lista de grade de preços do produto. Apenas produtos do tipo "Simples" podem conter grade de preços. - `grids.id` (integer) Identificador único da grade de preço. Esse compo é readOnly na criação e pode ser informado na edição para atualização. Example: 123 - `grids.product_id` (integer) Identificador único do produto relacionado a grade de preço. Example: 123 - `grids.order` (integer) Ordem da grade de preço. - `grids.unitary_value` (object) Valor unitário do produto na grade de preço. _Também pode ser interpretado como valor unitário do produto para o conjuntos das opções contida em options desse objeto_. Esse valor pode ser diferente do valor do valor original do produto. - `grids.status` (string) Status da grade de preço. - active: grade de preço disponíveis para venda. - inactive: grade de preço não disponíveis para venda. Enum: "active", "inactive" - `grids.barcode` (string) Código de barras da grade de preço. Example: "1234567890123" - `grids.image` (string) URL da imagem da grade de preço. Example: "https://images.connectplug.com.br/4f01c1252eea.jpg" - `grids.options` (array) Lista de opções que compõe a grade de preço. - `grids.options.order` (integer) Ordem do item na grade de preço. - `additionals` (object) Configurações dos produtos adicionais de um produto. - `additionals.min_choices` (integer, required) Número mínimo de produtos adicionais que devem ser selecionado. Se o número mínimo for 0 torna a seleção de produtos adicionais opcional, se o número for maior que 0 torna a seleção obrigatória até o número mínimo de opções selecionadas. - `additionals.max_choices` (integer, required) Número máximo de produtos adicionais que devem ser selecionado. O número máximo deve ser igual ou maior que o número mínimo. Example: 1 - `additionals.charge_from_quantity` (integer) Indica a partir de qual quantidade de adicionais deve iniciar o calculo de cobrança. Se charge_from_quantity for 2, e o forem seleciona 3 adicionais para o produto no valor de 10 BRL, o valor do atributo será equivalente à 10 BRL, e não 30 BRL, pois ele só começa a ser calculado a partir da opção número 3. - `additionals.items` (array, required) Lista de produtos adicionais - `additionals.items.amount` (number, required) Quantidade de itens do adicional na venda do produto principal. Example: 1 - `additionals.items.waste_amount` (number) Quantidade de desperdício do adicional para geração da venda do produto principal. Example: 0.5 - `additionals.items.max_choices` (integer) Número máximo de adicionais que devem ser selecionado. Example: 1 - `additionals.items.position` (integer) Indica a posição de ordenação do produto adicional em listagens. Example: 1 - `additionals.items.product` (object) Dados do produto adicional. - `recommendations` (array) Lista de produtos a serem sugeridos como recomendação na venda do produto principal. - `recommendations.position` (integer) Indica a posição de ordenação do produto recomendado nas listagens. Example: 1 - `recommendations.product` (object) Dados do produto recomendado. - `image_url` (null,string) URL da imagem principal do produto. Example: "https://images.connectplug.com.br/4f01c1252eea.jpg" - `companies` (array) Lista de empresas que permite visualizar. - `companies.id` (integer) Identificador único da empresa Example: 1234 - `companies.name` (string) Nome fantasia da empresa. Example: "CPlug" - `companies.company_name` (string,null) Razão social da empresa. Example: "CPlug Tecnologia da Informação" - `is_perishable` (boolean) Se este produto é perecível. Example: true - `stock_settings` (object) Configurações de estoque do produto. - `stock_settings.is_stock_control` (boolean) Se este produto possui um controle de estoque. Example: true - `stock_settings.is_stock_notification` (boolean) Se este produto tem notificação de estoque. - `stock_settings.min` (integer) Se is_stock_notification = true. Quantidade mínima no estoque. Example: 1 - `stock_settings.max` (integer) Se is_stock_notification = true. Quantidade máxima no estoque. Example: 1 - `kds` (array) Lista de KDS associados ao produto. - `kds.id` (integer) Identificador único do KDS na CPlug. Example: 1 - `kds.name` (string) Nome do KDS. Example: "KDS Cozinha" - `price_lists` (array) Lista de preços do produto. Nota: Esta propriedade só será carregada caso seja passado o filtro with_price_list na URL. - `price_lists.value` (object) - `price_lists.value.amount` (number) Valor do preço. Example: 99.95 - `price_lists.value.currency` (string) Moeda do preço. Example: "BRL" - `price_lists.price_list` (object) - `price_lists.price_list.id` (integer) Identificador único da lista de preços. Example: 1 - `price_lists.price_list.name` (string) Nome da lista de preços. Example: "Lista Padrão" ## 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