Python 88.3%
TypeScript 7.6%
Shell 4.1%
1import yaml, json, re, sys2spec = yaml.safe_load(open('sources/openai/openapi/openapi-master.yaml'))3paths = spec['paths']4comps = spec['components']['schemas']5PFX = ('/agents', '/vaults', '/chatkit', '/threads', '/assistants')6out = {}7refs = set()8def collect(o):9 if isinstance(o, dict):10 for k, v in o.items():11 if k == '$ref': refs.add(v.split('/')[-1])12 else: collect(v)13 elif isinstance(o, list):14 for v in o: collect(v)15for p, ops in paths.items():16 if not p.startswith(PFX): continue17 for m, op in ops.items():18 if m not in ('get','post','delete','put','patch'): continue19 meta = op.get('x-oaiMeta', {})20 ex = meta.get('examples', {})21 req = ex.get('request', {}) if isinstance(ex, dict) else {}22 rec = {23 'operationId': op.get('operationId'), 'summary': op.get('summary'),24 'description': op.get('description'), 'deprecated': op.get('deprecated'),25 'parameters': op.get('parameters'), 'requestBody': op.get('requestBody'),26 'responses': op.get('responses'),27 'meta': {k: v for k, v in meta.items() if k != 'examples'},28 'curl': req.get('curl') if isinstance(req, dict) else None,29 'example_response': ex.get('response') if isinstance(ex, dict) else None,30 }31 collect(rec['parameters']); collect(rec['requestBody']); collect(rec['responses'])32 out[f'{m.upper()} {p}'] = rec33json.dump(out, open('tmp/agents/spec_ops.json','w'), indent=1, default=str)34# resolve schema refs transitively35seen = set(); todo = list(refs)36while todo:37 r = todo.pop()38 if r in seen or r not in comps: continue39 seen.add(r); collect(comps[r])40 todo.extend(refs - seen)41schemas = {k: comps[k] for k in sorted(seen)}42json.dump(schemas, open('tmp/agents/spec_schemas.json','w'), indent=1, default=str)43print(len(out), 'ops;', len(schemas), 'schemas')44for k in out: print(k, '| beta=', out[k]['meta'].get('beta'), '| group=', out[k]['meta'].get('group'), '| dep=', out[k]['deprecated'])45