{
  "service": "bidsketch",
  "displayName": "BidSketch",
  "categories": [
    "Productivity",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "BIDSKETCH_API_TOKEN",
      "description": "BidSketch API token used with the Authorization header. Admin users can create and view it at your workspace /account/api_tokens page, as described in the official API help article: https://help.bidsketch.com/article/76-using-the-bidsketch-api"
    }
  ],
  "homepageUrl": "https://www.bidsketch.com/",
  "actions": [
    {
      "id": "bidsketch.get_client",
      "service": "bidsketch",
      "name": "get_client",
      "description": "Get one BidSketch client by client ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "integer",
            "minimum": 1,
            "description": "The BidSketch client ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for selecting one BidSketch client."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "client": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The BidSketch client ID."
              },
              "url": {
                "type": "string",
                "description": "The API URL for the client.",
                "format": "uri"
              },
              "app_url": {
                "type": "string",
                "description": "The BidSketch app URL for the client.",
                "format": "uri"
              },
              "created_at": {
                "type": "string",
                "description": "The timestamp when the client was created.",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "description": "The timestamp when the client was last updated.",
                "format": "date-time"
              },
              "first_name": {
                "type": "string",
                "minLength": 1,
                "description": "The client first name."
              },
              "last_name": {
                "type": "string",
                "minLength": 1,
                "description": "The client last name."
              },
              "email": {
                "type": "string",
                "description": "The client primary email address.",
                "format": "email"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The client company name or full display name."
              },
              "phone": {
                "type": "string",
                "minLength": 1,
                "description": "The client primary phone number."
              },
              "alt_phone": {
                "type": "string",
                "minLength": 1,
                "description": "The client alternate phone number."
              },
              "website": {
                "type": "string",
                "minLength": 1,
                "description": "The client website."
              },
              "address_field_one": {
                "type": "string",
                "minLength": 1,
                "description": "The first client address line."
              },
              "address_field_two": {
                "type": "string",
                "minLength": 1,
                "description": "The second client address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "description": "The client city."
              },
              "state": {
                "type": "string",
                "minLength": 1,
                "description": "The client state or region."
              },
              "postal_zip": {
                "type": "string",
                "minLength": 1,
                "description": "The client postal code."
              },
              "country": {
                "type": "string",
                "minLength": 1,
                "description": "The client country."
              },
              "notes": {
                "type": "string",
                "minLength": 1,
                "description": "The client notes."
              },
              "other_contact": {
                "type": "object",
                "properties": {
                  "first_name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The secondary contact first name."
                  },
                  "last_name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The secondary contact last name."
                  },
                  "email": {
                    "type": "string",
                    "description": "The secondary contact email address.",
                    "format": "email"
                  },
                  "phone": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The secondary contact phone number."
                  }
                },
                "additionalProperties": true,
                "description": "A secondary contact attached to a BidSketch client."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "A BidSketch client."
          }
        },
        "additionalProperties": false,
        "required": [
          "client"
        ],
        "description": "The BidSketch client detail response."
      }
    },
    {
      "id": "bidsketch.get_proposal",
      "service": "bidsketch",
      "name": "get_proposal",
      "description": "Get one BidSketch proposal by proposal ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "proposalId": {
            "type": "integer",
            "minimum": 1,
            "description": "The BidSketch proposal ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for selecting one BidSketch proposal."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "proposal": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The BidSketch proposal ID."
              },
              "url": {
                "type": "string",
                "description": "The API URL for the proposal.",
                "format": "uri"
              },
              "app_url": {
                "type": "string",
                "description": "The BidSketch app URL for the proposal.",
                "format": "uri"
              },
              "created_at": {
                "type": "string",
                "description": "The timestamp when the proposal was created.",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "description": "The timestamp when the proposal was last updated.",
                "format": "date-time"
              },
              "proposal_date": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The explicit proposal date when BidSketch returns one.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The proposal name."
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "description": "The proposal description."
              },
              "status": {
                "type": "string",
                "minLength": 1,
                "description": "The proposal status."
              },
              "is_draft": {
                "type": "boolean",
                "description": "Whether the proposal is still a draft."
              },
              "user": {
                "type": "string",
                "minLength": 1,
                "description": "The BidSketch user who owns the proposal."
              },
              "currency": {
                "type": "string",
                "minLength": 1,
                "description": "The proposal ISO currency code."
              },
              "tax": {
                "type": "number",
                "description": "The calculated primary tax value returned by BidSketch."
              },
              "tax2": {
                "type": "number",
                "description": "The calculated secondary tax value returned by BidSketch."
              },
              "monthly_fees": {
                "type": "number",
                "description": "The calculated monthly fee subtotal."
              },
              "yearly_fees": {
                "type": "number",
                "description": "The calculated yearly fee subtotal."
              },
              "one_time_fees": {
                "type": "number",
                "description": "The calculated one-time fee subtotal."
              },
              "discount": {
                "type": "number",
                "description": "The calculated discount amount."
              },
              "total": {
                "type": "number",
                "description": "The calculated total proposal value."
              },
              "settings": {
                "type": "object",
                "properties": {
                  "approval_message": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The approval message shown to the client."
                  },
                  "optional_fees_note": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The note displayed for optional fees."
                  },
                  "optional_fees_title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The title used for optional fees."
                  },
                  "proposal_fees_title": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The title used for proposal fees."
                  },
                  "include_optional_fees_in_totals": {
                    "type": "boolean",
                    "description": "Whether optional fees are included in BidSketch totals."
                  },
                  "hide_monthly_total": {
                    "type": "boolean",
                    "description": "Whether the monthly total is hidden."
                  },
                  "hide_project_total": {
                    "type": "boolean",
                    "description": "Whether the project total is hidden."
                  },
                  "hide_yearly_total": {
                    "type": "boolean",
                    "description": "Whether the yearly total is hidden."
                  },
                  "hide_grand_total": {
                    "type": "boolean",
                    "description": "Whether the grand total is hidden."
                  }
                },
                "additionalProperties": true,
                "description": "The BidSketch proposal settings block."
              },
              "client": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The BidSketch client ID attached to the proposal."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The client display name."
                  },
                  "url": {
                    "type": "string",
                    "description": "The API URL for the client.",
                    "format": "uri"
                  },
                  "app_url": {
                    "type": "string",
                    "description": "The BidSketch app URL for the client.",
                    "format": "uri"
                  }
                },
                "additionalProperties": true,
                "required": [
                  "id"
                ],
                "description": "The client summary nested under a BidSketch proposal."
              },
              "content": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "The total number of sections and fees in the proposal."
                  },
                  "url": {
                    "type": "string",
                    "description": "The API URL for the proposal content endpoint.",
                    "format": "uri"
                  },
                  "opening_sections": {
                    "type": "object",
                    "properties": {
                      "count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "The number of items in this proposal content bucket."
                      },
                      "url": {
                        "type": "string",
                        "description": "The API URL for this proposal content bucket.",
                        "format": "uri"
                      }
                    },
                    "additionalProperties": true,
                    "description": "A BidSketch proposal content bucket summary."
                  },
                  "fees": {
                    "type": "object",
                    "properties": {
                      "count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "The number of items in this proposal content bucket."
                      },
                      "url": {
                        "type": "string",
                        "description": "The API URL for this proposal content bucket.",
                        "format": "uri"
                      }
                    },
                    "additionalProperties": true,
                    "description": "A BidSketch proposal content bucket summary."
                  },
                  "closing_sections": {
                    "type": "object",
                    "properties": {
                      "count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "The number of items in this proposal content bucket."
                      },
                      "url": {
                        "type": "string",
                        "description": "The API URL for this proposal content bucket.",
                        "format": "uri"
                      }
                    },
                    "additionalProperties": true,
                    "description": "A BidSketch proposal content bucket summary."
                  }
                },
                "additionalProperties": true,
                "description": "The BidSketch content summary attached to a proposal detail response."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "A BidSketch proposal detail record."
          }
        },
        "additionalProperties": false,
        "required": [
          "proposal"
        ],
        "description": "The BidSketch proposal detail response."
      }
    },
    {
      "id": "bidsketch.get_proposal_content",
      "service": "bidsketch",
      "name": "get_proposal_content",
      "description": "Get one BidSketch proposal with its grouped sections and fees.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "proposalId": {
            "type": "integer",
            "minimum": 1,
            "description": "The BidSketch proposal ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for selecting one BidSketch proposal."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "proposal": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The BidSketch proposal ID."
              },
              "url": {
                "type": "string",
                "description": "The API URL for the proposal.",
                "format": "uri"
              },
              "app_url": {
                "type": "string",
                "description": "The BidSketch app URL for the proposal.",
                "format": "uri"
              },
              "content": {
                "type": "object",
                "properties": {
                  "opening_sections": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "The BidSketch proposal section ID."
                        },
                        "url": {
                          "type": "string",
                          "description": "The API URL for the proposal section.",
                          "format": "uri"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal section name."
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal section HTML body."
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id"
                      ],
                      "description": "A BidSketch proposal section returned by the proposal content endpoint."
                    },
                    "description": "The proposal opening sections in display order."
                  },
                  "fees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "The BidSketch proposal fee ID."
                        },
                        "url": {
                          "type": "string",
                          "description": "The API URL for the proposal fee.",
                          "format": "uri"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal fee name."
                        },
                        "optional": {
                          "type": "boolean",
                          "description": "Whether the fee is optional."
                        },
                        "feetype": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The BidSketch fee type."
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "description": "The unit label associated with the fee."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "details": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The display-friendly fee details string."
                        },
                        "currency": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal fee ISO currency code."
                        },
                        "amount": {
                          "type": "number",
                          "description": "The base fee amount."
                        },
                        "quantity": {
                          "anyOf": [
                            {
                              "type": "number",
                              "description": "The fee quantity when BidSketch returns one."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "total": {
                          "type": "number",
                          "description": "The total fee value."
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal fee HTML description."
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id"
                      ],
                      "description": "A BidSketch proposal fee returned by the proposal content endpoint."
                    },
                    "description": "The proposal fee rows in display order."
                  },
                  "closing_sections": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "The BidSketch proposal section ID."
                        },
                        "url": {
                          "type": "string",
                          "description": "The API URL for the proposal section.",
                          "format": "uri"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal section name."
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1,
                          "description": "The proposal section HTML body."
                        }
                      },
                      "additionalProperties": true,
                      "required": [
                        "id"
                      ],
                      "description": "A BidSketch proposal section returned by the proposal content endpoint."
                    },
                    "description": "The proposal closing sections in display order."
                  }
                },
                "additionalProperties": true,
                "description": "The full BidSketch proposal content grouped by section type and fees."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "A BidSketch proposal content response."
          }
        },
        "additionalProperties": false,
        "required": [
          "proposal"
        ],
        "description": "The BidSketch proposal content response."
      }
    },
    {
      "id": "bidsketch.list_client_proposals",
      "service": "bidsketch",
      "name": "list_client_proposals",
      "description": "List proposals that belong to one BidSketch client.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "integer",
            "minimum": 1,
            "description": "The BidSketch client ID."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-based page number to request from BidSketch."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records to request per page."
          }
        },
        "additionalProperties": false,
        "required": [
          "clientId"
        ],
        "description": "Input for listing proposals that belong to one BidSketch client."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "proposals": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The BidSketch proposal ID."
                },
                "url": {
                  "type": "string",
                  "description": "The API URL for the proposal.",
                  "format": "uri"
                },
                "app_url": {
                  "type": "string",
                  "description": "The BidSketch app URL for the proposal.",
                  "format": "uri"
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the proposal was created.",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the proposal was last updated.",
                  "format": "date-time"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal name."
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal description."
                },
                "status": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal status."
                },
                "is_draft": {
                  "type": "boolean",
                  "description": "Whether the proposal is still a draft."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "A BidSketch proposal summary."
            },
            "description": "The proposal summaries returned by BidSketch."
          }
        },
        "additionalProperties": false,
        "required": [
          "proposals"
        ],
        "description": "The BidSketch client proposal list response."
      }
    },
    {
      "id": "bidsketch.list_clients",
      "service": "bidsketch",
      "name": "list_clients",
      "description": "List clients available in the authenticated BidSketch account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-based page number to request from BidSketch."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records to request per page."
          }
        },
        "additionalProperties": false,
        "description": "Pagination input for a BidSketch list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "clients": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The BidSketch client ID."
                },
                "url": {
                  "type": "string",
                  "description": "The API URL for the client.",
                  "format": "uri"
                },
                "app_url": {
                  "type": "string",
                  "description": "The BidSketch app URL for the client.",
                  "format": "uri"
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the client was created.",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the client was last updated.",
                  "format": "date-time"
                },
                "first_name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client first name."
                },
                "last_name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client last name."
                },
                "email": {
                  "type": "string",
                  "description": "The client primary email address.",
                  "format": "email"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client company name or full display name."
                },
                "phone": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client primary phone number."
                },
                "alt_phone": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client alternate phone number."
                },
                "website": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client website."
                },
                "address_field_one": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The first client address line."
                },
                "address_field_two": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The second client address line."
                },
                "city": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client city."
                },
                "state": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client state or region."
                },
                "postal_zip": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client postal code."
                },
                "country": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client country."
                },
                "notes": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The client notes."
                },
                "other_contact": {
                  "type": "object",
                  "properties": {
                    "first_name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The secondary contact first name."
                    },
                    "last_name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The secondary contact last name."
                    },
                    "email": {
                      "type": "string",
                      "description": "The secondary contact email address.",
                      "format": "email"
                    },
                    "phone": {
                      "type": "string",
                      "minLength": 1,
                      "description": "The secondary contact phone number."
                    }
                  },
                  "additionalProperties": true,
                  "description": "A secondary contact attached to a BidSketch client."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "A BidSketch client."
            },
            "description": "The clients returned by BidSketch."
          }
        },
        "additionalProperties": false,
        "required": [
          "clients"
        ],
        "description": "The BidSketch client list response."
      }
    },
    {
      "id": "bidsketch.list_proposals",
      "service": "bidsketch",
      "name": "list_proposals",
      "description": "List proposals available in the authenticated BidSketch account.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-based page number to request from BidSketch."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records to request per page."
          }
        },
        "additionalProperties": false,
        "description": "Pagination input for a BidSketch list endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "proposals": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The BidSketch proposal ID."
                },
                "url": {
                  "type": "string",
                  "description": "The API URL for the proposal.",
                  "format": "uri"
                },
                "app_url": {
                  "type": "string",
                  "description": "The BidSketch app URL for the proposal.",
                  "format": "uri"
                },
                "created_at": {
                  "type": "string",
                  "description": "The timestamp when the proposal was created.",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "description": "The timestamp when the proposal was last updated.",
                  "format": "date-time"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal name."
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal description."
                },
                "status": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The proposal status."
                },
                "is_draft": {
                  "type": "boolean",
                  "description": "Whether the proposal is still a draft."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "A BidSketch proposal summary."
            },
            "description": "The proposal summaries returned by BidSketch."
          }
        },
        "additionalProperties": false,
        "required": [
          "proposals"
        ],
        "description": "The BidSketch proposal list response."
      }
    }
  ]
}
