{"openapi":"3.1.0","info":{"title":"Glob API","version":"1.0.0","description":"Match file paths against glob patterns — the same wildcard language used by .gitignore, CI/CD path filters, build tools and the shell. Test whether a single path matches a pattern, or filter a whole list of paths down to the ones that match. Full minimatch support: * (within a segment) and ** (across segments), ? for one character, [abc] character classes, {a,b,c} brace expansion and extended globs, with options for case-insensitivity, matching dotfiles and basename-only matching. Perfect for path-based rules, file selection, route guards, allow/deny lists and config validation. Pure local computation — no key, no third-party service, instant; send large lists via POST. Live, nothing stored. 3 endpoints. Distinct from regular-expression testing and from JSON path queries.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/glob-api","description":"oanor gateway"}],"tags":[{"name":"Glob"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/filter":{"get":{"operationId":"get_v1_filter","tags":["Glob"],"summary":"Filter paths by a glob","description":"","parameters":[{"name":"paths","in":"query","required":true,"description":"Comma/newline list or JSON array","schema":{"type":"string"},"example":"a.js,b.ts,c/d.js,e.css"},{"name":"pattern","in":"query","required":true,"description":"Glob pattern","schema":{"type":"string"},"example":"**/*.js"},{"name":"nocase","in":"query","required":false,"description":"Case-insensitive","schema":{"type":"string"}},{"name":"dot","in":"query","required":false,"description":"Match dotfiles","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"total":4,"matched":["a.js","c/d.js"],"options":{"dot":false,"noext":false,"nocase":false,"nobrace":false,"matchBase":false,"noglobstar":false},"pattern":"**/*.js","matched_count":2},"meta":{"timestamp":"2026-06-03T01:09:46.721Z","request_id":"90519f7b-7039-4779-9674-a7b3cf33127a"},"status":"ok","message":"Filter paths by a glob","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/match":{"get":{"operationId":"get_v1_match","tags":["Glob"],"summary":"Match a path against a glob","description":"","parameters":[{"name":"path","in":"query","required":true,"description":"File path","schema":{"type":"string"},"example":"src/app/main.js"},{"name":"pattern","in":"query","required":true,"description":"Glob pattern","schema":{"type":"string"},"example":"**/*.js"},{"name":"nocase","in":"query","required":false,"description":"Case-insensitive (true/false)","schema":{"type":"string"}},{"name":"dot","in":"query","required":false,"description":"Match dotfiles (true/false)","schema":{"type":"string"}},{"name":"matchBase","in":"query","required":false,"description":"Match basename (true/false)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"path":"src/app/main.js","match":true,"options":{"dot":false,"noext":false,"nocase":false,"nobrace":false,"matchBase":false,"noglobstar":false},"pattern":"**/*.js"},"meta":{"timestamp":"2026-06-03T01:09:46.826Z","request_id":"b87fd9b1-e081-4fb1-b7d3-23e9fae26b37"},"status":"ok","message":"Match a path against a glob","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"Glob API","notes":"** crosses path separators; * does not. Use matchBase=true to match a bare *.js against any depth. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/match","params":{"dot":"bool (match leading dot)","path":"the path (required)","nocase":"bool","pattern":"glob pattern (required)","matchBase":"bool (match basename)"},"returns":"whether the path matches"},{"path":"/v1/filter","params":{"paths":"comma/newline list or JSON array (required)","pattern":"glob (required)","nocase/dot/matchBase":"options"},"returns":"the subset of paths that match"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Match file paths against glob patterns the way .gitignore, CI path filters and shells do — *, **, ?, [..] character classes, {a,b} brace expansion and extglobs — powered by minimatch. Test one path or filter a list. Pure local, no key."},"meta":{"timestamp":"2026-06-03T01:09:46.927Z","request_id":"8e4633b4-679d-4acf-8a5c-fc8d390938c2"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":600,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":30,"monthly_call_quota":4500,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1740,"monthly_call_quota":117000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5340,"monthly_call_quota":605000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/glob-api"}