openapi: 3.1.0 info: title: Vessel CRM Accounts Deals API description: The Vessel CRM API provides a unified interface for CRM operations across Salesforce, HubSpot, Zoho, Pipedrive, Close, Freshsales, Microsoft Dynamics, Affinity, monday.com, and Freshdesk. Operations are normalized across all CRM systems with consistent object models for contacts, deals, accounts, leads, notes, tasks, emails, calls, events, and users. Authentication uses vessel-api-token header and accessToken query parameter. version: '1.0' contact: name: Vessel Support email: support@vessel.dev url: https://www.vessel.dev/ license: name: Proprietary url: https://www.vessel.dev/ servers: - url: https://api.vessel.land description: Vessel CRM API security: - apiToken: [] tags: - name: Deals paths: /crm/deals: get: operationId: getAllDeals summary: Get All Deals description: Returns all deals/opportunities from the connected CRM. tags: - Deals parameters: - name: accessToken in: query required: true schema: type: string - name: cursor in: query required: false schema: type: string responses: '200': description: List of deals content: application/json: schema: type: object properties: deals: type: array items: $ref: '#/components/schemas/Deal' nextCursor: type: string '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' /crm/deals/create: post: operationId: createDeal summary: Create a Deal description: Creates a new deal in the connected CRM. tags: - Deals parameters: - name: accessToken in: query required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DealInput' responses: '200': description: Deal created content: application/json: schema: $ref: '#/components/schemas/Deal' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' /crm/deals/update: post: operationId: updateDeal summary: Update a Deal description: Updates an existing deal in the connected CRM. tags: - Deals parameters: - name: accessToken in: query required: true schema: type: string requestBody: required: true content: application/json: schema: allOf: - type: object required: - id properties: id: type: string - $ref: '#/components/schemas/DealInput' responses: '200': description: Deal updated content: application/json: schema: $ref: '#/components/schemas/Deal' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: DealInput: type: object description: Input for creating or updating a CRM deal properties: name: type: string amount: type: number stage: type: string closeDate: type: string ownerId: type: string accountId: type: string Error: type: object description: API error response properties: error: type: string description: Error message code: type: string description: Error code Deal: type: object description: A CRM deal/opportunity record properties: id: type: string description: Unique deal ID (string-normalized) name: type: string amount: type: number stage: type: string closeDate: type: string format: date-time ownerId: type: string accountId: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time securitySchemes: apiToken: type: apiKey in: header name: vessel-api-token description: Your Vessel API token for server-side authentication