How Inspection File Uploads and Video Minutes Work
Source: autosoft-workshop/app/controllers/inspections_controller.rb
- Image uploads have a 1000MB (1GB) size limit; non-image files have NO enforced size limit at the application level
- Uploading a video requires the company to have purchased video minutes — the upload is rejected if the balance is zero (and auto-purchase is not enabled)
- Image thumbnails are automatically generated at 100px width
- All uploaded files are set to public-read ACL on S3 — anyone with the direct URL can access the file without authentication
- Each video upload deducts time from the company's video minutes balance
- The mobile attachment listing endpoint excludes PDF files — PDFs uploaded via web will not appear on mobile
- Video minutes auto-purchase triggers when the balance hits zero, but only if the company has auto-purchase enabled; Capricorn users cannot use auto-purchase
- A low video minutes notification fires once when the balance drops to 30 minutes — it only fires once per threshold crossing
- Superuser and demo accounts receive free video minutes and are not charged
Support scenarios
- "I can't upload a video" → company has no video minutes remaining; they need to purchase more or enable auto-purchase (unless they are a Capricorn user)
- "Anyone can see our uploaded inspection photos" → all uploads are set to public-read; anyone with the URL can view them — this is by design
- "My PDFs don't show on mobile" → the mobile attachment endpoint intentionally excludes PDFs
- "We weren't warned about running low on video minutes" → the notification only fires once at 30 minutes; if they missed it or it was dismissed, it won't fire again until the balance cycles
- "We're being charged for video but we're a demo account" → demo and superuser accounts get free minutes; if they're being charged, their account type may not be flagged correctly
- "The non-image file I uploaded is massive and it went through" → there is no size limit enforced for non-image uploads at the application level