{"openapi":"3.1.0","info":{"title":"Storage","version":"1.0.0","description":"https://storage.payweave.services","contact":{"email":"support@payweave.app"},"x-guidance":"https://storage.payweave.services\nEach endpoint takes a JSON request and returns either a 200 with the result or a 402 Payment Required challenge (MPP / x402). Pricing is fixed per endpoint in USD; the per-operation `x-payment-info` block carries the exact challenge metadata (price, accepted protocols, payment realm).\nFor per-endpoint schemas, examples, and detailed usage, fetch https://api.payweave.app/app/app_wd5l3hktdnklz8d18i89r48b/skill.md or `<this-origin>/<path>/skill.md` for a single endpoint."},"x-service-info":{"categories":["Storage","File hosting","CDN"]},"servers":[{"url":"https://storage.payweave.services"}],"paths":{"/list":{"get":{"summary":"Storage: List Uploads","description":"List your wallet's uploaded objects (url, key, bytes, content_type, ttl_days, uploaded_at, expires_at). Optional ?ttl_days=1|7|30|90|365 pages one tier via ?cursor=.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50","network":"eip155:4217","amount":"1000"}},{"mpp":{"method":"solana","intent":"charge","currency":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"1000"}},{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","extra":{"name":"USD Coin","version":"2"}}},{"x402":{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","currency":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000"}}],"description":"List your wallet's uploaded objects (url, key, bytes, content_type, ttl_days, uploaded_at, expires_at). Optional ?ttl_days=1|7|30|90|365 pages one tier via ?cursor=."},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"key":{"type":"string"},"bytes":{"type":"integer","minimum":0},"content_type":{"type":"string"},"ttl_days":{"type":"integer"},"uploaded_at":{"type":"string"},"expires_at":{"type":"string"}},"required":["url","key","bytes","content_type","ttl_days","uploaded_at","expires_at"],"additionalProperties":false}},"count":{"type":"integer","minimum":0},"truncated":{"type":"boolean"},"cursor":{"type":["string","null"]}},"required":["items","count","truncated","cursor"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}},"parameters":[{"name":"ttl_days","in":"query","required":false,"schema":{"type":"number","enum":[1,7,30,90,365]}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"x-payweave-mode":"live"}},"/upload":{"post":{"summary":"Storage: Upload","description":"Upload a local file via multipart/form-data and receive a permanent public URL. TTL tier (1 / 7 / 30 / 90 / 365 days, default 30) drives both price ($0.001–$0.01 USDC) and storage lifetime. Body is validated pre-charge — invalid bodies return 400 without settling. Files are publicly accessible to anyone holding the returned URL — URLs are unguessable but not secret. Do not upload secrets, credentials, PII, or private business data.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"mpp":{"method":"tempo","intent":"charge","currency":"0x20c000000000000000000000b9537d11c60e8b50","network":"eip155:4217","amount":"1000"}},{"mpp":{"method":"solana","intent":"charge","currency":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"1000"}},{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","extra":{"name":"USD Coin","version":"2"}}},{"x402":{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","currency":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000"}}],"description":"Upload a local file via multipart/form-data and receive a permanent public URL. TTL tier (1 / 7 / 30 / 90 / 365 days, default 30) drives both price ($0.001–$0.01 USDC) and storage lifetime. Body is validated pre-charge — invalid bodies return 400 without settling. Files are publicly accessible to anyone holding the returned URL — URLs are unguessable but not secret. Do not upload secrets, credentials, PII, or private business data."},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public-read URL for the uploaded object. Lives until expires_at."},"key":{"type":"string","description":"R2 object key. Same wallet-hash prefix as everything you upload."},"bytes":{"type":"integer","minimum":0,"description":"Stored byte count."},"content_type":{"type":"string","description":"Content-Type stored on the R2 object and served on read."},"ttl_days":{"type":"integer","description":"TTL tier the object was filed under: 1, 7, 30, 90, or 365."},"expires_at":{"type":"string","description":"ISO-8601 timestamp at which R2 lifecycle will delete the object."}},"required":["url","key","bytes","content_type","ttl_days","expires_at"],"additionalProperties":false}}}},"402":{"description":"Payment Required"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{},"ttl_days":{"type":"number","enum":[1,7,30,90,365]}},"required":["file"],"additionalProperties":false}}}},"x-payweave-mode":"live"}}}}