betterproposals.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.
Companies
create
companies.create
Create a new company record
Risk: write
await corsair.betterproposals.api.companies.create({});
| Name | Type | Required | Description |
|---|---|---|---|
CompanyName | string | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
DemoCompany?: string | number | null,
CompanyName: string,
CompanyCRMID?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null,
DeletedBy?: string | number | null
} | {
}
get
companies.get
Get details for a specific company by ID
Risk: read
await corsair.betterproposals.api.companies.get({});
| Name | Type | Required | Description |
|---|---|---|---|
company_id | string | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
DemoCompany?: string | number | null,
CompanyName: string,
CompanyCRMID?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null,
DeletedBy?: string | number | null
}
list
companies.list
Get all companies in the account with optional pagination
Risk: read
await corsair.betterproposals.api.companies.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
DemoCompany?: string | number | null,
CompanyName: string,
CompanyCRMID?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null,
DeletedBy?: string | number | null
}[]
Currencies
get
currencies.get
Get details for a specific currency by ID
Risk: read
await corsair.betterproposals.api.currencies.get({});
| Name | Type | Required | Description |
|---|---|---|---|
currency_id | string | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID: string | number,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CurrencyCode?: string | null,
ZeroDecimal?: string | number | null,
StripeSupport?: string | number | null,
PaypalSupport?: string | number | null
}
list
currencies.list
Get all currencies supported in Better Proposals
Risk: read
await corsair.betterproposals.api.currencies.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CurrencyCode?: string | null,
ZeroDecimal?: string | number | null,
StripeSupport?: string | number | null,
PaypalSupport?: string | number | null
}[]
Document Types
create
documentTypes.create
Create a new document type with name and colour
Risk: write
await corsair.betterproposals.api.documentTypes.create({});
| Name | Type | Required | Description |
|---|---|---|---|
TypeName | string | Yes | — |
TypeColour | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
TypeName: string,
TypeIcon?: string | null,
TypeColour?: string | null,
TypeNameSingular?: string | null,
CategoryIcon?: string | null,
DisplayOrder?: string | number | null,
NumberOfOutstandingDocuments?: number | null,
NumberOfTemplates?: number | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null,
DateDeleted?: string | null,
DeletedBy?: string | number | null
}
list
documentTypes.list
Get all document types available in the account
Risk: read
await corsair.betterproposals.api.documentTypes.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
TypeName: string,
TypeIcon?: string | null,
TypeColour?: string | null,
TypeNameSingular?: string | null,
CategoryIcon?: string | null,
DisplayOrder?: string | number | null,
NumberOfOutstandingDocuments?: number | null,
NumberOfTemplates?: number | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null,
DateDeleted?: string | null,
DeletedBy?: string | number | null
}[]
Proposals
createCover
proposals.createCover
Create a proposal cover design with custom colours, headline, and button
Risk: write
await corsair.betterproposals.api.proposals.createCover({});
| Name | Type | Required | Description |
|---|---|---|---|
BrandID | string | number | No | — |
CoverName | string | No | — |
BGColour | string | number | No | — |
Headline | string | No | — |
Subheader | string | No | — |
TextColour | string | No | — |
TextAlign | left | center | right | string | No | — |
ButtonStyle | string | No | — |
ButtonText | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | No | — |
data full type
data full type
{
ID?: string | number,
Name?: string | null,
BrandID?: string | number | null,
Headline?: string | null,
Subheader?: string | null,
BGColour?: string | null,
TextColour?: string | null,
TextAlign?: string | null,
ButtonStyle?: string | null,
ButtonText?: string | null
}
get
proposals.get
Get detailed information for a specific proposal by ID
Risk: read
await corsair.betterproposals.api.proposals.get({});
| Name | Type | Required | Description |
|---|---|---|---|
proposal_id | string | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}
getCount
proposals.getCount
Get total proposal count across account
Risk: read
await corsair.betterproposals.api.proposals.getCount({});
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
count | number | Yes | — |
getNew
proposals.getNew
Get new proposals that have not yet been sent
Risk: read
await corsair.betterproposals.api.proposals.getNew({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
getOpened
proposals.getOpened
Get proposals that have been opened by recipients
Risk: read
await corsair.betterproposals.api.proposals.getOpened({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
getPaid
proposals.getPaid
Get proposals that have been paid
Risk: read
await corsair.betterproposals.api.proposals.getPaid({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
getSent
proposals.getSent
Get sent proposals
Risk: read
await corsair.betterproposals.api.proposals.getSent({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
getSigned
proposals.getSigned
Get signed proposals
Risk: read
await corsair.betterproposals.api.proposals.getSigned({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
list
proposals.list
Get all proposals with optional pagination and document type filtering
Risk: read
await corsair.betterproposals.api.proposals.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
type | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AssignedTo?: string | number | null,
BrandID?: string | number | null,
ViewType?: string | null,
CurrencyCode?: string | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TaxPercentage?: string | null,
TaxName?: string | null,
Amount?: string | null,
AmountDesc?: string | null,
Paid?: string | number | null,
DatePaid?: string | null,
CoverID?: string | number | null,
TypeID?: string | number | null,
Description?: string | null,
SubjectLine?: string | null,
PersonalMessage?: string | null,
CustomerJourneyID?: string | number | null,
DateCreated?: string | null,
SignOrder?: string | number | null,
OriginalDateSent?: string | null,
DateSent?: string | null,
QuoteID?: string | number | null,
Signed?: string | number | null,
SignedName?: string | null,
SignedDate?: string | null,
SignedTime?: string | null,
EditLock?: string | number | null,
ProposalPassword?: string | null,
CompanyName?: string | null,
CompanyCRMID?: string | null,
OneOffTotal?: string | null,
MonthlyTotal?: string | null,
QuarterlyTotal?: string | null,
AnnualTotal?: string | null,
SignedFirstName?: string | null,
SignedSurname?: string | null,
SignedEmail?: string | null,
CurrencyName?: string | null,
CurrencySymbol?: string | null,
CRMOpportunityID?: string | number | null,
Preview?: string | null,
ProposalView?: string | null,
Contacts?: {
Email?: string | null,
FirstName?: string | null,
Surname?: string | null,
Link?: string | null,
Signature?: boolean | string | number | null
}[] | null,
PriceTables?: {
ID?: string | number | null,
Title?: string | null,
Show?: boolean | null,
ForceClientChoice?: boolean | null,
DateCreated?: string | null,
DisplayOrder?: string | number | null,
Items?: {
ID?: string | number | null,
Label?: string | null,
Description?: string | null,
Date?: string | null,
PriceType?: string | null,
UnitCost?: string | null,
Cost?: string | null,
RecurringType?: string | null,
MonthlyCost?: string | null,
ShowQuantity?: boolean | null,
CanClientSetQuantity?: boolean | null,
Quantity?: string | number | null,
isQuantityLimited?: boolean | null,
QuantityMin?: string | number | null,
QuantityMax?: string | number | null,
Optional?: boolean | null,
Selected?: boolean | null,
Selectable?: boolean | null,
Discount?: boolean | string | number | null,
DiscountType?: boolean | string | number | null,
DiscountAmount?: string | null,
TableDiscount?: boolean | string | number | null,
TableDiscountType?: boolean | string | number | null,
TableDiscountAmount?: string | null,
TaxExemptionStatus?: boolean | null,
DisplayOrder?: string | number | null
}[] | null
}[] | null
}[]
Quotes
get
quotes.get
Get details for a specific quote by ID
Risk: read
await corsair.betterproposals.api.quotes.get({});
| Name | Type | Required | Description |
|---|---|---|---|
quote_id | string | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
Status?: string | number | null,
MarkDead?: string | number | null,
MarkedDeadBy?: string | number | null,
DateMarkedDead?: string | null,
CompanyID?: string | number | null,
QuoteAmount?: string | null,
MonthlyAmount?: string | null,
QuarterlyAmount?: string | null,
AnnualAmount?: string | null,
VatAmount?: string | null,
QuoteTotal?: string | null,
CreatedBy?: string | number | null,
DateCreated?: string | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
DateAccepted?: string | null,
DateCompleted?: string | null,
Archived?: string | number | null,
ArchivedBy?: string | number | null,
DateArchived?: string | null,
Deleted?: string | number | null,
DeletedBy?: string | number | null,
DateDeleted?: string | null
} | any[]
list
quotes.list
Get all quotes with optional pagination
Risk: read
await corsair.betterproposals.api.quotes.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
Status?: string | number | null,
MarkDead?: string | number | null,
MarkedDeadBy?: string | number | null,
DateMarkedDead?: string | null,
CompanyID?: string | number | null,
QuoteAmount?: string | null,
MonthlyAmount?: string | null,
QuarterlyAmount?: string | null,
AnnualAmount?: string | null,
VatAmount?: string | null,
QuoteTotal?: string | null,
CreatedBy?: string | number | null,
DateCreated?: string | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
DateAccepted?: string | null,
DateCompleted?: string | null,
Archived?: string | number | null,
ArchivedBy?: string | number | null,
DateArchived?: string | null,
Deleted?: string | number | null,
DeletedBy?: string | number | null,
DateDeleted?: string | null
}[]
Settings
get
settings.get
Get account settings including tax and timezone information
Risk: read
await corsair.betterproposals.api.settings.get({});
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID?: string | number | null,
AccountID?: string | number | null,
CurrencyID?: string | number | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
TimeZone?: string | null,
CustomerJourneysActive?: string | number | null,
CustomerJourneysDefault?: string | number | null,
EditedBy?: string | number | null,
DateEdited?: string | null
}
getBrand
settings.getBrand
Get brand settings including default currency, tax, and company styling
Risk: read
await corsair.betterproposals.api.settings.getBrand({});
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object | Yes | — |
data full type
data full type
{
ID?: string | number | null,
AccountID?: string | number | null,
Default?: string | number | null,
PageTitle?: string | null,
Name?: string | null,
CurrencyID?: string | number | null,
Tax?: string | number | null,
TaxLabel?: string | null,
TaxAmount?: string | null,
ShowBadge?: string | number | null,
CompanyName?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Deleted?: string | number | null
}
listMergeTags
settings.listMergeTags
List custom merge tags configured in the account
Risk: read
await corsair.betterproposals.api.settings.listMergeTags({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
Name?: string | null,
Tag?: string | null,
Fallback?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Archived?: string | number | null,
DateArchived?: string | null,
ArchivedBy?: string | number | null,
CRMSync?: string | number | null,
CRMTagName?: string | null,
CRMTagId?: string | number | null
}[]
Templates
get
templates.get
Get details for a specific proposal template by ID
Risk: read
await corsair.betterproposals.api.templates.get({});
| Name | Type | Required | Description |
|---|---|---|---|
template_id | string | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
CoverID?: string | number | null,
BrandID?: string | number | null,
TemplateName?: string | null,
Description?: string | null,
QuoteAmount?: string | null,
MonthlyAmount?: string | null,
QuarterlyAmount?: string | null,
AnnualAmount?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Default?: string | number | null,
Deleted?: string | number | null,
IndustryID?: string | number | null,
SampleTemplate?: string | number | null,
FromMarketplace?: string | number | null,
CategoryID?: string | number | null
} | any[]
list
templates.list
Get all proposal templates with optional pagination
Risk: read
await corsair.betterproposals.api.templates.list({});
| Name | Type | Required | Description |
|---|---|---|---|
page | number | string | No | — |
per_page | number | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | — |
data | object[] | Yes | — |
data full type
data full type
{
ID: string | number,
AccountID?: string | number | null,
CoverID?: string | number | null,
BrandID?: string | number | null,
TemplateName?: string | null,
Description?: string | null,
QuoteAmount?: string | null,
MonthlyAmount?: string | null,
QuarterlyAmount?: string | null,
AnnualAmount?: string | null,
DateCreated?: string | null,
CreatedBy?: string | number | null,
DateEdited?: string | null,
EditedBy?: string | number | null,
Default?: string | number | null,
Deleted?: string | number | null,
IndustryID?: string | number | null,
SampleTemplate?: string | number | null,
FromMarketplace?: string | number | null,
CategoryID?: string | number | null
}[]