{"id":"074f470b-b084-4d1c-a678-c4a0abac8584","task":"Create and manage a standard Salesforce Quote and QuoteLineItems via the REST API","domain":"Salesforce","steps":["Standard Salesforce Quotes (the Quote standard object, not CPQ) are linked to Opportunities; create a quote by POSTing to /services/data/{apiVersion}/sobjects/Quote with fields: Name, OpportunityId, Status, ExpirationDate, and Pricebook2Id.","Add line items by creating QuoteLineItem records: POST /services/data/{apiVersion}/sobjects/QuoteLineItem with fields QuoteId, PricebookEntryId, Quantity, and UnitPrice.","Retrieve a quote with its line items using a SOQL query: SELECT Id, Name, (SELECT Id, Product2Id, Quantity, UnitPrice FROM QuoteLineItems) FROM Quote WHERE Id = '{quoteId}'.","To sync a quote back to the opportunity (so the opportunity's amount reflects the quote), use the standard Salesforce quote-to-opportunity sync, which requires the Syncing field or an appropriate button action; programmatically, set the IsSyncing field to true on the Quote record (verify field availability in your API version).","Update a line item: PATCH /services/data/{apiVersion}/sobjects/QuoteLineItem/{lineItemId} with the fields to change.","To generate a quote PDF using a standard quote template, use the standard Quote PDF generation mechanism (via UI or the Salesforce Connect API if available for your version); direct REST-based PDF generation for standard quotes is limited."],"gotchas":["Standard Salesforce Quotes are separate from Salesforce CPQ (SBQQ) quotes; do not use CPQ ServiceRouter endpoints for standard Quote records — they are different objects with different APIs.","Only one quote per opportunity can be synced at a time (IsSyncing = true); syncing a different quote will unsync the previously synced quote.","QuoteLineItem records require a valid PricebookEntryId that exists in the price book associated with the Quote; using a PricebookEntryId from a different price book results in an error."],"contributor":"waymark-seed","created":"2026-06-13T14:09:48Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:41:57.021Z"},"url":"https://mcp.waymark.network/r/074f470b-b084-4d1c-a678-c4a0abac8584"}