Charter Captain Boats API

The Boats API from Charter Captain — 2 operation(s) for boats.

Operations 4

GET /api/v1/boats List boats owned by the caller #
POST /api/v1/boats Create a new boat #
GET /api/v1/boats/{id} Get a single boat #
PATCH /api/v1/boats/{id} Partially update a boat #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chartercaptain-com:chartercaptain-com-boats-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chartercaptain-com-boats-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Charter Captain Boats API
  version: 1.0.0
  description: REST API for the Charter Captain iOS apps
servers:
- url: http://localhost:3002
  description: Development
security:
- bearerAuth: []
tags:
- name: Boats
paths:
  /api/v1/boats:
    get:
      operationId: getBoats
      summary: List boats owned by the caller
      description: 'Returns boats where ownerId = caller. Default filter: isActive=true. Pass includeInactive=true to include retired boats.'
      tags:
      - Boats
      parameters:
      - schema:
          type: string
        required: false
        name: includeInactive
        in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      boats:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            ownerId:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                              enum:
                              - SAILBOAT
                              - POWERBOAT
                              - PONTOON
                              - JETSKI
                              - KAYAK
                              - CANOE
                              - YACHT
                              - OTHER
                            description:
                              type:
                              - string
                              - 'null'
                            capacity:
                              type: integer
                            lengthFeet:
                              type:
                              - integer
                              - 'null'
                            year:
                              type:
                              - integer
                              - 'null'
                            make:
                              type:
                              - string
                              - 'null'
                            model:
                              type:
                              - string
                              - 'null'
                            photos:
                              type: array
                              items:
                                type: string
                            features:
                              type: array
                              items:
                                type: string
                            rules:
                              type:
                              - string
                              - 'null'
                            depositType:
                              type:
                              - string
                              - 'null'
                              enum:
                              - FIXED
                              - PERCENTAGE
                              - null
                            depositValue:
                              type:
                              - integer
                              - 'null'
                            fuelSurchargeEnabled:
                              type:
                              - boolean
                              - 'null'
                            fuelSurchargeAmount:
                              type:
                              - integer
                              - 'null'
                            minimumNoticeHours:
                              type: integer
                            harborId:
                              type: string
                            isActive:
                              type: boolean
                            isListed:
                              type: boolean
                            slipNumber:
                              type:
                              - string
                              - 'null'
                            gateCode:
                              type:
                              - string
                              - 'null'
                            slipInstructions:
                              type:
                              - string
                              - 'null'
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                          - id
                          - ownerId
                          - name
                          - type
                          - description
                          - capacity
                          - lengthFeet
                          - year
                          - make
                          - model
                          - photos
                          - features
                          - rules
                          - depositType
                          - depositValue
                          - fuelSurchargeEnabled
                          - fuelSurchargeAmount
                          - minimumNoticeHours
                          - harborId
                          - isActive
                          - isListed
                          - slipNumber
                          - gateCode
                          - slipInstructions
                          - createdAt
                          - updatedAt
                    required:
                    - boats
                required:
                - data
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      operationId: postBoat
      summary: Create a new boat
      description: Creates a boat owned by the caller using the full Boat surface (name, type, harbor, capacity, slip info, fuel surcharge, deposit, photos). Pricing tiers are managed separately and are not created by this endpoint.
      tags:
      - Boats
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyHeader'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                type:
                  type: string
                  enum:
                  - SAILBOAT
                  - POWERBOAT
                  - PONTOON
                  - JETSKI
                  - KAYAK
                  - CANOE
                  - YACHT
                  - OTHER
                harborId:
                  type: string
                  minLength: 1
                capacity:
                  type: integer
                  minimum: 1
                  maximum: 50
                slipNumber:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                gateCode:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                slipInstructions:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                fuelSurchargeEnabled:
                  type: boolean
                fuelSurchargeAmount:
                  type:
                  - integer
                  - 'null'
                  minimum: 0
                depositType:
                  type: string
                  enum:
                  - FIXED
                  - PERCENTAGE
                depositValue:
                  type: integer
                  minimum: 0
                photos:
                  type: array
                  items:
                    type: string
                    format: uri
                  default: []
              required:
              - name
              - type
              - harborId
              - capacity
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      boat:
                        type: object
                        properties:
                          id:
                            type: string
                          ownerId:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - SAILBOAT
                            - POWERBOAT
                            - PONTOON
                            - JETSKI
                            - KAYAK
                            - CANOE
                            - YACHT
                            - OTHER
                          description:
                            type:
                            - string
                            - 'null'
                          capacity:
                            type: integer
                          lengthFeet:
                            type:
                            - integer
                            - 'null'
                          year:
                            type:
                            - integer
                            - 'null'
                          make:
                            type:
                            - string
                            - 'null'
                          model:
                            type:
                            - string
                            - 'null'
                          photos:
                            type: array
                            items:
                              type: string
                          features:
                            type: array
                            items:
                              type: string
                          rules:
                            type:
                            - string
                            - 'null'
                          depositType:
                            type:
                            - string
                            - 'null'
                            enum:
                            - FIXED
                            - PERCENTAGE
                            - null
                          depositValue:
                            type:
                            - integer
                            - 'null'
                          fuelSurchargeEnabled:
                            type:
                            - boolean
                            - 'null'
                          fuelSurchargeAmount:
                            type:
                            - integer
                            - 'null'
                          minimumNoticeHours:
                            type: integer
                          harborId:
                            type: string
                          isActive:
                            type: boolean
                          isListed:
                            type: boolean
                          slipNumber:
                            type:
                            - string
                            - 'null'
                          gateCode:
                            type:
                            - string
                            - 'null'
                          slipInstructions:
                            type:
                            - string
                            - 'null'
                          createdAt:
                            type: string
                          updatedAt:
                            type: string
                        required:
                        - id
                        - ownerId
                        - name
                        - type
                        - description
                        - capacity
                        - lengthFeet
                        - year
                        - make
                        - model
                        - photos
                        - features
                        - rules
                        - depositType
                        - depositValue
                        - fuelSurchargeEnabled
                        - fuelSurchargeAmount
                        - minimumNoticeHours
                        - harborId
                        - isActive
                        - isListed
                        - slipNumber
                        - gateCode
                        - slipInstructions
                        - createdAt
                        - updatedAt
                    required:
                    - boat
                required:
                - data
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/IdempotencyConflict'
  /api/v1/boats/{id}:
    get:
      operationId: getBoatById
      summary: Get a single boat
      description: Returns the boat when it is owned by the caller. Foreign / unknown ids return 404 (existence is not leaked).
      tags:
      - Boats
      parameters:
      - schema:
          type: string
        required: true
        name: id
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      boat:
                        type: object
                        properties:
                          id:
                            type: string
                          ownerId:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - SAILBOAT
                            - POWERBOAT
                            - PONTOON
                            - JETSKI
                            - KAYAK
                            - CANOE
                            - YACHT
                            - OTHER
                          description:
                            type:
                            - string
                            - 'null'
                          capacity:
                            type: integer
                          lengthFeet:
                            type:
                            - integer
                            - 'null'
                          year:
                            type:
                            - integer
                            - 'null'
                          make:
                            type:
                            - string
                            - 'null'
                          model:
                            type:
                            - string
                            - 'null'
                          photos:
                            type: array
                            items:
                              type: string
                          features:
                            type: array
                            items:
                              type: string
                          rules:
                            type:
                            - string
                            - 'null'
                          depositType:
                            type:
                            - string
                            - 'null'
                            enum:
                            - FIXED
                            - PERCENTAGE
                            - null
                          depositValue:
                            type:
                            - integer
                            - 'null'
                          fuelSurchargeEnabled:
                            type:
                            - boolean
                            - 'null'
                          fuelSurchargeAmount:
                            type:
                            - integer
                            - 'null'
                          minimumNoticeHours:
                            type: integer
                          harborId:
                            type: string
                          isActive:
                            type: boolean
                          isListed:
                            type: boolean
                          slipNumber:
                            type:
                            - string
                            - 'null'
                          gateCode:
                            type:
                            - string
                            - 'null'
                          slipInstructions:
                            type:
                            - string
                            - 'null'
                          createdAt:
                            type: string
                          updatedAt:
                            type: string
                        required:
                        - id
                        - ownerId
                        - name
                        - type
                        - description
                        - capacity
                        - lengthFeet
                        - year
                        - make
                        - model
                        - photos
                        - features
                        - rules
                        - depositType
                        - depositValue
                        - fuelSurchargeEnabled
                        - fuelSurchargeAmount
                        - minimumNoticeHours
                        - harborId
                        - isActive
                        - isListed
                        - slipNumber
                        - gateCode
                        - slipInstructions
                        - createdAt
                        - updatedAt
                    required:
                    - boat
                required:
                - data
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: patchBoat
      summary: Partially update a boat
      description: 'Updates only the fields present in the body. To retire a boat: PATCH { isActive: false }. To unlist from the marketplace: PATCH { isListed: false }. Per spec §4.4 this endpoint is not idempotent (PATCH semantics).'
      tags:
      - Boats
      parameters:
      - schema:
          type: string
        required: true
        name: id
        in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                type:
                  type: string
                  enum:
                  - SAILBOAT
                  - POWERBOAT
                  - PONTOON
                  - JETSKI
                  - KAYAK
                  - CANOE
                  - YACHT
                  - OTHER
                harborId:
                  type: string
                  minLength: 1
                capacity:
                  type: integer
                  minimum: 1
                  maximum: 50
                slipNumber:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                gateCode:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                slipInstructions:
                  type:
                  - string
                  - 'null'
                  maxLength: 200
                fuelSurchargeEnabled:
                  type: boolean
                fuelSurchargeAmount:
                  type:
                  - integer
                  - 'null'
                  minimum: 0
                depositType:
                  type: string
                  enum:
                  - FIXED
                  - PERCENTAGE
                depositValue:
                  type: integer
                  minimum: 0
                photos:
                  type: array
                  items:
                    type: string
                    format: uri
                  default: []
                isActive:
                  type: boolean
                isListed:
                  type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      boat:
                        type: object
                        properties:
                          id:
                            type: string
                          ownerId:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - SAILBOAT
                            - POWERBOAT
                            - PONTOON
                            - JETSKI
                            - KAYAK
                            - CANOE
                            - YACHT
                            - OTHER
                          description:
                            type:
                            - string
                            - 'null'
                          capacity:
                            type: integer
                          lengthFeet:
                            type:
                            - integer
                            - 'null'
                          year:
                            type:
                            - integer
                            - 'null'
                          make:
                            type:
                            - string
                            - 'null'
                          model:
                            type:
                            - string
                            - 'null'
                          photos:
                            type: array
                            items:
                              type: string
                          features:
                            type: array
                            items:
                              type: string
                          rules:
                            type:
                            - string
                            - 'null'
                          depositType:
                            type:
                            - string
                            - 'null'
                            enum:
                            - FIXED
                            - PERCENTAGE
                            - null
                          depositValue:
                            type:
                            - integer
                            - 'null'
                          fuelSurchargeEnabled:
                            type:
                            - boolean
                            - 'null'
                          fuelSurchargeAmount:
                            type:
                            - integer
                            - 'null'
                          minimumNoticeHours:
                            type: integer
                          harborId:
                            type: string
                          isActive:
                            type: boolean
                          isListed:
                            type: boolean
                          slipNumber:
                            type:
                            - string
                            - 'null'
                          gateCode:
                            type:
                            - string
                            - 'null'
                          slipInstructions:
                            type:
                            - string
                            - 'null'
                          createdAt:
                            type: string
                          updatedAt:
                            type: string
                        required:
                        - id
                        - ownerId
                        - name
                        - type
                        - description
                        - capacity
                        - lengthFeet
                        - year
                        - make
                        - model
                        - photos
                        - features
                        - rules
                        - depositType
                        - depositValue
                        - fuelSurchargeEnabled
                        - fuelSurchargeAmount
                        - minimumNoticeHours
                        - harborId
                        - isActive
                        - isListed
                        - slipNumber
                        - gateCode
                        - slipInstructions
                        - createdAt
                        - updatedAt
                    required:
                    - boat
                required:
                - data
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: The requested resource does not exist (existence is not leaked).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication required, or the bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Authenticated but not permitted to access this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: Request body or query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    IdempotencyConflict:
      description: Idempotency-Key was reused with a different request body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IdempotencyConflictError'
  schemas:
    IdempotencyKeyHeader:
      type: string
      format: uuid
      description: Client-supplied UUID v4. Repeat requests with the same key return the cached response.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
          required:
          - message
          - code
      required:
      - error
    IdempotencyConflictError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
              enum:
              - IDEMPOTENCY_CONFLICT
          required:
          - message
          - code
      required:
      - error
  parameters:
    IdempotencyKeyHeader:
      schema:
        $ref: '#/components/schemas/IdempotencyKeyHeader'
      required: false
      description: Client-supplied UUID v4. Repeat requests with the same key return the cached response.
      name: Idempotency-Key
      in: header
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Clerk JWT token