# Upsert a Quote Creates or updates a quote. To update a quote, specify an existing uniqueName. >This endpoint is not allowed to modify the document status and workflow status. --- Required Permission| Roles with the Required Permission | ---------|----------| QUOTE_UPDATE | Edit Quoting (PRICESHOP_EDIT), Administer Quoting (PRICESHOP_QUOTEADMIN), Manage Quoting (PRICESHOP) Endpoint: POST /quotemanager.save Security: basic, X-PriceFx-jwt ## Request fields (application/json): - `data` (object, required) - `data.quote` (object, required) - `data.quote.version` (number, required) - `data.quote.typedId` (string, required) - `data.quote.uniqueName` (string, required) - `data.quote.label` (string) - `data.quote.targetDate` (string, required) - `data.quote.workflowStatus` (string, required) - `data.quote.headerText` (string, required) - `data.quote.inputs` (array, required) - `data.quote.inputs.name` (string, required) - `data.quote.inputs.lookupTableId` (any) - `data.quote.inputs.url` (string, required) - `data.quote.inputs.type` (string, required) - `data.quote.inputs.value` (string, required) - `data.quote.inputs.valueHint` (string, required) - `data.quote.inputs.readOnly` (any) - `data.quote.inputs.filter` (any) - `data.quote.inputs.parameterGroup` (any) - `data.quote.inputs.required` (any) - `data.quote.inputs.labelTranslations` (any) - `data.quote.inputs.addUnknownValues` (any) - `data.quote.inputs.alwaysEditable` (any) - `data.quote.inputs.parameterConfig` (object) - `data.quote.inputs.formattingOptions` (object) - `data.quote.inputs.valueOptions` (any) - `data.quote.viewState` (object, required) - `data.quote.viewState.gridViewState` (any) - `data.quote.viewState.openFolders` (any) - `data.quote.viewState.selectedNodes` (array, required) - `data.quote.outputs` (array, required) - `data.quote.lastUpdateByName` (string, required) - `data.quote.createdByName` (string, required) - `data.quote.submittedByName` (string, required) - `data.quote.calculationStatus` (number, required) - `data.quote.dirty` (boolean, required) - `data.quote.refreshInputs` (boolean, required) - `data.quote.nodeId` (any) - `data.quote.userGroupEdit` (any) - `data.quote.userGroupViewDetails` (any) - `data.quote.serverMessages` (any) - `data.quote.additionalInfo1` (any) - `data.quote.additionalInfo2` (any) - `data.quote.additionalInfo3` (any) - `data.quote.additionalInfo4` (any) - `data.quote.numberOfAttachments` (number, required) - `data.quote.creationWorkflowStatus` (any) - `data.quote.creationWorkflowCurrentStep` (any) - `data.quote.creationWorkflowStepCount` (any) - `data.quote.creationWorkflowStepLabel` (any) - `data.quote.signature` (any) - `data.quote.lineItems` (array, required) - `data.quote.lineItems.clicId` (number, required) - `data.quote.lineItems.lineId` (string, required) - `data.quote.lineItems.parentId` (any) - `data.quote.lineItems.editabilityStatus` (number, required) - `data.quote.lineItems.sku` (string, required) - `data.quote.lineItems.priceRecordId` (any) - `data.quote.lineItems.folder` (boolean, required) - `data.quote.lineItems.treeLabel` (string, required) - `data.quote.lineItems.createDate` (string, required) - `data.quote.lineItems.createdBy` (number, required) - `data.quote.lineItems.lastUpdateDate` (string, required) - `data.quote.lineItems.lastUpdateBy` (number, required) - `data.quote.expiryDate` (string, required) - `data.quote.externalRef` (any) - `data.quote.customerId` (string, required) - `data.quote.customerName` (any) - `data.quote.customerGroup` (any) - `data.quote.quoteStatus` (string, required) - `data.quote.renderInfo` (any) - `data.quote.serverMessagesExtended` (any) - `data.quote.approvalRequiredEmailAttachmentsJson` (any) - `data.quote.hasWorkflowHistory` (boolean, required) - `data.quote.approvedByName` (any) - `data.quote.deniedByName` (any) - `data.quote.supersededBy` (any) - `data.quote.prevRev` (string, required) - `data.quote.rootUniqueName` (string, required) - `data.quote.quoteType` (any) - `data.quote.status` (string, required) ## Response 200 fields (application/json): - `response` (object) - `response.node` (string) - `response.data` (array) - `response.data.version` (number) - `response.data.typedId` (string) - `response.data.uniqueName` (string) - `response.data.label` (string) - `response.data.targetDate` (string) - `response.data.workflowStatus` (string) - `response.data.headerText` (string) - `response.data.inputs` (array) - `response.data.inputs.name` (string, required) - `response.data.inputs.lookupTableId` (any) - `response.data.inputs.url` (string, required) - `response.data.inputs.type` (string, required) - `response.data.inputs.value` (string, required) - `response.data.inputs.valueHint` (string, required) - `response.data.inputs.readOnly` (any) - `response.data.inputs.filter` (any) - `response.data.inputs.parameterGroup` (any) - `response.data.inputs.required` (any) - `response.data.inputs.labelTranslations` (any) - `response.data.inputs.addUnknownValues` (any) - `response.data.inputs.alwaysEditable` (any) - `response.data.inputs.parameterConfig` (object) - `response.data.inputs.formattingOptions` (object) - `response.data.inputs.valueOptions` (any) - `response.data.viewState` (object) - `response.data.viewState.gridViewState` (any) - `response.data.viewState.openFolders` (any) - `response.data.viewState.selectedNodes` (array) - `response.data.outputs` (array) - `response.data.lastUpdateByName` (string) - `response.data.createdByName` (string) - `response.data.submittedByName` (string) - `response.data.calculationStatus` (number) - `response.data.dirty` (boolean) - `response.data.refreshInputs` (boolean) - `response.data.nodeId` (any) - `response.data.userGroupEdit` (any) - `response.data.userGroupViewDetails` (any) - `response.data.serverMessages` (array) - `response.data.additionalInfo1` (any) - `response.data.additionalInfo2` (any) - `response.data.additionalInfo3` (any) - `response.data.additionalInfo4` (any) - `response.data.numberOfAttachments` (number) - `response.data.creationWorkflowStatus` (any) - `response.data.creationWorkflowCurrentStep` (any) - `response.data.creationWorkflowStepCount` (any) - `response.data.creationWorkflowStepLabel` (any) - `response.data.signature` (any) - `response.data.lineItems` (array) - `response.data.lineItems.clicId` (any) - `response.data.lineItems.lineId` (string, required) - `response.data.lineItems.parentId` (any) - `response.data.lineItems.editabilityStatus` (number, required) - `response.data.lineItems.sku` (string, required) - `response.data.lineItems.priceRecordId` (any) - `response.data.lineItems.folder` (boolean, required) - `response.data.lineItems.treeLabel` (string, required) - `response.data.lineItems.createDate` (string, required) - `response.data.lineItems.createdBy` (number, required) - `response.data.lineItems.lastUpdateDate` (string, required) - `response.data.lineItems.lastUpdateBy` (number, required) - `response.data.expiryDate` (string) - `response.data.externalRef` (any) - `response.data.customerId` (string) - `response.data.customerName` (string) - `response.data.customerGroup` (any) - `response.data.quoteStatus` (string) - `response.data.renderInfo` (any) - `response.data.serverMessagesExtended` (array) - `response.data.approvalRequiredEmailAttachmentsJson` (any) - `response.data.hasWorkflowHistory` (boolean) - `response.data.approvedByName` (string) - `response.data.deniedByName` (any) - `response.data.supersededBy` (any) - `response.data.prevRev` (string) - `response.data.rootUniqueName` (string) - `response.data.quoteType` (any) - `response.data.status` (string)