{"openapi":"3.1.0","info":{"title":"GitExtract","description":"GitHub repo to text converter for AI agents","version":"0.1.0"},"paths":{"/api/v1/ingest":{"get":{"summary":"Api Ingest","description":"Ingest a GitHub repository and return results as JSON.","operationId":"api_ingest_api_v1_ingest_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","description":"GitHub repository URL","title":"Url"},"description":"GitHub repository URL"},{"name":"branch","in":"query","required":false,"schema":{"type":"string","description":"Branch name","default":"","title":"Branch"},"description":"Branch name"},{"name":"subpath","in":"query","required":false,"schema":{"type":"string","description":"Subdirectory path","default":"/","title":"Subpath"},"description":"Subdirectory path"},{"name":"include_patterns","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated include globs","default":"","title":"Include Patterns"},"description":"Comma-separated include globs"},{"name":"exclude_patterns","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated exclude globs","default":"","title":"Exclude Patterns"},"description":"Comma-separated exclude globs"},{"name":"max_file_size_kb","in":"query","required":false,"schema":{"type":"integer","maximum":20480,"minimum":64,"description":"Max file size in KB","default":10240,"title":"Max File Size Kb"},"description":"Max file size in KB"},{"name":"include_json","in":"query","required":false,"schema":{"type":"boolean","description":"Include structured content_json in response","default":false,"title":"Include Json"},"description":"Include structured content_json in response"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/repos":{"get":{"summary":"Api List Repos","description":"Search and list cached repositories.","operationId":"api_list_repos_api_v1_repos_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Search query","default":"","title":"Q"},"description":"Search query"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort: 'popular' or 'recent'","default":"popular","title":"Sort"},"description":"Sort: 'popular' or 'recent'"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":20,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/repos/{owner}/{repo}":{"get":{"summary":"Api Get Repo","description":"Get the latest ingestion for a specific repository.","operationId":"api_get_repo_api_v1_repos__owner___repo__get","parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string","title":"Owner"}},{"name":"repo","in":"path","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"include_json","in":"query","required":false,"schema":{"type":"boolean","description":"Include structured content_json in response","default":false,"title":"Include Json"},"description":"Include structured content_json in response"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IngestResponse":{"properties":{"full_name":{"type":"string","title":"Full Name"},"branch":{"type":"string","title":"Branch"},"commit":{"type":"string","title":"Commit"},"subpath":{"type":"string","title":"Subpath"},"summary":{"type":"string","title":"Summary"},"tree":{"type":"string","title":"Tree"},"content":{"type":"string","title":"Content"},"content_json":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Content Json"},"symbol_index":{"type":"string","title":"Symbol Index","default":""},"symbol_count":{"type":"integer","title":"Symbol Count","default":0},"file_count":{"type":"integer","title":"File Count"},"total_size":{"type":"integer","title":"Total Size"},"token_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Count"},"cached":{"type":"boolean","title":"Cached","default":false}},"type":"object","required":["full_name","branch","commit","subpath","summary","tree","content","file_count","total_size"],"title":"IngestResponse"},"RepoListItem":{"properties":{"full_name":{"type":"string","title":"Full Name"},"owner":{"type":"string","title":"Owner"},"name":{"type":"string","title":"Name"},"default_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Branch"},"request_count":{"type":"integer","title":"Request Count"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At"},"last_requested_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Requested At"}},"type":"object","required":["full_name","owner","name","default_branch","request_count","first_seen_at","last_requested_at"],"title":"RepoListItem"},"RepoListResponse":{"properties":{"repos":{"items":{"$ref":"#/components/schemas/RepoListItem"},"type":"array","title":"Repos"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["repos","total","page","limit"],"title":"RepoListResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}