{"openapi":"3.1.0","info":{"title":"Apizie: web-tools","version":"2.0.0","description":"One API key, one envelope, many public data sources."},"servers":[{"url":"https://zieapi.vercel.app"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/web-tools:jina-reader/read":{"get":{"operationId":"web_tools_jina_reader_read","summary":"Read","description":"Fetch a public URL through Jina Reader and return its title and main content.","tags":["web-tools"],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","maxLength":2048},"example":"https://example.com"},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["markdown","text","html"],"default":"markdown"}},{"name":"maxChars","in":"query","required":false,"schema":{"type":"integer","default":100000,"minimum":1000,"maximum":500000}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":1800,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:rdap/availability":{"get":{"operationId":"web_tools_rdap_availability","summary":"Check Availability","description":"Registered domains return their registrar and dates; a 404 from the registry means the name is likely available.","tags":["web-tools"],"parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"},"example":"example.com"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":300,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:wayback/snapshot":{"get":{"operationId":"web_tools_wayback_snapshot","summary":"Snapshot","description":"Closest Wayback snapshot to an optional timestamp.","tags":["web-tools"],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"example":"example.com"},{"name":"timestamp","in":"query","required":false,"description":"YYYYMMDDhhmmss (prefix allowed)","schema":{"type":"string","description":"YYYYMMDDhhmmss (prefix allowed)"},"example":"20100101"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":3600,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:weather/forecast":{"get":{"operationId":"web_tools_weather_forecast","summary":"Weather Forecast","description":"Current weather and an N-day daily forecast for coordinates (timezone auto-detected).","tags":["web-tools"],"parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":-6.2},{"name":"lon","in":"query","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":106.82},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"minimum":1,"maximum":16}},{"name":"units","in":"query","required":false,"schema":{"type":"string","enum":["metric","imperial"],"default":"metric"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":900,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:weather/geocode":{"get":{"operationId":"web_tools_weather_geocode","summary":"Geocode","description":"Look up coordinates for a place name (to feed into forecast).","tags":["web-tools"],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Bandung"},{"name":"count","in":"query","required":false,"description":"Results per page","schema":{"type":"integer","default":5,"minimum":1,"maximum":100,"description":"Results per page"}},{"name":"language","in":"query","required":false,"schema":{"type":"string","default":"en"}},{"name":"countryCode","in":"query","required":false,"schema":{"type":"string"},"example":"ID"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":86400,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:bin-lookup/lookup":{"get":{"operationId":"web_tools_bin_lookup_lookup","summary":"Lookup BIN","description":"Look up the first 6–8 digits of a payment card number.","tags":["web-tools"],"parameters":[{"name":"bin","in":"query","required":true,"description":"First 6-8 digits only. Never send a full card number","schema":{"type":"string","description":"First 6-8 digits only. Never send a full card number"},"example":"45717360"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":86400,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:color-api/id":{"get":{"operationId":"web_tools_color_api_id","summary":"Identify","description":"Name and conversions for a hex color.","tags":["web-tools"],"parameters":[{"name":"hex","in":"query","required":true,"schema":{"type":"string"},"example":"0047AB"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":604800,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:color-api/scheme":{"get":{"operationId":"web_tools_color_api_scheme","summary":"Scheme","description":"A color scheme from a seed color.","tags":["web-tools"],"parameters":[{"name":"hex","in":"query","required":true,"schema":{"type":"string"},"example":"24B1E0"},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["monochrome","monochrome-dark","monochrome-light","analogic","complement","analogic-complement","triad","quad"],"default":"analogic"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":5,"minimum":2,"maximum":12}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":604800,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:mathjs/evaluate":{"get":{"operationId":"web_tools_mathjs_evaluate","summary":"Evaluate","description":"Result of an expression, e.g. 2 inch to cm or sqrt(16).","tags":["web-tools"],"parameters":[{"name":"expr","in":"query","required":true,"schema":{"type":"string"},"example":"12.7 cm to inch"},{"name":"precision","in":"query","required":false,"schema":{"type":"integer","default":14,"minimum":1,"maximum":64}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":86400,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:timeapi/now":{"get":{"operationId":"web_tools_timeapi_now","summary":"Current time","description":"Time in an IANA timezone.","tags":["web-tools"],"parameters":[{"name":"timeZone","in":"query","required":true,"schema":{"type":"string"},"example":"Asia/Tokyo"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":30,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:timeapi/zones":{"get":{"operationId":"web_tools_timeapi_zones","summary":"Timezones","description":"Every IANA timezone.","tags":["web-tools"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":604800,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:rss-reader/read":{"get":{"operationId":"web_tools_rss_reader_read","summary":"Read a feed","description":"Fetch one RSS/Atom/RDF feed URL and return its items as JSON (title, link, summary, date, author, categories, image).","tags":["web-tools"],"parameters":[{"name":"url","in":"query","required":true,"description":"Feed URL (http or https, public host)","schema":{"type":"string","description":"Feed URL (http or https, public host)"},"example":"https://feeds.npr.org/1001/rss.xml"},{"name":"limit","in":"query","required":false,"description":"Number of results","schema":{"type":"integer","default":20,"minimum":1,"maximum":100,"description":"Number of results"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":300,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:rss-reader/discover":{"get":{"operationId":"web_tools_rss_reader_discover","summary":"Discover feeds on a website","description":"Given a website or article URL, list the RSS/Atom feeds it advertises in its HTML (<link rel=\"alternate\">). If the URL is itself a feed, it is returned.","tags":["web-tools"],"parameters":[{"name":"url","in":"query","required":true,"description":"Website or page URL","schema":{"type":"string","description":"Website or page URL"},"example":"https://techcrunch.com"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":3600,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:rss-reader/merge":{"get":{"operationId":"web_tools_rss_reader_merge","summary":"Merge feeds into one timeline","description":"Fetch up to 10 feeds at once and return one list sorted newest first, with duplicates (same link) removed. Feeds that fail are reported, not fatal.","tags":["web-tools"],"parameters":[{"name":"urls","in":"query","required":true,"description":"Feed URLs (max 10), as an array or comma-separated","schema":{"type":"array","description":"Feed URLs (max 10), as an array or comma-separated"},"example":["https://feeds.npr.org/1004/rss.xml","https://www.aljazeera.com/xml/rss/all.xml"]},{"name":"limit","in":"query","required":false,"description":"Number of results","schema":{"type":"integer","default":30,"minimum":1,"maximum":200,"description":"Number of results"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":300,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"live"}},"/v1/web-tools:google-dns/resolve":{"get":{"operationId":"web_tools_google_dns_resolve","summary":"Resolve a name","description":"DNS records of a type for a domain.","tags":["web-tools"],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"example.com"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["A","AAAA","MX","TXT","NS","CNAME","SOA","CAA","SRV","PTR"],"default":"A"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":300,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}},"/v1/web-tools:url-shortener/shorten":{"get":{"operationId":"web_tools_url_shortener_shorten","summary":"Shorten a URL","description":"Short is.gd link for a long URL.","tags":["web-tools"],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"example":"https://www.example.com/some/very/long/path?with=params"},{"name":"custom","in":"query","required":false,"description":"Optional custom short path","schema":{"type":"string","description":"Optional custom short path"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":2592000,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"live"}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"RunEnvelope":{"type":"object","required":["project","data","timestamp"],"properties":{"project":{"type":"string","example":"dev-tools:hash"},"data":{},"timestamp":{"type":"string","format":"date-time"}}},"ErrorEnvelope":{"type":"object","properties":{"content":{},"message":{"type":"string"},"errors":{"type":"array","items":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Invalid key, plan gate, rate limit or upstream failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}