{"openapi":"3.1.0","info":{"title":"Quattro Pro Converter","version":"1.0.0","description":"Public HTTP APIs for the Quattro Pro Converter website (pricing, download, roadmap, feedback, and checkout helpers).\nThe desktop converter itself runs locally on Windows and does not expose these endpoints.\n\n## Versioning\nCanonical paths use major-version URL prefixes under `/api/v1`.\nUnversioned `/api/*` paths are stable aliases of the same handlers and remain supported.\nBreaking changes require a new major path (`/api/v2`, …).\nDeprecations are announced in this document and via RFC 9745 `Deprecation` / `Sunset` response headers when scheduled.\n\n## Errors\nAll 4xx/5xx JSON responses use the `ApiError` schema: `{ code, message, resolution }`.\n\n## Rate limits\nPublic API quota: 120 requests per client IP per 60 seconds.\nResponses include IETF `RateLimit` / `RateLimit-Policy` structured fields (plus `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`).\nHTTP 429 responses also include `Retry-After`.\n\n## Authentication\nThese public website APIs do not require OAuth, API keys, or bearer tokens.\nThere is no public GraphQL endpoint, MCP server, or developer portal beyond /for-agents and this OpenAPI document.","contact":{"name":"Quattro Pro Converter Support","email":"support@quattroproconverter.com","url":"https://quattroproconverter.com/contact"}},"servers":[{"url":"https://quattroproconverter.com","description":"Production"}],"tags":[{"name":"Pricing","description":"Live public pricing for website and desktop consumers"},{"name":"Download","description":"Windows MSI installer download"},{"name":"Roadmap","description":"Public roadmap features and IP-scoped votes"},{"name":"Feedback","description":"Product feedback submissions"},{"name":"Checkout","description":"Stripe Checkout helpers for license purchase"}],"paths":{"/api/v1/pricing":{"get":{"tags":["Pricing"],"operationId":"getPricing","summary":"Get live public pricing","description":"Returns current trial limits and one-time license prices used by the website and desktop app. Alias: GET /api/pricing.","responses":{"200":{"description":"Pricing payload","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingResponse"}}}},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}}},"/api/v1/download":{"get":{"tags":["Download"],"operationId":"downloadMsi","summary":"Download the current Windows MSI installer","description":"Streams the current Quattro Pro Converter MSI. Prefer this URL or /downloads/{version} for WinGet/scripts. Alias: GET /api/download.","responses":{"200":{"description":"Installer binary stream","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"404":{"$ref":"#/components/responses/ApiError"},"429":{"$ref":"#/components/responses/ApiError"},"502":{"$ref":"#/components/responses/ApiError"}}}},"/api/v1/roadmap":{"get":{"tags":["Roadmap"],"operationId":"listRoadmapFeatures","summary":"List visible roadmap features","description":"Alias: GET /api/roadmap.","responses":{"200":{"description":"Roadmap features with vote counts","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoadmapListResponse"}}}},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}},"post":{"tags":["Roadmap"],"operationId":"toggleRoadmapVote","summary":"Toggle a roadmap vote for this client IP","description":"Alias: POST /api/roadmap.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoadmapVoteRequest"}}}},"responses":{"200":{"description":"Updated vote state","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoadmapVoteResponse"}}}},"400":{"$ref":"#/components/responses/ApiError"},"404":{"$ref":"#/components/responses/ApiError"},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}}},"/api/v1/feedback":{"post":{"tags":["Feedback"],"operationId":"submitFeedback","summary":"Submit product feedback","description":"Alias: POST /api/feedback.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}}},"responses":{"201":{"description":"Accepted","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponse"}}}},"400":{"$ref":"#/components/responses/ApiError"},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}}},"/api/v1/checkout/create":{"post":{"tags":["Checkout"],"operationId":"createCheckoutSession","summary":"Create a Stripe Checkout session for a Quattro license product","description":"Alias: POST /api/checkout/create.","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutCreateRequest"}}}},"responses":{"200":{"description":"Checkout session","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutCreateResponse"}}}},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}}},"/api/v1/checkout/status":{"get":{"tags":["Checkout"],"operationId":"getCheckoutStatus","summary":"Poll Stripe checkout fulfillment status","description":"Alias: GET /api/checkout/status.","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","minLength":1},"description":"Stripe Checkout session id returned by createCheckoutSession"}],"responses":{"200":{"description":"Status payload","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutStatusResponse"}}}},"400":{"$ref":"#/components/responses/ApiError"},"429":{"$ref":"#/components/responses/ApiError"},"500":{"$ref":"#/components/responses/ApiError"}}}}},"components":{"headers":{"RateLimit":{"description":"IETF RateLimit structured field: `\"public-api\";r=<remaining>;t=<seconds>`","schema":{"type":"string"}},"RateLimitPolicy":{"description":"IETF RateLimit-Policy structured field for the public-api quota","schema":{"type":"string"}},"RateLimitLimit":{"description":"Maximum requests permitted in the current window","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests remaining in the current window","schema":{"type":"integer"}},"RateLimitReset":{"description":"Seconds until the current window resets","schema":{"type":"integer"}}},"schemas":{"ApiError":{"type":"object","additionalProperties":false,"required":["code","message","resolution"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code"},"message":{"type":"string","description":"Human-readable explanation"},"resolution":{"type":"string","description":"What the client should do next to recover"}}},"PricingResponse":{"type":"object","additionalProperties":false,"required":["product","productDisplayName","currency","licensePrice","licensePriceDisplay","stripePaymentLink","commercialLicensePrice","commercialLicensePriceDisplay","stripeCommercialPaymentLink","trialFileLimit","plusAddonPrice","plusAddonPriceDisplay","stripePlusAddonPaymentLink","plusBundlePrice","plusBundlePriceDisplay","stripePlusBundlePaymentLink","plusCommercialPrice","plusCommercialPriceDisplay","stripePlusCommercialPaymentLink","plusAddonCommercialPrice","plusAddonCommercialPriceDisplay","stripePlusAddonCommercialPaymentLink"],"properties":{"product":{"type":"string","enum":["quattro"]},"productDisplayName":{"type":"string"},"currency":{"type":"string","enum":["USD"]},"licensePrice":{"type":"string","description":"Standard license amount as a decimal string"},"licensePriceDisplay":{"type":"string"},"stripePaymentLink":{"type":"string","format":"uri"},"commercialLicensePrice":{"type":"string"},"commercialLicensePriceDisplay":{"type":"string"},"stripeCommercialPaymentLink":{"type":"string","format":"uri"},"trialFileLimit":{"type":"integer","minimum":1},"plusAddonPrice":{"type":"string"},"plusAddonPriceDisplay":{"type":"string"},"stripePlusAddonPaymentLink":{"type":"string","format":"uri"},"plusBundlePrice":{"type":"string"},"plusBundlePriceDisplay":{"type":"string"},"stripePlusBundlePaymentLink":{"type":"string","format":"uri"},"plusCommercialPrice":{"type":"string"},"plusCommercialPriceDisplay":{"type":"string"},"stripePlusCommercialPaymentLink":{"type":"string","format":"uri"},"plusAddonCommercialPrice":{"type":"string"},"plusAddonCommercialPriceDisplay":{"type":"string"},"stripePlusAddonCommercialPaymentLink":{"type":"string","format":"uri"}}},"RoadmapFeature":{"type":"object","additionalProperties":false,"required":["id","title","description","category","vote_count","voted"],"properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"vote_count":{"type":"integer","minimum":0},"voted":{"type":"boolean"},"release_version":{"type":["string","null"]}}},"RoadmapListResponse":{"type":"object","additionalProperties":false,"required":["features"],"properties":{"features":{"type":"array","items":{"$ref":"#/components/schemas/RoadmapFeature"}}}},"RoadmapVoteRequest":{"type":"object","additionalProperties":false,"required":["featureId"],"properties":{"featureId":{"type":"integer","description":"Roadmap feature id from listRoadmapFeatures"}}},"RoadmapVoteResponse":{"type":"object","additionalProperties":false,"required":["voted","vote_count"],"properties":{"voted":{"type":"boolean"},"vote_count":{"type":"integer","minimum":0}}},"FeedbackRequest":{"type":"object","additionalProperties":false,"required":["description"],"properties":{"type":{"type":"string","enum":["feature_request","bug_report","general","review"],"default":"feature_request"},"email":{"type":"string"},"description":{"type":"string","minLength":1},"appVersion":{"type":"string"},"rating":{"type":"integer","minimum":1,"maximum":5}}},"FeedbackResponse":{"type":"object","additionalProperties":false,"required":["success"],"properties":{"success":{"type":"boolean","enum":[true]}}},"CheckoutCreateRequest":{"type":"object","additionalProperties":false,"properties":{"product":{"type":"string","enum":["standard","plus_addon","plus_bundle","plus","bundle","addon"],"description":"Normalized to standard | plus_addon | plus_bundle"},"channel":{"type":"string","enum":["store","msi"]}}},"CheckoutCreateResponse":{"type":"object","additionalProperties":false,"required":["sessionId","url"],"properties":{"sessionId":{"type":"string"},"url":{"type":"string","format":"uri"}}},"CheckoutStatusResponse":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["pending","processing","paid"]},"licenseKey":{"type":["string","null"]},"standardLicenseKey":{"type":["string","null"]},"plusLicenseKey":{"type":["string","null"]}}}},"responses":{"ApiError":{"description":"Structured JSON error for agents and API clients","headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Retry-After":{"description":"Seconds to wait before retrying (present on HTTP 429)","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}