SalesOS

Quotes

Quote creation and management

Get automation settings

GET
/v1/quotes/settings/automation

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/quotes/settings/automation" \
  -H "Authorization: Bearer <token>"

{}

Update automation settings

PATCH
/v1/quotes/settings/automation

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/quotes/settings/automation" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

{}

List quotes

GET
/v1/quotes

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

statusstring
opportunityIdstring
accountIdstring
searchstring
pagestring
limitstring
sortBystring
sortOrderstring
curl -X GET "https://api.salesos.org/v1/quotes?status=%3Cstring%3E&opportunityId=%3Cstring%3E&accountId=%3Cstring%3E&search=%3Cstring%3E&page=%3Cstring%3E&limit=%3Cstring%3E&sortBy=%3Cstring%3E&sortOrder=%3Cstring%3E" \
  -H "Authorization: Bearer <token>"

QuoteList

{
  "data": [
    {
      "id": "string",
      "opportunityId": "string",
      "accountId": "string",
      "ownerId": "string",
      "organizationId": "string",
      "quoteNumber": "string",
      "name": "string",
      "status": "DRAFT",
      "subtotal": 0,
      "discount": 0,
      "discountPercent": 0,
      "tax": 0,
      "shippingHandling": 0,
      "taxMode": "string",
      "taxRate": 0,
      "taxDetails": null,
      "totalPrice": 0,
      "currency": "string",
      "validUntil": "2019-08-24T14:15:22Z",
      "paymentTerms": "string",
      "description": "string",
      "billingStreet": "string",
      "billingCity": "string",
      "billingState": "string",
      "billingPostalCode": "string",
      "billingCountry": "string",
      "shippingStreet": "string",
      "shippingCity": "string",
      "shippingState": "string",
      "shippingPostalCode": "string",
      "shippingCountry": "string",
      "sentDate": "2019-08-24T14:15:22Z",
      "acceptedDate": "2019-08-24T14:15:22Z",
      "rejectedDate": "2019-08-24T14:15:22Z",
      "rejectedReason": "string",
      "metadata": null,
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "page": 1,
  "limit": 50,
  "total": 0,
  "totalPages": 0,
  "hasMore": true
}

Create quote

POST
/v1/quotes

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring
accountIdRequiredstring
opportunityIdRequiredstring
contactIdstring
priceBookIdstring
statusstring
Value in: "DRAFT" | "PENDING_APPROVAL" | "APPROVED" | "SENT" | "ACCEPTED" | "REJECTED" | "EXPIRED"
validUntilstring
expirationDatestring
discountnumber
discountPercentnumber
taxnumber
taxPercentnumber
taxModestring

AUTO: tax from the org's tax rates for the quote's address. MANUAL: tax as entered.

Value in: "AUTO" | "MANUAL"
shippingHandlingnumber
shippingCostnumber
descriptionstring
notesstring
paymentTermsstring
termsstring
billingStreetstring
billingCitystring
billingStatestring
billingPostalCodestring
billingCountrystring
shippingStreetstring
shippingCitystring
shippingStatestring
shippingPostalCodestring
shippingCountrystring
billingAddressobject
shippingAddressobject
lineItemsarray<object>

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "accountId": "string",
    "opportunityId": "string",
    "contactId": "string",
    "priceBookId": "string",
    "status": "DRAFT",
    "validUntil": "string",
    "expirationDate": "string",
    "discount": 0,
    "discountPercent": 0,
    "tax": 0,
    "taxPercent": 0,
    "taxMode": "AUTO",
    "shippingHandling": 0,
    "shippingCost": 0,
    "description": "string",
    "notes": "string",
    "paymentTerms": "string",
    "terms": "string",
    "billingStreet": "string",
    "billingCity": "string",
    "billingState": "string",
    "billingPostalCode": "string",
    "billingCountry": "string",
    "shippingStreet": "string",
    "shippingCity": "string",
    "shippingState": "string",
    "shippingPostalCode": "string",
    "shippingCountry": "string",
    "billingAddress": {},
    "shippingAddress": {},
    "lineItems": [
      {}
    ]
  }'

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

A draft quote pre-filled from the deal: its account, primary contact and addresses.

POST
/v1/quotes/from-opportunity/{opportunityId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

opportunityIdRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/from-opportunity/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Get quote stats

GET
/v1/quotes/stats

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/quotes/stats" \
  -H "Authorization: Bearer <token>"

List deleted

GET
/v1/quotes/deleted

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/quotes/deleted" \
  -H "Authorization: Bearer <token>"

QuoteArray

[
  {
    "id": "string",
    "opportunityId": "string",
    "accountId": "string",
    "ownerId": "string",
    "organizationId": "string",
    "quoteNumber": "string",
    "name": "string",
    "status": "DRAFT",
    "subtotal": 0,
    "discount": 0,
    "discountPercent": 0,
    "tax": 0,
    "shippingHandling": 0,
    "taxMode": "string",
    "taxRate": 0,
    "taxDetails": null,
    "totalPrice": 0,
    "currency": "string",
    "validUntil": "2019-08-24T14:15:22Z",
    "paymentTerms": "string",
    "description": "string",
    "billingStreet": "string",
    "billingCity": "string",
    "billingState": "string",
    "billingPostalCode": "string",
    "billingCountry": "string",
    "shippingStreet": "string",
    "shippingCity": "string",
    "shippingState": "string",
    "shippingPostalCode": "string",
    "shippingCountry": "string",
    "sentDate": "2019-08-24T14:15:22Z",
    "acceptedDate": "2019-08-24T14:15:22Z",
    "rejectedDate": "2019-08-24T14:15:22Z",
    "rejectedReason": "string",
    "metadata": null,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
]

Get quote

GET
/v1/quotes/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/quotes/<string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Update quote

PATCH
/v1/quotes/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
subtotalnumber
totalnumber
totalPricenumber
sentDatestring
acceptedDatestring
rejectedDatestring
sentAtstring
acceptedAtstring
rejectedAtstring
rejectedReasonstring
rejectionReasonstring
metadataobject

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/quotes/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "subtotal": 0,
    "total": 0,
    "totalPrice": 0,
    "sentDate": "string",
    "acceptedDate": "string",
    "rejectedDate": "string",
    "sentAt": "string",
    "acceptedAt": "string",
    "rejectedAt": "string",
    "rejectedReason": "string",
    "rejectionReason": "string",
    "metadata": {}
  }'

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Delete quote

DELETE
/v1/quotes/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/quotes/<string>" \
  -H "Authorization: Bearer <token>"

No response body.

Restore

POST
/v1/quotes/{id}/restore

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/restore" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Add line item

POST
/v1/quotes/{id}/line-items

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/line-items" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

QuoteLineItem

{
  "id": "string",
  "quoteId": "string",
  "productName": "string",
  "productCode": "string",
  "description": "string",
  "quantity": 0,
  "listPrice": 0,
  "unitPrice": 0,
  "discount": 0,
  "totalPrice": 0,
  "sortOrder": 0,
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "productId": "string"
}

Update line item

PATCH
/v1/quotes/line-items/{lineItemId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Path Parameters

lineItemIdRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/quotes/line-items/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

QuoteLineItem

{
  "id": "string",
  "quoteId": "string",
  "productName": "string",
  "productCode": "string",
  "description": "string",
  "quantity": 0,
  "listPrice": 0,
  "unitPrice": 0,
  "discount": 0,
  "totalPrice": 0,
  "sortOrder": 0,
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "productId": "string"
}

Remove line item

DELETE
/v1/quotes/line-items/{lineItemId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

lineItemIdRequiredstring
curl -X DELETE "https://api.salesos.org/v1/quotes/line-items/<string>" \
  -H "Authorization: Bearer <token>"

No response body.

Send quote

POST
/v1/quotes/{id}/send

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
deliveryMethodstring
Value in: "email" | "manual"
recipientEmailstring

Defaults to the quote's contact.

Format: "email"
ccEmailsarray<string>

Items: at most 10.

subjectstring
Maximum length: 200
messagestring
Maximum length: 10000
attachPdfboolean
templateIdstring

Accepted for older clients; there are no stored quote email templates.

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/send" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryMethod": "email",
    "recipientEmail": "[email protected]",
    "ccEmails": [
      "[email protected]"
    ],
    "subject": "string",
    "message": "string",
    "attachPdf": true,
    "templateId": "string"
  }'

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Submit for approval

POST
/v1/quotes/{id}/submit-for-approval

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/submit-for-approval" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Accept quote

POST
/v1/quotes/{id}/accept

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/accept" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

"Set deal amount from this quote": the caller needs edit access to the deal.

POST
/v1/quotes/{id}/sync-deal-amount

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/sync-deal-amount" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

{}

Reject quote

POST
/v1/quotes/{id}/reject

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/reject" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Generate pdf

GET
/v1/quotes/{id}/pdf

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/quotes/<string>/pdf" \
  -H "Authorization: Bearer <token>"

Clone quote

POST
/v1/quotes/{id}/clone

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/clone" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Recalculate quote

POST
/v1/quotes/{id}/recalculate

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/recalculate" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Quote

{
  "id": "string",
  "opportunityId": "string",
  "accountId": "string",
  "ownerId": "string",
  "organizationId": "string",
  "quoteNumber": "string",
  "name": "string",
  "status": "DRAFT",
  "subtotal": 0,
  "discount": 0,
  "discountPercent": 0,
  "tax": 0,
  "shippingHandling": 0,
  "taxMode": "string",
  "taxRate": 0,
  "taxDetails": null,
  "totalPrice": 0,
  "currency": "string",
  "validUntil": "2019-08-24T14:15:22Z",
  "paymentTerms": "string",
  "description": "string",
  "billingStreet": "string",
  "billingCity": "string",
  "billingState": "string",
  "billingPostalCode": "string",
  "billingCountry": "string",
  "shippingStreet": "string",
  "shippingCity": "string",
  "shippingState": "string",
  "shippingPostalCode": "string",
  "shippingCountry": "string",
  "sentDate": "2019-08-24T14:15:22Z",
  "acceptedDate": "2019-08-24T14:15:22Z",
  "rejectedDate": "2019-08-24T14:15:22Z",
  "rejectedReason": "string",
  "metadata": null,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

List all documents for a quote

GET
/v1/quotes/{id}/documents

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/quotes/<string>/documents" \
  -H "Authorization: Bearer <token>"

[
  {}
]

Upload document

POST
/v1/quotes/{id}/documents

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/<string>/documents" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Get a single document with AI summary

GET
/v1/quotes/documents/{docId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

docIdRequiredstring
curl -X GET "https://api.salesos.org/v1/quotes/documents/<string>" \
  -H "Authorization: Bearer <token>"

{}

Delete a document

DELETE
/v1/quotes/documents/{docId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

docIdRequiredstring
curl -X DELETE "https://api.salesos.org/v1/quotes/documents/<string>" \
  -H "Authorization: Bearer <token>"

Re-process a document with AI

POST
/v1/quotes/documents/{docId}/reprocess

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

docIdRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/quotes/documents/<string>/reprocess" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"