{"openapi":"3.1.0","info":{"title":"bcskills.ai API","version":"1.0.0","description":"Free, read-only API for the Business Central Skills Library. No key needed."},"servers":[{"url":"https://bcskills.ai/api/v1"}],"paths":{"/skills":{"get":{"summary":"Search skills","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"works","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"license","in":"query","schema":{"type":"string"}},{"name":"author","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"per_page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paged list of skills.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/skills/{ref}":{"get":{"summary":"Skill detail","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"},"description":"Slug, old slug or permanent ID (sk_...)."}],"responses":{"200":{"description":"Skill with versions.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/skills/{ref}/versions":{"get":{"summary":"Approved versions","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"},"description":"Slug, old slug or permanent ID (sk_...)."}],"responses":{"200":{"description":"Versions, newest first.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/skills/{ref}/download":{"get":{"summary":"Download a skill zip (counted once per client per day)","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"},"description":"Slug, old slug or permanent ID (sk_...)."},{"name":"version","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"The zip. Checksum in X-Checksum-SHA256.","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}},"head":{"summary":"Download headers only; never counted","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"},"description":"Slug, old slug or permanent ID (sk_...)."}],"responses":{"200":{"description":"Headers only."},"404":{"description":"Not found."}}}},"/categories":{"get":{"summary":"List categories","responses":{"200":{"description":"Categories with counts.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/top":{"get":{"summary":"Monthly leaderboards","parameters":[{"name":"month","in":"query","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"description":"YYYY-MM, default current month."},{"name":"by","in":"query","schema":{"enum":["downloads","rating"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Ranked skills.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/authors/{handle}":{"get":{"summary":"Author profile and skills","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Author.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/editors-picks":{"get":{"summary":"Editors' Picks for a month","parameters":[{"name":"month","in":"query","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"description":"YYYY-MM, default current month."}],"responses":{"200":{"description":"Picks.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit exceeded (120 requests per minute per client). See Retry-After.","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}