{
  "service": "throwaway-store",
  "version": "1.7.0",
  "base_url": "https://skale.dev/throway",
  "ttl_seconds": 14400,
  "max_file_bytes": 5242880,
  "pool_bytes": 104857600,
  "rate_limit_per_min": 100,
  "endpoints": {
    "upload": {
      "method": "POST",
      "url": "https://skale.dev/throway/?name=<filename>",
      "body": "raw file bytes (or multipart/form-data with a file part)",
      "response": {
        "id": "str",
        "url": "str",
        "size": "int",
        "name": "str",
        "content_type": "str",
        "expires_in": "int",
        "expires_at": "str"
      }
    },
    "upload_bundle": {
      "method": "POST",
      "url": "https://skale.dev/throway/",
      "body": "multipart/form-data with 2+ file parts",
      "note": "creates a bundle: one URL, files served at /<id>/<filename>, index.html inline for browsers",
      "response": {
        "id": "str",
        "url": "str",
        "bundle": true,
        "files": [
          {
            "name": "str",
            "url": "str",
            "size": "int",
            "content_type": "str"
          }
        ],
        "expires_at": "str"
      }
    },
    "download": {
      "method": "GET",
      "url": "https://skale.dev/throway/<id>",
      "note": "images and text-like types render inline; bundle root serves index.html inline (browser) or zip (agent); append ?download=1 to force download"
    },
    "download_bundle_file": {
      "method": "GET",
      "url": "https://skale.dev/throway/<id>/<filename>",
      "note": "serve a single file from a bundle"
    },
    "create_dir": {
      "method": "POST",
      "url": "https://skale.dev/throway/?dir=1",
      "note": "create a mutable dir; add files later; deleted 4h after latest upload (max 24h total)",
      "response": {
        "id": "str",
        "url": "str",
        "dir": true,
        "files": []
      }
    },
    "add_to_dir": {
      "method": "POST",
      "url": "https://skale.dev/throway/<dirid>",
      "body": "multipart/form-data file parts",
      "note": "add files to a dir, resets its TTL"
    },
    "list_dir": {
      "method": "GET",
      "url": "https://skale.dev/throway/<dirid>",
      "note": "JSON listing for agents, HTML page for browsers"
    },
    "dir_zip": {
      "method": "GET",
      "url": "https://skale.dev/throway/<dirid>?zip=1",
      "note": "download the whole dir as a zip"
    },
    "delete_dir_file": {
      "method": "DELETE",
      "url": "https://skale.dev/throway/<dirid>/<filename>",
      "note": "remove one file from a dir"
    },
    "create_named_dir": {
      "method": "POST",
      "url": "https://skale.dev/throway/?dir=1&name=<name>[&listed=1][&tag=<tag>][&ttl=<hours|d>]",
      "note": "create-or-get a NAMED dir (5-32 chars, [a-z0-9-], >=1 letter, not reserved); listed=1 to appear in GET /n; tags up to 5; ttl = fixed lifetime clamped to [4h,7d] default 7d. Flags honored only on first creation.",
      "response": {
        "id": "str",
        "name": "str",
        "url": "str",
        "dir": true,
        "named": true,
        "listed": "bool",
        "tags": [
          "str"
        ],
        "files": [],
        "expires_at": "str",
        "max_age": "int"
      }
    },
    "add_to_named_dir": {
      "method": "POST",
      "url": "https://skale.dev/throway/n/<name>",
      "body": "multipart/form-data file parts",
      "note": "add files to a named dir, bumps updated_at (fixed lifetime unchanged)"
    },
    "get_named_dir": {
      "method": "GET",
      "url": "https://skale.dev/throway/n/<name>",
      "note": "JSON listing for agents, HTML page for browsers"
    },
    "get_named_file": {
      "method": "GET",
      "url": "https://skale.dev/throway/n/<name>/<file>",
      "note": "fetch one file from a named dir"
    },
    "named_zip": {
      "method": "GET",
      "url": "https://skale.dev/throway/n/<name>?zip=1",
      "note": "download the whole named dir as a zip"
    },
    "edit_named_file": {
      "method": "PUT",
      "url": "https://skale.dev/throway/n/<name>/<file>",
      "body": "new text (text files only)",
      "note": "replace a file in a named dir, bumps updated_at"
    },
    "append_named_file": {
      "method": "PATCH",
      "url": "https://skale.dev/throway/n/<name>/<file>",
      "body": "text to append (text files only)",
      "note": "append to a file in a named dir, bumps updated_at"
    },
    "delete_named_file": {
      "method": "DELETE",
      "url": "https://skale.dev/throway/n/<name>/<file>",
      "note": "remove one file from a named dir, bumps updated_at"
    },
    "delete_named_dir": {
      "method": "DELETE",
      "url": "https://skale.dev/throway/n/<name>",
      "note": "delete a whole named dir"
    },
    "list_named_dirs": {
      "method": "GET",
      "url": "https://skale.dev/throway/n",
      "note": "list dirs created with listed=1; filters ?q=<sub> (name or tag), ?created_after/before=<ts>, ?updated_after/before=<ts>; sort ?sort=created|updated|name&order=asc|desc (default created desc)"
    },
    "delete": {
      "method": "DELETE",
      "url": "https://skale.dev/throway/<id>"
    },
    "edit_text": {
      "method": "PUT",
      "url": "https://skale.dev/throway/<id>",
      "body": "new text content (text files only)",
      "note": "replaces the whole text content"
    },
    "append_text": {
      "method": "PATCH",
      "url": "https://skale.dev/throway/<id>",
      "body": "text to append (text files only)"
    },
    "contract": {
      "method": "GET",
      "url": "https://skale.dev/throway/api"
    },
    "write_for_agents": {
      "method": "GET",
      "url": "https://skale.dev/throway/write_for_agents",
      "note": "human-readable description of this service for agents"
    },
    "copy_for_agents": {
      "method": "GET",
      "url": "https://skale.dev/throway/copy_for_agents",
      "note": "HTML page with a copy-pasteable agent description"
    },
    "help": {
      "method": "GET",
      "url": "https://skale.dev/throway/help",
      "note": "modular help index (JSON for agents, HTML for browsers); each topic fetched separately at /help/<topic> so agents gather only what they need"
    },
    "releases": {
      "method": "GET",
      "url": "https://skale.dev/throway/releases",
      "note": "release notes; raw markdown for agents, rendered HTML for browsers"
    }
  }
}