{
  "openapi": "3.1.0",
  "info": {
    "title": "Voyant Operator API",
    "version": "0.0.0",
    "description": "Generated from the composed operator app. Do not edit by hand."
  },
  "servers": [
    {
      "url": "/",
      "description": "This deployment (same origin)"
    }
  ],
  "components": {
    "schemas": {
      "CatalogSearchFilter": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["eq"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              }
            },
            "required": ["kind", "field", "value"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["in"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "values": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            },
            "required": ["kind", "field", "values"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["range"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "gte": {
                "type": "number"
              },
              "lte": {
                "type": "number"
              }
            },
            "required": ["kind", "field"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["and"]
              },
              "clauses": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CatalogSearchFilter"
                }
              }
            },
            "required": ["kind", "clauses"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["or"]
              },
              "clauses": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CatalogSearchFilter"
                }
              }
            },
            "required": ["kind", "clauses"]
          }
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/v1/admin/quotes/pipelines": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": ["integer", "null"],
              "minimum": 0,
              "default": 0
            },
            "required": false,
            "name": "offset",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": ["organization", "person", "quote", "activity"]
            },
            "required": false,
            "name": "entityType",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of pipelines",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "entityType": {
                            "type": "string",
                            "enum": ["organization", "person", "quote", "activity"]
                          },
                          "name": {
                            "type": "string"
                          },
                          "isDefault": {
                            "type": "boolean"
                          },
                          "sortOrder": {
                            "type": "integer"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "entityType",
                          "name",
                          "isDefault",
                          "sortOrder",
                          "createdAt",
                          "updatedAt"
                        ]
                      }
                    },
                    "total": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "offset": {
                      "type": "integer"
                    }
                  },
                  "required": ["data", "total", "limit", "offset"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesPipelines",
        "summary": "GET /v1/admin/quotes/pipelines",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entityType": {
                    "type": "string",
                    "enum": ["organization", "person", "quote", "activity"],
                    "default": "quote"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "isDefault": {
                    "type": "boolean",
                    "default": false
                  },
                  "sortOrder": {
                    "type": "integer",
                    "default": 0
                  }
                },
                "required": ["name"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created pipeline",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "entityType": {
                          "type": "string",
                          "enum": ["organization", "person", "quote", "activity"]
                        },
                        "name": {
                          "type": "string"
                        },
                        "isDefault": {
                          "type": "boolean"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "entityType",
                        "name",
                        "isDefault",
                        "sortOrder",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesPipelines",
        "summary": "POST /v1/admin/quotes/pipelines",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/pipelines/{id}": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "A pipeline by id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "entityType": {
                          "type": "string",
                          "enum": ["organization", "person", "quote", "activity"]
                        },
                        "name": {
                          "type": "string"
                        },
                        "isDefault": {
                          "type": "boolean"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "entityType",
                        "name",
                        "isDefault",
                        "sortOrder",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Pipeline not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesPipelinesById",
        "summary": "GET /v1/admin/quotes/pipelines/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entityType": {
                    "type": "string",
                    "enum": ["organization", "person", "quote", "activity"],
                    "default": "quote"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "isDefault": {
                    "type": "boolean",
                    "default": false
                  },
                  "sortOrder": {
                    "type": "integer",
                    "default": 0
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated pipeline",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "entityType": {
                          "type": "string",
                          "enum": ["organization", "person", "quote", "activity"]
                        },
                        "name": {
                          "type": "string"
                        },
                        "isDefault": {
                          "type": "boolean"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "entityType",
                        "name",
                        "isDefault",
                        "sortOrder",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Pipeline not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesPipelinesById",
        "summary": "PATCH /v1/admin/quotes/pipelines/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Pipeline deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Pipeline not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Pipeline has dependent records",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesPipelinesById",
        "summary": "DELETE /v1/admin/quotes/pipelines/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/stages": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": ["integer", "null"],
              "minimum": 0,
              "default": 0
            },
            "required": false,
            "name": "offset",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "pipelineId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of stages",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "pipelineId": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "sortOrder": {
                            "type": "integer"
                          },
                          "probability": {
                            "type": ["integer", "null"]
                          },
                          "isClosed": {
                            "type": "boolean"
                          },
                          "isWon": {
                            "type": "boolean"
                          },
                          "isLost": {
                            "type": "boolean"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "pipelineId",
                          "name",
                          "sortOrder",
                          "probability",
                          "isClosed",
                          "isWon",
                          "isLost",
                          "createdAt",
                          "updatedAt"
                        ]
                      }
                    },
                    "total": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "offset": {
                      "type": "integer"
                    }
                  },
                  "required": ["data", "total", "limit", "offset"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesStages",
        "summary": "GET /v1/admin/quotes/stages",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "pipelineId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "sortOrder": {
                    "type": "integer",
                    "default": 0
                  },
                  "probability": {
                    "type": ["integer", "null"],
                    "minimum": 0,
                    "maximum": 100
                  },
                  "isClosed": {
                    "type": "boolean",
                    "default": false
                  },
                  "isWon": {
                    "type": "boolean",
                    "default": false
                  },
                  "isLost": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": ["pipelineId", "name"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created stage",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "probability": {
                          "type": ["integer", "null"]
                        },
                        "isClosed": {
                          "type": "boolean"
                        },
                        "isWon": {
                          "type": "boolean"
                        },
                        "isLost": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "pipelineId",
                        "name",
                        "sortOrder",
                        "probability",
                        "isClosed",
                        "isWon",
                        "isLost",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesStages",
        "summary": "POST /v1/admin/quotes/stages",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/stages/{id}": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "A stage by id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "probability": {
                          "type": ["integer", "null"]
                        },
                        "isClosed": {
                          "type": "boolean"
                        },
                        "isWon": {
                          "type": "boolean"
                        },
                        "isLost": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "pipelineId",
                        "name",
                        "sortOrder",
                        "probability",
                        "isClosed",
                        "isWon",
                        "isLost",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Stage not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesStagesById",
        "summary": "GET /v1/admin/quotes/stages/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "pipelineId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "sortOrder": {
                    "type": "integer",
                    "default": 0
                  },
                  "probability": {
                    "type": ["integer", "null"],
                    "minimum": 0,
                    "maximum": 100
                  },
                  "isClosed": {
                    "type": "boolean",
                    "default": false
                  },
                  "isWon": {
                    "type": "boolean",
                    "default": false
                  },
                  "isLost": {
                    "type": "boolean",
                    "default": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated stage",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "probability": {
                          "type": ["integer", "null"]
                        },
                        "isClosed": {
                          "type": "boolean"
                        },
                        "isWon": {
                          "type": "boolean"
                        },
                        "isLost": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "pipelineId",
                        "name",
                        "sortOrder",
                        "probability",
                        "isClosed",
                        "isWon",
                        "isLost",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Stage not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesStagesById",
        "summary": "PATCH /v1/admin/quotes/stages/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Stage deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Stage not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesStagesById",
        "summary": "DELETE /v1/admin/quotes/stages/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": ["integer", "null"],
              "minimum": 0,
              "default": 0
            },
            "required": false,
            "name": "offset",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "personId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "organizationId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "pipelineId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "stageId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "ownerId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": ["open", "won", "lost", "archived"]
            },
            "required": false,
            "name": "status",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "search",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of quotes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "personId": {
                            "type": ["string", "null"]
                          },
                          "organizationId": {
                            "type": ["string", "null"]
                          },
                          "pipelineId": {
                            "type": "string"
                          },
                          "stageId": {
                            "type": "string"
                          },
                          "ownerId": {
                            "type": ["string", "null"]
                          },
                          "status": {
                            "type": "string",
                            "enum": ["open", "won", "lost", "archived"]
                          },
                          "acceptedVersionId": {
                            "type": ["string", "null"]
                          },
                          "valueAmountCents": {
                            "type": ["integer", "null"]
                          },
                          "valueCurrency": {
                            "type": ["string", "null"]
                          },
                          "paxCount": {
                            "type": ["integer", "null"]
                          },
                          "expectedCloseDate": {
                            "type": ["string", "null"]
                          },
                          "source": {
                            "type": ["string", "null"]
                          },
                          "sourceRef": {
                            "type": ["string", "null"]
                          },
                          "lostReason": {
                            "type": ["string", "null"]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "customFields": {
                            "type": "object",
                            "additionalProperties": {}
                          },
                          "description": {
                            "type": ["string", "null"]
                          },
                          "createdBy": {
                            "type": ["string", "null"]
                          },
                          "updatedBy": {
                            "type": ["string", "null"]
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          },
                          "stageChangedAt": {
                            "type": "string"
                          },
                          "closedAt": {
                            "type": ["string", "null"]
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "personId",
                          "organizationId",
                          "pipelineId",
                          "stageId",
                          "ownerId",
                          "status",
                          "acceptedVersionId",
                          "valueAmountCents",
                          "valueCurrency",
                          "paxCount",
                          "expectedCloseDate",
                          "source",
                          "sourceRef",
                          "lostReason",
                          "tags",
                          "customFields",
                          "description",
                          "createdBy",
                          "updatedBy",
                          "createdAt",
                          "updatedAt",
                          "stageChangedAt",
                          "closedAt"
                        ]
                      }
                    },
                    "total": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "offset": {
                      "type": "integer"
                    }
                  },
                  "required": ["data", "total", "limit", "offset"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuotes",
        "summary": "GET /v1/admin/quotes/quotes",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "personId": {
                    "type": ["string", "null"]
                  },
                  "organizationId": {
                    "type": ["string", "null"]
                  },
                  "pipelineId": {
                    "type": "string"
                  },
                  "stageId": {
                    "type": "string"
                  },
                  "ownerId": {
                    "type": ["string", "null"]
                  },
                  "status": {
                    "type": "string",
                    "enum": ["open", "won", "lost", "archived"],
                    "default": "open"
                  },
                  "acceptedVersionId": {
                    "type": ["string", "null"]
                  },
                  "valueAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "valueCurrency": {
                    "type": ["string", "null"]
                  },
                  "paxCount": {
                    "type": ["integer", "null"],
                    "minimum": 0
                  },
                  "description": {
                    "type": ["string", "null"]
                  },
                  "expectedCloseDate": {
                    "type": ["string", "null"],
                    "format": "date"
                  },
                  "source": {
                    "type": ["string", "null"]
                  },
                  "sourceRef": {
                    "type": ["string", "null"]
                  },
                  "lostReason": {
                    "type": ["string", "null"]
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "default": []
                  }
                },
                "required": ["title", "pipelineId", "stageId"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "personId": {
                          "type": ["string", "null"]
                        },
                        "organizationId": {
                          "type": ["string", "null"]
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "stageId": {
                          "type": "string"
                        },
                        "ownerId": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["open", "won", "lost", "archived"]
                        },
                        "acceptedVersionId": {
                          "type": ["string", "null"]
                        },
                        "valueAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "valueCurrency": {
                          "type": ["string", "null"]
                        },
                        "paxCount": {
                          "type": ["integer", "null"]
                        },
                        "expectedCloseDate": {
                          "type": ["string", "null"]
                        },
                        "source": {
                          "type": ["string", "null"]
                        },
                        "sourceRef": {
                          "type": ["string", "null"]
                        },
                        "lostReason": {
                          "type": ["string", "null"]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customFields": {
                          "type": "object",
                          "additionalProperties": {}
                        },
                        "description": {
                          "type": ["string", "null"]
                        },
                        "createdBy": {
                          "type": ["string", "null"]
                        },
                        "updatedBy": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "stageChangedAt": {
                          "type": "string"
                        },
                        "closedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "personId",
                        "organizationId",
                        "pipelineId",
                        "stageId",
                        "ownerId",
                        "status",
                        "acceptedVersionId",
                        "valueAmountCents",
                        "valueCurrency",
                        "paxCount",
                        "expectedCloseDate",
                        "source",
                        "sourceRef",
                        "lostReason",
                        "tags",
                        "customFields",
                        "description",
                        "createdBy",
                        "updatedBy",
                        "createdAt",
                        "updatedAt",
                        "stageChangedAt",
                        "closedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotes",
        "summary": "POST /v1/admin/quotes/quotes",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "A quote by id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "personId": {
                          "type": ["string", "null"]
                        },
                        "organizationId": {
                          "type": ["string", "null"]
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "stageId": {
                          "type": "string"
                        },
                        "ownerId": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["open", "won", "lost", "archived"]
                        },
                        "acceptedVersionId": {
                          "type": ["string", "null"]
                        },
                        "valueAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "valueCurrency": {
                          "type": ["string", "null"]
                        },
                        "paxCount": {
                          "type": ["integer", "null"]
                        },
                        "expectedCloseDate": {
                          "type": ["string", "null"]
                        },
                        "source": {
                          "type": ["string", "null"]
                        },
                        "sourceRef": {
                          "type": ["string", "null"]
                        },
                        "lostReason": {
                          "type": ["string", "null"]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customFields": {
                          "type": "object",
                          "additionalProperties": {}
                        },
                        "description": {
                          "type": ["string", "null"]
                        },
                        "createdBy": {
                          "type": ["string", "null"]
                        },
                        "updatedBy": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "stageChangedAt": {
                          "type": "string"
                        },
                        "closedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "personId",
                        "organizationId",
                        "pipelineId",
                        "stageId",
                        "ownerId",
                        "status",
                        "acceptedVersionId",
                        "valueAmountCents",
                        "valueCurrency",
                        "paxCount",
                        "expectedCloseDate",
                        "source",
                        "sourceRef",
                        "lostReason",
                        "tags",
                        "customFields",
                        "description",
                        "createdBy",
                        "updatedBy",
                        "createdAt",
                        "updatedAt",
                        "stageChangedAt",
                        "closedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuotesById",
        "summary": "GET /v1/admin/quotes/quotes/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "personId": {
                    "type": ["string", "null"]
                  },
                  "organizationId": {
                    "type": ["string", "null"]
                  },
                  "pipelineId": {
                    "type": "string"
                  },
                  "stageId": {
                    "type": "string"
                  },
                  "ownerId": {
                    "type": ["string", "null"]
                  },
                  "status": {
                    "type": "string",
                    "enum": ["open", "won", "lost", "archived"],
                    "default": "open"
                  },
                  "acceptedVersionId": {
                    "type": ["string", "null"]
                  },
                  "valueAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "valueCurrency": {
                    "type": ["string", "null"]
                  },
                  "paxCount": {
                    "type": ["integer", "null"],
                    "minimum": 0
                  },
                  "description": {
                    "type": ["string", "null"]
                  },
                  "expectedCloseDate": {
                    "type": ["string", "null"],
                    "format": "date"
                  },
                  "source": {
                    "type": ["string", "null"]
                  },
                  "sourceRef": {
                    "type": ["string", "null"]
                  },
                  "lostReason": {
                    "type": ["string", "null"]
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "default": []
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "personId": {
                          "type": ["string", "null"]
                        },
                        "organizationId": {
                          "type": ["string", "null"]
                        },
                        "pipelineId": {
                          "type": "string"
                        },
                        "stageId": {
                          "type": "string"
                        },
                        "ownerId": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["open", "won", "lost", "archived"]
                        },
                        "acceptedVersionId": {
                          "type": ["string", "null"]
                        },
                        "valueAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "valueCurrency": {
                          "type": ["string", "null"]
                        },
                        "paxCount": {
                          "type": ["integer", "null"]
                        },
                        "expectedCloseDate": {
                          "type": ["string", "null"]
                        },
                        "source": {
                          "type": ["string", "null"]
                        },
                        "sourceRef": {
                          "type": ["string", "null"]
                        },
                        "lostReason": {
                          "type": ["string", "null"]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customFields": {
                          "type": "object",
                          "additionalProperties": {}
                        },
                        "description": {
                          "type": ["string", "null"]
                        },
                        "createdBy": {
                          "type": ["string", "null"]
                        },
                        "updatedBy": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "stageChangedAt": {
                          "type": "string"
                        },
                        "closedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "personId",
                        "organizationId",
                        "pipelineId",
                        "stageId",
                        "ownerId",
                        "status",
                        "acceptedVersionId",
                        "valueAmountCents",
                        "valueCurrency",
                        "paxCount",
                        "expectedCloseDate",
                        "source",
                        "sourceRef",
                        "lostReason",
                        "tags",
                        "customFields",
                        "description",
                        "createdBy",
                        "updatedBy",
                        "createdAt",
                        "updatedAt",
                        "stageChangedAt",
                        "closedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesQuotesById",
        "summary": "PATCH /v1/admin/quotes/quotes/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuotesById",
        "summary": "DELETE /v1/admin/quotes/quotes/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}/participants": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Participants for a quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteId": {
                            "type": "string"
                          },
                          "personId": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string",
                            "enum": ["traveler", "booker", "decision_maker", "finance", "other"]
                          },
                          "isPrimary": {
                            "type": "boolean"
                          },
                          "createdAt": {
                            "type": "string"
                          }
                        },
                        "required": ["id", "quoteId", "personId", "role", "isPrimary", "createdAt"]
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuotesByIdParticipants",
        "summary": "GET /v1/admin/quotes/quotes/{id}/participants",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "personId": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string",
                    "enum": ["traveler", "booker", "decision_maker", "finance", "other"],
                    "default": "other"
                  },
                  "isPrimary": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": ["personId"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote participant",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "personId": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string",
                          "enum": ["traveler", "booker", "decision_maker", "finance", "other"]
                        },
                        "isPrimary": {
                          "type": "boolean"
                        },
                        "createdAt": {
                          "type": "string"
                        }
                      },
                      "required": ["id", "quoteId", "personId", "role", "isPrimary", "createdAt"]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotesByIdParticipants",
        "summary": "POST /v1/admin/quotes/quotes/{id}/participants",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-participants/{id}": {
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote participant deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote participant not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuoteParticipantsById",
        "summary": "DELETE /v1/admin/quotes/quote-participants/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}/products": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Products for a quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteId": {
                            "type": "string"
                          },
                          "productId": {
                            "type": ["string", "null"]
                          },
                          "supplierServiceId": {
                            "type": ["string", "null"]
                          },
                          "nameSnapshot": {
                            "type": "string"
                          },
                          "description": {
                            "type": ["string", "null"]
                          },
                          "quantity": {
                            "type": "integer"
                          },
                          "unitPriceAmountCents": {
                            "type": ["integer", "null"]
                          },
                          "costAmountCents": {
                            "type": ["integer", "null"]
                          },
                          "currency": {
                            "type": ["string", "null"]
                          },
                          "discountAmountCents": {
                            "type": ["integer", "null"]
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "quoteId",
                          "productId",
                          "supplierServiceId",
                          "nameSnapshot",
                          "description",
                          "quantity",
                          "unitPriceAmountCents",
                          "costAmountCents",
                          "currency",
                          "discountAmountCents",
                          "createdAt",
                          "updatedAt"
                        ]
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuotesByIdProducts",
        "summary": "GET /v1/admin/quotes/quotes/{id}/products",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "productId": {
                    "type": ["string", "null"]
                  },
                  "supplierServiceId": {
                    "type": ["string", "null"]
                  },
                  "nameSnapshot": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": ["string", "null"]
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1
                  },
                  "unitPriceAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "costAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "currency": {
                    "type": ["string", "null"]
                  },
                  "discountAmountCents": {
                    "type": ["integer", "null"]
                  }
                },
                "required": ["nameSnapshot"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote product",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "productId": {
                          "type": ["string", "null"]
                        },
                        "supplierServiceId": {
                          "type": ["string", "null"]
                        },
                        "nameSnapshot": {
                          "type": "string"
                        },
                        "description": {
                          "type": ["string", "null"]
                        },
                        "quantity": {
                          "type": "integer"
                        },
                        "unitPriceAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "costAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "currency": {
                          "type": ["string", "null"]
                        },
                        "discountAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "productId",
                        "supplierServiceId",
                        "nameSnapshot",
                        "description",
                        "quantity",
                        "unitPriceAmountCents",
                        "costAmountCents",
                        "currency",
                        "discountAmountCents",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotesByIdProducts",
        "summary": "POST /v1/admin/quotes/quotes/{id}/products",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-products/{id}": {
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "productId": {
                    "type": ["string", "null"]
                  },
                  "supplierServiceId": {
                    "type": ["string", "null"]
                  },
                  "nameSnapshot": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": ["string", "null"]
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1
                  },
                  "unitPriceAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "costAmountCents": {
                    "type": ["integer", "null"]
                  },
                  "currency": {
                    "type": ["string", "null"]
                  },
                  "discountAmountCents": {
                    "type": ["integer", "null"]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated quote product",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "productId": {
                          "type": ["string", "null"]
                        },
                        "supplierServiceId": {
                          "type": ["string", "null"]
                        },
                        "nameSnapshot": {
                          "type": "string"
                        },
                        "description": {
                          "type": ["string", "null"]
                        },
                        "quantity": {
                          "type": "integer"
                        },
                        "unitPriceAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "costAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "currency": {
                          "type": ["string", "null"]
                        },
                        "discountAmountCents": {
                          "type": ["integer", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "productId",
                        "supplierServiceId",
                        "nameSnapshot",
                        "description",
                        "quantity",
                        "unitPriceAmountCents",
                        "costAmountCents",
                        "currency",
                        "discountAmountCents",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote product not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesQuoteProductsById",
        "summary": "PATCH /v1/admin/quotes/quote-products/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote product deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote product not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuoteProductsById",
        "summary": "DELETE /v1/admin/quotes/quote-products/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}/media": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Media for a quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteId": {
                            "type": "string"
                          },
                          "mediaType": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "storageKey": {
                            "type": ["string", "null"]
                          },
                          "mimeType": {
                            "type": ["string", "null"]
                          },
                          "fileSize": {
                            "type": ["integer", "null"]
                          },
                          "altText": {
                            "type": ["string", "null"]
                          },
                          "sortOrder": {
                            "type": "integer"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "quoteId",
                          "mediaType",
                          "name",
                          "url",
                          "storageKey",
                          "mimeType",
                          "fileSize",
                          "altText",
                          "sortOrder",
                          "createdAt",
                          "updatedAt"
                        ]
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuotesByIdMedia",
        "summary": "GET /v1/admin/quotes/quotes/{id}/media",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mediaType": {
                    "type": "string",
                    "enum": ["image", "video", "document"],
                    "default": "image"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "minLength": 1
                  },
                  "storageKey": {
                    "type": ["string", "null"]
                  },
                  "mimeType": {
                    "type": ["string", "null"]
                  },
                  "fileSize": {
                    "type": ["integer", "null"]
                  },
                  "altText": {
                    "type": ["string", "null"]
                  },
                  "sortOrder": {
                    "type": "integer"
                  }
                },
                "required": ["name", "url"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote media",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "mediaType": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        },
                        "storageKey": {
                          "type": ["string", "null"]
                        },
                        "mimeType": {
                          "type": ["string", "null"]
                        },
                        "fileSize": {
                          "type": ["integer", "null"]
                        },
                        "altText": {
                          "type": ["string", "null"]
                        },
                        "sortOrder": {
                          "type": "integer"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "mediaType",
                        "name",
                        "url",
                        "storageKey",
                        "mimeType",
                        "fileSize",
                        "altText",
                        "sortOrder",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotesByIdMedia",
        "summary": "POST /v1/admin/quotes/quotes/{id}/media",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-media/{id}": {
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote media deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote media not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuoteMediaById",
        "summary": "DELETE /v1/admin/quotes/quote-media/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": ["integer", "null"],
              "minimum": 0,
              "default": 0
            },
            "required": false,
            "name": "offset",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "quoteId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
            },
            "required": false,
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of quote versions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteId": {
                            "type": "string"
                          },
                          "label": {
                            "type": ["string", "null"]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "draft",
                              "sent",
                              "accepted",
                              "declined",
                              "superseded",
                              "expired"
                            ]
                          },
                          "supersedesId": {
                            "type": ["string", "null"]
                          },
                          "tripSnapshotId": {
                            "type": ["string", "null"]
                          },
                          "validUntil": {
                            "type": ["string", "null"]
                          },
                          "currency": {
                            "type": "string"
                          },
                          "subtotalAmountCents": {
                            "type": "integer"
                          },
                          "taxAmountCents": {
                            "type": "integer"
                          },
                          "totalAmountCents": {
                            "type": "integer"
                          },
                          "notes": {
                            "type": ["string", "null"]
                          },
                          "sentAt": {
                            "type": ["string", "null"]
                          },
                          "viewedAt": {
                            "type": ["string", "null"]
                          },
                          "decidedAt": {
                            "type": ["string", "null"]
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          },
                          "archivedAt": {
                            "type": ["string", "null"]
                          }
                        },
                        "required": [
                          "id",
                          "quoteId",
                          "label",
                          "status",
                          "supersedesId",
                          "tripSnapshotId",
                          "validUntil",
                          "currency",
                          "subtotalAmountCents",
                          "taxAmountCents",
                          "totalAmountCents",
                          "notes",
                          "sentAt",
                          "viewedAt",
                          "decidedAt",
                          "createdAt",
                          "updatedAt",
                          "archivedAt"
                        ]
                      }
                    },
                    "total": {
                      "type": "integer"
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "offset": {
                      "type": "integer"
                    }
                  },
                  "required": ["data", "total", "limit", "offset"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuoteVersions",
        "summary": "GET /v1/admin/quotes/quote-versions",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}/versions": {
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": ["string", "null"]
                  },
                  "status": {
                    "type": "string",
                    "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"],
                    "default": "draft"
                  },
                  "supersedesId": {
                    "type": ["string", "null"]
                  },
                  "tripSnapshotId": {
                    "type": ["string", "null"]
                  },
                  "validUntil": {
                    "type": ["string", "null"],
                    "format": "date"
                  },
                  "currency": {
                    "type": "string",
                    "minLength": 1
                  },
                  "subtotalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "taxAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "totalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "notes": {
                    "type": ["string", "null"]
                  },
                  "sentAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  },
                  "viewedAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  },
                  "decidedAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  }
                },
                "required": ["currency"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotesByIdVersions",
        "summary": "POST /v1/admin/quotes/quotes/{id}/versions",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/validity": {
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "validUntil": {
                    "type": ["string", "null"],
                    "format": "date"
                  }
                },
                "required": ["validUntil"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The quote version with updated validity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesQuoteVersionsByIdValidity",
        "summary": "PATCH /v1/admin/quotes/quote-versions/{id}/validity",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quotes/{id}/versions/snapshot": {
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "201": {
            "description": "The created quote version snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuotesByIdVersionsSnapshot",
        "summary": "POST /v1/admin/quotes/quotes/{id}/versions/snapshot",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/expire": {
      "post": {
        "description": "Expire every sent quote version past its validity date. Accepts an optional `now` JSON body; an empty or absent body is accepted. The body is parsed in the handler (not as a declared OpenAPI request body) because Hono's JSON validator would reject a zero-length `application/json` request before the handler runs.",
        "responses": {
          "200": {
            "description": "The expired quote versions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteId": {
                            "type": "string"
                          },
                          "label": {
                            "type": ["string", "null"]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "draft",
                              "sent",
                              "accepted",
                              "declined",
                              "superseded",
                              "expired"
                            ]
                          },
                          "supersedesId": {
                            "type": ["string", "null"]
                          },
                          "tripSnapshotId": {
                            "type": ["string", "null"]
                          },
                          "validUntil": {
                            "type": ["string", "null"]
                          },
                          "currency": {
                            "type": "string"
                          },
                          "subtotalAmountCents": {
                            "type": "integer"
                          },
                          "taxAmountCents": {
                            "type": "integer"
                          },
                          "totalAmountCents": {
                            "type": "integer"
                          },
                          "notes": {
                            "type": ["string", "null"]
                          },
                          "sentAt": {
                            "type": ["string", "null"]
                          },
                          "viewedAt": {
                            "type": ["string", "null"]
                          },
                          "decidedAt": {
                            "type": ["string", "null"]
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          },
                          "archivedAt": {
                            "type": ["string", "null"]
                          }
                        },
                        "required": [
                          "id",
                          "quoteId",
                          "label",
                          "status",
                          "supersedesId",
                          "tripSnapshotId",
                          "validUntil",
                          "currency",
                          "subtotalAmountCents",
                          "taxAmountCents",
                          "totalAmountCents",
                          "notes",
                          "sentAt",
                          "viewedAt",
                          "decidedAt",
                          "createdAt",
                          "updatedAt",
                          "archivedAt"
                        ]
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsExpire",
        "summary": "POST /v1/admin/quotes/quote-versions/expire",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "A quote version by id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuoteVersionsById",
        "summary": "GET /v1/admin/quotes/quote-versions/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "quoteId": {
                    "type": "string"
                  },
                  "label": {
                    "type": ["string", "null"]
                  },
                  "status": {
                    "type": "string",
                    "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                  },
                  "supersedesId": {
                    "type": ["string", "null"]
                  },
                  "tripSnapshotId": {
                    "type": ["string", "null"]
                  },
                  "validUntil": {
                    "type": ["string", "null"],
                    "format": "date"
                  },
                  "currency": {
                    "type": "string",
                    "minLength": 1
                  },
                  "subtotalAmountCents": {
                    "type": "integer"
                  },
                  "taxAmountCents": {
                    "type": "integer"
                  },
                  "totalAmountCents": {
                    "type": "integer"
                  },
                  "notes": {
                    "type": ["string", "null"]
                  },
                  "sentAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  },
                  "viewedAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  },
                  "decidedAt": {
                    "type": ["string", "null"],
                    "format": "date-time"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated quote version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesQuoteVersionsById",
        "summary": "PATCH /v1/admin/quotes/quote-versions/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote version deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuoteVersionsById",
        "summary": "DELETE /v1/admin/quotes/quote-versions/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/trip-snapshot": {
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tripSnapshotId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "currency": {
                    "type": "string",
                    "minLength": 1
                  },
                  "subtotalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "taxAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "totalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "lines": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "productId": {
                          "type": ["string", "null"]
                        },
                        "supplierServiceId": {
                          "type": ["string", "null"]
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1
                        },
                        "quantity": {
                          "type": "integer",
                          "minimum": 1,
                          "default": 1
                        },
                        "unitPriceAmountCents": {
                          "type": "integer",
                          "default": 0
                        },
                        "totalAmountCents": {
                          "type": "integer",
                          "default": 0
                        },
                        "currency": {
                          "type": "string",
                          "minLength": 1
                        },
                        "componentId": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": ["description", "currency"]
                    },
                    "default": []
                  }
                },
                "required": ["tripSnapshotId", "currency"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The quote version with the applied trip snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "quoteVersion": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "quoteId": {
                              "type": "string"
                            },
                            "label": {
                              "type": ["string", "null"]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "draft",
                                "sent",
                                "accepted",
                                "declined",
                                "superseded",
                                "expired"
                              ]
                            },
                            "supersedesId": {
                              "type": ["string", "null"]
                            },
                            "tripSnapshotId": {
                              "type": ["string", "null"]
                            },
                            "validUntil": {
                              "type": ["string", "null"]
                            },
                            "currency": {
                              "type": "string"
                            },
                            "subtotalAmountCents": {
                              "type": "integer"
                            },
                            "taxAmountCents": {
                              "type": "integer"
                            },
                            "totalAmountCents": {
                              "type": "integer"
                            },
                            "notes": {
                              "type": ["string", "null"]
                            },
                            "sentAt": {
                              "type": ["string", "null"]
                            },
                            "viewedAt": {
                              "type": ["string", "null"]
                            },
                            "decidedAt": {
                              "type": ["string", "null"]
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            },
                            "archivedAt": {
                              "type": ["string", "null"]
                            }
                          },
                          "required": [
                            "id",
                            "quoteId",
                            "label",
                            "status",
                            "supersedesId",
                            "tripSnapshotId",
                            "validUntil",
                            "currency",
                            "subtotalAmountCents",
                            "taxAmountCents",
                            "totalAmountCents",
                            "notes",
                            "sentAt",
                            "viewedAt",
                            "decidedAt",
                            "createdAt",
                            "updatedAt",
                            "archivedAt"
                          ]
                        },
                        "lines": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "quoteVersionId": {
                                "type": "string"
                              },
                              "productId": {
                                "type": ["string", "null"]
                              },
                              "supplierServiceId": {
                                "type": ["string", "null"]
                              },
                              "description": {
                                "type": "string"
                              },
                              "quantity": {
                                "type": "integer"
                              },
                              "unitPriceAmountCents": {
                                "type": "integer"
                              },
                              "totalAmountCents": {
                                "type": "integer"
                              },
                              "currency": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "quoteVersionId",
                              "productId",
                              "supplierServiceId",
                              "description",
                              "quantity",
                              "unitPriceAmountCents",
                              "totalAmountCents",
                              "currency",
                              "createdAt",
                              "updatedAt"
                            ]
                          }
                        }
                      },
                      "required": ["quoteVersion", "lines"]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdTripSnapshot",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/trip-snapshot",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/send": {
      "post": {
        "description": "Send a quote version for client review. Accepts an optional `validUntil` JSON body; an empty or absent body is accepted. The body is parsed in the handler (not as a declared OpenAPI request body) because Hono's JSON validator would reject a zero-length `application/json` request before the handler runs.",
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "The sent quote version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdSend",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/send",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/view": {
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "The quote version marked as viewed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdView",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/view",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/accept": {
      "post": {
        "description": "Accept a sent quote version. Accepts an optional JSON body; an empty or absent body is accepted. The body is parsed in the handler (not as a declared OpenAPI request body) because Hono's JSON validator would reject a zero-length `application/json` request before the handler runs.",
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "The accepted quote version and its quote",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "personId": {
                              "type": ["string", "null"]
                            },
                            "organizationId": {
                              "type": ["string", "null"]
                            },
                            "pipelineId": {
                              "type": "string"
                            },
                            "stageId": {
                              "type": "string"
                            },
                            "ownerId": {
                              "type": ["string", "null"]
                            },
                            "status": {
                              "type": "string",
                              "enum": ["open", "won", "lost", "archived"]
                            },
                            "acceptedVersionId": {
                              "type": ["string", "null"]
                            },
                            "valueAmountCents": {
                              "type": ["integer", "null"]
                            },
                            "valueCurrency": {
                              "type": ["string", "null"]
                            },
                            "paxCount": {
                              "type": ["integer", "null"]
                            },
                            "expectedCloseDate": {
                              "type": ["string", "null"]
                            },
                            "source": {
                              "type": ["string", "null"]
                            },
                            "sourceRef": {
                              "type": ["string", "null"]
                            },
                            "lostReason": {
                              "type": ["string", "null"]
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "customFields": {
                              "type": "object",
                              "additionalProperties": {}
                            },
                            "description": {
                              "type": ["string", "null"]
                            },
                            "createdBy": {
                              "type": ["string", "null"]
                            },
                            "updatedBy": {
                              "type": ["string", "null"]
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            },
                            "stageChangedAt": {
                              "type": "string"
                            },
                            "closedAt": {
                              "type": ["string", "null"]
                            }
                          },
                          "required": [
                            "id",
                            "title",
                            "personId",
                            "organizationId",
                            "pipelineId",
                            "stageId",
                            "ownerId",
                            "status",
                            "acceptedVersionId",
                            "valueAmountCents",
                            "valueCurrency",
                            "paxCount",
                            "expectedCloseDate",
                            "source",
                            "sourceRef",
                            "lostReason",
                            "tags",
                            "customFields",
                            "description",
                            "createdBy",
                            "updatedBy",
                            "createdAt",
                            "updatedAt",
                            "stageChangedAt",
                            "closedAt"
                          ]
                        },
                        "quoteVersion": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "quoteId": {
                              "type": "string"
                            },
                            "label": {
                              "type": ["string", "null"]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "draft",
                                "sent",
                                "accepted",
                                "declined",
                                "superseded",
                                "expired"
                              ]
                            },
                            "supersedesId": {
                              "type": ["string", "null"]
                            },
                            "tripSnapshotId": {
                              "type": ["string", "null"]
                            },
                            "validUntil": {
                              "type": ["string", "null"]
                            },
                            "currency": {
                              "type": "string"
                            },
                            "subtotalAmountCents": {
                              "type": "integer"
                            },
                            "taxAmountCents": {
                              "type": "integer"
                            },
                            "totalAmountCents": {
                              "type": "integer"
                            },
                            "notes": {
                              "type": ["string", "null"]
                            },
                            "sentAt": {
                              "type": ["string", "null"]
                            },
                            "viewedAt": {
                              "type": ["string", "null"]
                            },
                            "decidedAt": {
                              "type": ["string", "null"]
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            },
                            "archivedAt": {
                              "type": ["string", "null"]
                            }
                          },
                          "required": [
                            "id",
                            "quoteId",
                            "label",
                            "status",
                            "supersedesId",
                            "tripSnapshotId",
                            "validUntil",
                            "currency",
                            "subtotalAmountCents",
                            "taxAmountCents",
                            "totalAmountCents",
                            "notes",
                            "sentAt",
                            "viewedAt",
                            "decidedAt",
                            "createdAt",
                            "updatedAt",
                            "archivedAt"
                          ]
                        },
                        "closedQuoteVersions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "quoteId": {
                                "type": "string"
                              },
                              "label": {
                                "type": ["string", "null"]
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "draft",
                                  "sent",
                                  "accepted",
                                  "declined",
                                  "superseded",
                                  "expired"
                                ]
                              },
                              "supersedesId": {
                                "type": ["string", "null"]
                              },
                              "tripSnapshotId": {
                                "type": ["string", "null"]
                              },
                              "validUntil": {
                                "type": ["string", "null"]
                              },
                              "currency": {
                                "type": "string"
                              },
                              "subtotalAmountCents": {
                                "type": "integer"
                              },
                              "taxAmountCents": {
                                "type": "integer"
                              },
                              "totalAmountCents": {
                                "type": "integer"
                              },
                              "notes": {
                                "type": ["string", "null"]
                              },
                              "sentAt": {
                                "type": ["string", "null"]
                              },
                              "viewedAt": {
                                "type": ["string", "null"]
                              },
                              "decidedAt": {
                                "type": ["string", "null"]
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": "string"
                              },
                              "archivedAt": {
                                "type": ["string", "null"]
                              }
                            },
                            "required": [
                              "id",
                              "quoteId",
                              "label",
                              "status",
                              "supersedesId",
                              "tripSnapshotId",
                              "validUntil",
                              "currency",
                              "subtotalAmountCents",
                              "taxAmountCents",
                              "totalAmountCents",
                              "notes",
                              "sentAt",
                              "viewedAt",
                              "decidedAt",
                              "createdAt",
                              "updatedAt",
                              "archivedAt"
                            ]
                          }
                        }
                      },
                      "required": ["quote", "quoteVersion", "closedQuoteVersions"]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdAccept",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/accept",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/decline": {
      "post": {
        "description": "Decline a sent quote version. Accepts an optional JSON body; an empty or absent body is accepted. The body is parsed in the handler (not as a declared OpenAPI request body) because Hono's JSON validator would reject a zero-length `application/json` request before the handler runs.",
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "The declined quote version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteId": {
                          "type": "string"
                        },
                        "label": {
                          "type": ["string", "null"]
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "sent", "accepted", "declined", "superseded", "expired"]
                        },
                        "supersedesId": {
                          "type": ["string", "null"]
                        },
                        "tripSnapshotId": {
                          "type": ["string", "null"]
                        },
                        "validUntil": {
                          "type": ["string", "null"]
                        },
                        "currency": {
                          "type": "string"
                        },
                        "subtotalAmountCents": {
                          "type": "integer"
                        },
                        "taxAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "notes": {
                          "type": ["string", "null"]
                        },
                        "sentAt": {
                          "type": ["string", "null"]
                        },
                        "viewedAt": {
                          "type": ["string", "null"]
                        },
                        "decidedAt": {
                          "type": ["string", "null"]
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        },
                        "archivedAt": {
                          "type": ["string", "null"]
                        }
                      },
                      "required": [
                        "id",
                        "quoteId",
                        "label",
                        "status",
                        "supersedesId",
                        "tripSnapshotId",
                        "validUntil",
                        "currency",
                        "subtotalAmountCents",
                        "taxAmountCents",
                        "totalAmountCents",
                        "notes",
                        "sentAt",
                        "viewedAt",
                        "decidedAt",
                        "createdAt",
                        "updatedAt",
                        "archivedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdDecline",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/decline",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-versions/{id}/lines": {
      "get": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Lines for a quote version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "quoteVersionId": {
                            "type": "string"
                          },
                          "productId": {
                            "type": ["string", "null"]
                          },
                          "supplierServiceId": {
                            "type": ["string", "null"]
                          },
                          "description": {
                            "type": "string"
                          },
                          "quantity": {
                            "type": "integer"
                          },
                          "unitPriceAmountCents": {
                            "type": "integer"
                          },
                          "totalAmountCents": {
                            "type": "integer"
                          },
                          "currency": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "quoteVersionId",
                          "productId",
                          "supplierServiceId",
                          "description",
                          "quantity",
                          "unitPriceAmountCents",
                          "totalAmountCents",
                          "currency",
                          "createdAt",
                          "updatedAt"
                        ]
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          }
        },
        "operationId": "getAdminQuotesQuoteVersionsByIdLines",
        "summary": "GET /v1/admin/quotes/quote-versions/{id}/lines",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "post": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "productId": {
                    "type": ["string", "null"]
                  },
                  "supplierServiceId": {
                    "type": ["string", "null"]
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1
                  },
                  "unitPriceAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "totalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "currency": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": ["description", "currency"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created quote version line",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteVersionId": {
                          "type": "string"
                        },
                        "productId": {
                          "type": ["string", "null"]
                        },
                        "supplierServiceId": {
                          "type": ["string", "null"]
                        },
                        "description": {
                          "type": "string"
                        },
                        "quantity": {
                          "type": "integer"
                        },
                        "unitPriceAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "currency": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "quoteVersionId",
                        "productId",
                        "supplierServiceId",
                        "description",
                        "quantity",
                        "unitPriceAmountCents",
                        "totalAmountCents",
                        "currency",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postAdminQuotesQuoteVersionsByIdLines",
        "summary": "POST /v1/admin/quotes/quote-versions/{id}/lines",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    },
    "/v1/admin/quotes/quote-version-lines/{id}": {
      "patch": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "productId": {
                    "type": ["string", "null"]
                  },
                  "supplierServiceId": {
                    "type": ["string", "null"]
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1,
                    "default": 1
                  },
                  "unitPriceAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "totalAmountCents": {
                    "type": "integer",
                    "default": 0
                  },
                  "currency": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated quote version line",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "quoteVersionId": {
                          "type": "string"
                        },
                        "productId": {
                          "type": ["string", "null"]
                        },
                        "supplierServiceId": {
                          "type": ["string", "null"]
                        },
                        "description": {
                          "type": "string"
                        },
                        "quantity": {
                          "type": "integer"
                        },
                        "unitPriceAmountCents": {
                          "type": "integer"
                        },
                        "totalAmountCents": {
                          "type": "integer"
                        },
                        "currency": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "updatedAt": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "quoteVersionId",
                        "productId",
                        "supplierServiceId",
                        "description",
                        "quantity",
                        "unitPriceAmountCents",
                        "totalAmountCents",
                        "currency",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version line not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "patchAdminQuotesQuoteVersionLinesById",
        "summary": "PATCH /v1/admin/quotes/quote-version-lines/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      },
      "delete": {
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "id",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Quote version line deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "enum": [true]
                    }
                  },
                  "required": ["success"]
                }
              }
            }
          },
          "404": {
            "description": "Quote version line not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Quote version conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "deleteAdminQuotesQuoteVersionLinesById",
        "summary": "DELETE /v1/admin/quotes/quote-version-lines/{id}",
        "tags": ["quotes"],
        "x-voyant-module": "quotes",
        "x-voyant-surface": "admin"
      }
    }
  },
  "webhooks": {}
}
