{
  "openapi": "3.1.0",
  "info": {
    "title": "Renvo API",
    "description": "REST API for the Renvo rental platform.",
    "version": "2026-05-05",
    "contact": {
      "name": "Renvo Support",
      "url": "https://userenvo.com/docs",
      "email": "support@userenvo.com"
    }
  },
  "servers": [
    {
      "url": "https://userenvo.com/api",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "rv_live_…"
      }
    },
    "responses": {
      "AuthError": {
        "description": "Authentication failed",
        "content": {
          "application/json": {
            "example": {
              "error": {
                "type": "authentication_error",
                "message": "Invalid API key."
              }
            }
          }
        }
      },
      "PermissionError": {
        "description": "API access requires Pro plan or write scope",
        "content": {
          "application/json": {
            "example": {
              "error": {
                "type": "permission_error",
                "message": "API access requires the Pro plan."
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Vehicles",
      "description": "Cars in your fleet. Sync vehicle metadata, list availability, or wire your own intake forms to add new units."
    },
    {
      "name": "Customers",
      "description": "People who rent from you. Look up by email, sync new bookings from external tools, or update contact info."
    },
    {
      "name": "Rentals",
      "description": "A booking of a vehicle by a customer. Use to push rentals from your own intake or to sync them out to a calendar."
    },
    {
      "name": "Invoices",
      "description": "Bills sent to customers for rentals, tolls, and violations. Read-only via API; create invoices in the portal."
    },
    {
      "name": "Tolls",
      "description": "Toll transactions auto-imported from EZPass and other agencies. Attach to a customer to bill."
    },
    {
      "name": "Violations",
      "description": "Parking and camera violations imported from city APIs. Attach to a customer to bill."
    },
    {
      "name": "Leads",
      "description": "Pipe inbound inquiries from your own intake forms (Squarespace, Webflow, custom) into Renvo."
    }
  ],
  "paths": {
    "/v1/vehicles": {
      "get": {
        "operationId": "getVehicle",
        "summary": "List vehicles",
        "description": "Returns a paginated list of vehicles in your organization.",
        "tags": [
          "Vehicles"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "vehicle",
                      "id": "a4d2e1c0-9b…",
                      "name": "2024 Tesla Model Y",
                      "make": "Tesla",
                      "model": "Model Y",
                      "year": 2024,
                      "plate": "ABC1234",
                      "daily_rate": 150,
                      "status": "available"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Default 20. Max 100."
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Cursor for pagination."
          }
        ]
      },
      "post": {
        "operationId": "postVehicle",
        "summary": "Create a vehicle",
        "tags": [
          "Vehicles"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "vehicle",
                  "id": "a4d2e1c0-9b…",
                  "name": "2024 Tesla Model Y"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Display name."
                  },
                  "make": {
                    "type": "string",
                    "description": "Manufacturer."
                  },
                  "model": {
                    "type": "string",
                    "description": "Model."
                  },
                  "year": {
                    "type": "integer",
                    "description": "Model year."
                  },
                  "plate": {
                    "type": "string",
                    "description": "License plate."
                  },
                  "daily_rate": {
                    "type": "number",
                    "description": "Daily rate in your default currency."
                  },
                  "transponder_number": {
                    "type": "string",
                    "description": "EZPass tag number."
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/vehicles/{id}": {
      "get": {
        "operationId": "getVehicleById",
        "summary": "Retrieve a vehicle",
        "tags": [
          "Vehicles"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "vehicle",
                  "id": "a4d2e1c0-9b…",
                  "name": "2024 Tesla Model Y",
                  "daily_rate": 150
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Vehicle id."
          }
        ]
      },
      "patch": {
        "operationId": "patchVehicleById",
        "summary": "Update a vehicle",
        "tags": [
          "Vehicles"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "vehicle",
                  "id": "a4d2e1c0-9b…",
                  "status": "maintenance"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Vehicle id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "New status."
                  },
                  "daily_rate": {
                    "type": "number",
                    "description": "New daily rate."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/customers": {
      "get": {
        "operationId": "getCustomer",
        "summary": "List customers",
        "tags": [
          "Customers"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "customer",
                      "id": "cu_…",
                      "full_name": "Jane Doe",
                      "email": "jane@example.com"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Exact-match filter."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Default 20. Max 100."
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Cursor."
          }
        ]
      },
      "post": {
        "operationId": "postCustomer",
        "summary": "Create a customer",
        "tags": [
          "Customers"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "customer",
                  "id": "cu_…",
                  "full_name": "Jane Doe"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "full_name": {
                    "type": "string",
                    "description": "Customer name."
                  },
                  "email": {
                    "type": "string",
                    "description": "Email address."
                  },
                  "phone": {
                    "type": "string",
                    "description": "E.164 phone."
                  },
                  "preferred_language": {
                    "type": "string",
                    "description": "BCP 47 (default `en`)."
                  },
                  "source_channel": {
                    "type": "string",
                    "description": "Acquisition channel."
                  }
                },
                "required": [
                  "full_name"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/customers/{id}": {
      "get": {
        "operationId": "getCustomerById",
        "summary": "Retrieve a customer",
        "tags": [
          "Customers"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "customer",
                  "id": "cu_…",
                  "full_name": "Jane Doe"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Customer id."
          }
        ]
      },
      "patch": {
        "operationId": "patchCustomerById",
        "summary": "Update a customer",
        "tags": [
          "Customers"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "customer",
                  "id": "cu_…",
                  "email": "new@example.com"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Customer id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "New email."
                  },
                  "phone": {
                    "type": "string",
                    "description": "New phone."
                  },
                  "notes": {
                    "type": "string",
                    "description": "Internal notes."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/rentals": {
      "get": {
        "operationId": "getRental",
        "summary": "List rentals",
        "tags": [
          "Rentals"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "rental",
                      "id": "re_…",
                      "customer_id": "cu_…",
                      "vehicle_id": "a4…",
                      "status": "NEW"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by status."
          },
          {
            "name": "customer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by customer."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Default 20. Max 100."
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Cursor."
          }
        ]
      },
      "post": {
        "operationId": "postRental",
        "summary": "Create a rental",
        "tags": [
          "Rentals"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "rental",
                  "id": "re_…",
                  "status": "NEW"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "description": "Renting customer."
                  },
                  "vehicle_id": {
                    "type": "string",
                    "description": "Reserved vehicle."
                  },
                  "start_date": {
                    "type": "string",
                    "description": "Pickup date (YYYY-MM-DD)."
                  },
                  "end_date": {
                    "type": "string",
                    "description": "Return date."
                  },
                  "final_price": {
                    "type": "number",
                    "description": "Locked total price."
                  },
                  "status": {
                    "type": "string",
                    "description": "Defaults to `NEW`."
                  }
                },
                "required": [
                  "customer_id",
                  "vehicle_id"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/rentals/{id}": {
      "get": {
        "operationId": "getRentalById",
        "summary": "Retrieve a rental",
        "tags": [
          "Rentals"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "rental",
                  "id": "re_…",
                  "status": "APPROVED"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Rental id."
          }
        ]
      },
      "patch": {
        "operationId": "patchRentalById",
        "summary": "Update a rental",
        "description": "Setting `status` to `COMPLETED` or `CANCELLED` triggers the corresponding webhook event.",
        "tags": [
          "Rentals"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "rental",
                  "id": "re_…",
                  "status": "COMPLETED"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Rental id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "New status."
                  },
                  "damage_at_return": {
                    "type": "boolean",
                    "description": "Mark damage on return."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices": {
      "get": {
        "operationId": "getInvoice",
        "summary": "List invoices",
        "tags": [
          "Invoices"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "invoice",
                      "id": "in_…",
                      "invoice_number": "INV-1042",
                      "total": 450,
                      "status": "open"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by status."
          },
          {
            "name": "customer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by customer."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Default 20. Max 100."
          }
        ]
      }
    },
    "/v1/invoices/{id}": {
      "get": {
        "operationId": "getInvoiceById",
        "summary": "Retrieve an invoice",
        "tags": [
          "Invoices"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "invoice",
                  "id": "in_…",
                  "invoice_number": "INV-1042",
                  "total": 450,
                  "status": "paid"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Invoice id."
          }
        ]
      }
    },
    "/v1/tolls": {
      "get": {
        "operationId": "getToll",
        "summary": "List tolls",
        "tags": [
          "Tolls"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "toll",
                      "id": "to_…",
                      "amount": 12.5,
                      "agency": "EZPass NJ",
                      "vehicle_id": "a4…"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "vehicle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by vehicle."
          },
          {
            "name": "customer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by customer."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Default 20."
          }
        ]
      }
    },
    "/v1/tolls/{id}": {
      "get": {
        "operationId": "getTollById",
        "summary": "Retrieve a toll",
        "tags": [
          "Tolls"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "toll",
                  "id": "to_…",
                  "amount": 12.5
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Toll id."
          }
        ]
      },
      "patch": {
        "operationId": "patchTollById",
        "summary": "Attach toll to customer",
        "description": "Sets the customer to bill. Only `customer_id` is updatable.",
        "tags": [
          "Tolls"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "toll",
                  "id": "to_…",
                  "customer_id": "cu_…"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Toll id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "description": "Customer to bill."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/violations": {
      "get": {
        "operationId": "getViolation",
        "summary": "List violations",
        "tags": [
          "Violations"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "list",
                  "has_more": false,
                  "next_cursor": null,
                  "data": [
                    {
                      "object": "violation",
                      "id": "vi_…",
                      "summons_number": "8765432",
                      "amount_due": 115
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "vehicle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by vehicle."
          },
          {
            "name": "customer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter by customer."
          }
        ]
      }
    },
    "/v1/violations/{id}": {
      "get": {
        "operationId": "getViolationById",
        "summary": "Retrieve a violation",
        "tags": [
          "Violations"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "violation",
                  "id": "vi_…",
                  "amount_due": 115
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Violation id."
          }
        ]
      },
      "patch": {
        "operationId": "patchViolationById",
        "summary": "Attach violation to customer",
        "tags": [
          "Violations"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "violation",
                  "id": "vi_…",
                  "customer_id": "cu_…"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Violation id."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "description": "Customer to bill."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/leads": {
      "post": {
        "operationId": "postLead",
        "summary": "Create a lead",
        "tags": [
          "Leads"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "example": {
                  "object": "lead",
                  "id": "le_…",
                  "source_channel": "website",
                  "status": "NEW"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/AuthError"
          },
          "403": {
            "$ref": "#/components/responses/PermissionError"
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source_channel": {
                    "type": "string",
                    "description": "Where it came from (default `api`)."
                  },
                  "customer_id": {
                    "type": "string",
                    "description": "Link to existing customer if known."
                  },
                  "raw_data": {
                    "type": "object",
                    "description": "Form fields, notes — anything JSON-serializable."
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-webhook-events": [
    "rental.created",
    "rental.updated",
    "rental.completed",
    "rental.cancelled",
    "customer.created",
    "customer.updated",
    "invoice.created",
    "invoice.paid",
    "invoice.voided",
    "vehicle.created",
    "vehicle.updated",
    "toll.attached",
    "violation.attached",
    "lead.received"
  ]
}