# retoor VOTE_TARGETS = ["post", "comment", "gist", "project", "quiz"] REACTION_TARGETS = ["post", "comment", "gist", "project", "quiz"] BOOKMARK_TARGETS = ["post", "gist", "project", "news", "quiz"] COMMENT_TARGETS = ["post", "project", "news", "issue", "gist", "quiz"] PROJECT_TYPES = ["game", "game_asset", "software", "mobile_app", "website"] GIST_LANGUAGES = [ "python", "javascript", "typescript", "html", "css", "c", "cpp", "java", "go", "rust", "sql", "bash", "json", "markdown", "plaintext", ] SERVICE_ACTIONS = [ ("start", "Start the service"), ("stop", "Stop the service"), ("run", "Trigger a single run now"), ("clear-logs", "Clear the in-memory log buffer"), ] def field( name, location, type="string", required=False, example="", description="", options=None, ): spec = { "name": name, "location": location, "type": type, "required": required, "example": example, "description": description, } if options: spec["options"] = list(options) return spec ROLE_LABELS = {"public": "Public", "user": "Member", "admin": "Admin"} def endpoint( id, method, path, title, summary, auth="user", ajax=False, encoding="none", interactive=True, destructive=False, params=None, notes=None, sample_response=None, negotiation=None, ): return { "id": id, "method": method, "path": path, "title": title, "summary": summary, "auth": auth, "min_role": ROLE_LABELS.get(auth, auth.title()), "ajax": ajax, "encoding": encoding, "interactive": interactive, "destructive": destructive, "params": params or [], "notes": notes or [], "sample_response": sample_response, "negotiation": negotiation, } NON_BODY_ENDPOINTS = { "avatar", "gateway-passthrough", "notifications-open", "admin-bots-frame", }