{"name":"Drop","tagline":"拖放即上线 — publish folders, HTML, images, PDF, Office, Markdown, or JSON to shareable HTTPS links","audience":["human-browser","agent-shell","ci"],"documentation":{"llmsTxt":"https://html.cyber101.cc/llms.txt","apiCatalog":"https://html.cyber101.cc/api","statusPage":"https://html.cyber101.cc/status","skill":"https://raw.githubusercontent.com/yuezheng2006/html2url-cyber101/main/skills/drop-deploy/SKILL.md","repository":"https://github.com/yuezheng2006/html2url-cyber101"},"auth":{"header":"X-Deploy-Token","required":false,"note":"Publish is open by default; anonymous management requires the one-time managementKey returned by publish."},"environment":{"dropBaseUrl":"https://html.cyber101.cc","dropDeployToken":"optional; send as X-Deploy-Token when the instance sets DEPLOY_TOKEN"},"endpoints":[{"method":"POST","path":"/api/deploy","contentType":"multipart/form-data","purpose":"Deploy ZIP sites, single images/PDF/Office/Markdown/JSON, or folder uploads","fields":["file","mode?","customPath?","password?"]},{"method":"POST","path":"/api/create","contentType":"application/json","purpose":"Publish a single HTML page from a string","fields":["html","filename?","mode?","customPath?","password?"]},{"method":"GET","path":"/api/paths","purpose":"List all currently mounted slugs (authoritative inventory)"},{"method":"GET","path":"/api/deploys","purpose":"Recent deploy ledger (limit query param, default 50, max 200)"},{"method":"GET","path":"/api/deploy/:id","purpose":"Deployment details (id == slug) including passwordProtected flag"},{"method":"GET","path":"/api/deploy/:id/llms.txt","purpose":"Per-deploy agent card (Markdown) for one published Drop"},{"method":"DELETE","path":"/api/deploy/:id","purpose":"Delete a deployment"},{"method":"POST","path":"/api/deploy/:id","contentType":"application/json","purpose":"Renew TTL; body {\"ttlDays\":90} (max 90) or 0 for no expiry"},{"method":"GET","path":"/api/storage","purpose":"Instance storage usage"},{"method":"GET","path":"/api/rate-limit","purpose":"Per-IP deploy/management/access quota (optional ?ip= with X-Deploy-Token)"},{"method":"GET","path":"/api/status","purpose":"Public health, storage usage, and capacity standards"},{"method":"GET","path":"/api/health","purpose":"Minimal uptime probe for external monitors"},{"method":"GET","path":"/status","purpose":"Human-readable status dashboard"},{"method":"GET","path":"/admin","purpose":"Feishu author-only read-only operations and statistics dashboard","auth":"Feishu author identity"},{"method":"GET","path":"/api/admin/summary","purpose":"Feishu author-only deployment, storage, and service summary","auth":"Feishu author identity"},{"method":"POST","path":"/api/access","contentType":"application/x-www-form-urlencoded","purpose":"Unlock password-protected content; returns Set-Cookie for follow-up GETs","fields":["slug","password","next?"]}],"urlPatterns":{"site":"/{slug}/","html":"/{slug}","image":"/img/{slug}","pdf":"/pdf/{slug}","pdfRaw":"/pdf/{slug}/raw","epub":"/epub/{slug}","epubRaw":"/epub/{slug}/raw","office":"/office/{slug}","officeRaw":"/office/{slug}/raw","markdown":"/md/{slug}","markdownRaw":"/md/{slug}/raw","json":"/json/{slug}","jsonRaw":"/json/{slug}/raw"},"limits":{"zipUpload":"50.0 MB","uncompressedTotal":"150.0 MB","zipFileCount":200,"zipSingleFile":"10.0 MB","pdfSingleFile":"30.0 MB","epubSingleFile":"30.0 MB","imageOfficeSingleFile":"10.0 MB","htmlOrMarkdown":"2.0 MB","storageTotal":"100.0 GB","deployRateLimit":"每 IP 每 10 分钟最多 10 次发布","managementRateLimit":"删除 / 续期等管理写操作：每 IP 每 10 分钟最多 20 次","accessRateLimit":"密码解锁（POST /api/access）：每 IP 每 10 分钟最多 20 次"},"slugRules":{"pattern":"[a-z0-9-]+","reserved":["api","img","md","pdf","office","epub","json","index.html","favicon.ico"],"customPath":"optional fixed first-level path; pair with mode=overwrite to keep URL stable"},"agentWorkflow":["Set DROP_BASE_URL to this instance origin.","If DEPLOY_TOKEN is configured, send X-Deploy-Token on publish and management calls.","Deploy with curl -sS (never curl -f — 409 conflicts include JSON bodies).","On success, return both the live url and deploy id (id == slug) to the user.","Optional: fetch GET /api/deploy/:id/llms.txt for a per-deploy agent card.","On 409 without mode, retry with mode=overwrite or mode=new.","Inventory live mounts with GET /api/paths; recent history with GET /api/deploys.","For password-protected links, POST /api/access then reuse the Set-Cookie on GET requests.","Drop is not a localhost tunnel: for live local servers use NPort/cloudflared/ngrok; publish a snapshot to Drop when the content should survive without the developer machine."],"curlNotes":["Use multipart form for /api/deploy; do not POST raw application/zip if you need customPath or mode.","ZIP sites need an HTML entry, a pure Markdown folder, or pure images for a gallery.","Do not mix HTML and Markdown in one folder/ZIP."]}