fastapi-practices/fastapi-best-architecture

0 errors, 77 warningsmaster

77 issues need attention.

77 warnings in the paths between 122 routes and 1 tables.

ROUTE FINDINGS76 of 122 · 7/7 rules
ROUTES
122
TABLES
1
FILES READ
120
RULES RUN
7/7

77 findings

  • GET /tasks/registered has no validator or rate limiter attached.

    public-entry-guarded

  • GET /task-results/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /task-results has no validator or rate limiter attached.

    public-entry-guarded

  • GET /test has no validator or rate limiter attached.

    public-entry-guarded

  • GET /server has no validator or rate limiter attached.

    public-entry-guarded

  • POST /login/swagger has no validator or rate limiter attached.

    public-entry-guarded

  • POST /login has no validator or rate limiter attached.

    public-entry-guarded

  • GET /codes has no validator or rate limiter attached.

    public-entry-guarded

  • POST /refresh has no validator or rate limiter attached.

    public-entry-guarded

  • POST /logout has no validator or rate limiter attached.

    public-entry-guarded

  • GET /plugins has no validator or rate limiter attached.

    public-entry-guarded

  • GET /plugins/changed has no validator or rate limiter attached.

    public-entry-guarded

  • POST /plugins has no validator or rate limiter attached.

    public-entry-guarded

  • DELETE /plugins/{plugin} has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /plugins/{plugin}/status has no validator or rate limiter attached.

    public-entry-guarded

  • GET /plugins/{plugin} has no validator or rate limiter attached.

    public-entry-guarded

  • POST /captcha has no validator or rate limiter attached.

    public-entry-guarded

  • GET /github has no validator or rate limiter attached.

    public-entry-guarded

  • GET /schedulers/all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /schedulers/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /schedulers has no validator or rate limiter attached.

    public-entry-guarded

  • GET /roles/all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /roles/{pk}/menus has no validator or rate limiter attached.

    public-entry-guarded

  • GET /roles/{pk}/scopes has no validator or rate limiter attached.

    public-entry-guarded

  • GET /roles/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /roles has no validator or rate limiter attached.

    public-entry-guarded

  • GET /google has no validator or rate limiter attached.

    public-entry-guarded

  • GET /menus/sidebar has no validator or rate limiter attached.

    public-entry-guarded

  • GET /menus/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /menus has no validator or rate limiter attached.

    public-entry-guarded

  • GET /users/me has no validator or rate limiter attached.

    public-entry-guarded

  • GET /users/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /users/{pk}/roles has no validator or rate limiter attached.

    public-entry-guarded

  • GET /users has no validator or rate limiter attached.

    public-entry-guarded

  • POST /users has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/{pk}/permissions has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/me/password has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/{pk}/password has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/me/nickname has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/me/avatar has no validator or rate limiter attached.

    public-entry-guarded

  • PUT /users/me/email has no validator or rate limiter attached.

    public-entry-guarded

  • GET /captcha has no validator or rate limiter attached.

    public-entry-guarded

  • GET /depts/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /redis has no validator or rate limiter attached.

    public-entry-guarded

  • GET /me/bindings has no validator or rate limiter attached.

    public-entry-guarded

  • GET /me/binding has no validator or rate limiter attached.

    public-entry-guarded

  • DELETE /me/unbinding has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules/models has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules/models/{model}/columns has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules/value-template-variables has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules/all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-rules has no validator or rate limiter attached.

    public-entry-guarded

  • GET /{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET / has no validator or rate limiter attached.

    public-entry-guarded

  • GET /all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /businesses/all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /businesses/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /businesses has no validator or rate limiter attached.

    public-entry-guarded

  • GET /businesses/{pk}/columns has no validator or rate limiter attached.

    public-entry-guarded

  • GET /columns/types has no validator or rate limiter attached.

    public-entry-guarded

  • GET /columns/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /opera has no validator or rate limiter attached.

    public-entry-guarded

  • GET /type-codes/{code} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-scopes/all has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-scopes/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-scopes/{pk}/rules has no validator or rate limiter attached.

    public-entry-guarded

  • GET /data-scopes has no validator or rate limiter attached.

    public-entry-guarded

  • GET /sessions has no validator or rate limiter attached.

    public-entry-guarded

  • DELETE /sessions/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • GET /login has no validator or rate limiter attached.

    public-entry-guarded

  • GET /generations/tables has no validator or rate limiter attached.

    public-entry-guarded

  • GET /generations/{pk}/preview has no validator or rate limiter attached.

    public-entry-guarded

  • GET /generations/{pk}/paths has no validator or rate limiter attached.

    public-entry-guarded

  • GET /generations/{pk} has no validator or rate limiter attached.

    public-entry-guarded

  • sys_user_social is not connected to anything.

    no-orphan-datastore

Part of this repository was not read, so this report is incomplete. Read 120 of 292 files, schemas and routes first. Point Wyro at a single service directory to read one in full. Unread: backend/common/model.py.

Free account, no card. The repository opens as an editable graph.

Add this check to the README

wyro architecture badge
[![wyro architecture](https://wyro.in/api/badge/fastapi-practices/fastapi-best-architecture)](https://wyro.in/scan/fastapi-practices/fastapi-best-architecture)

It updates itself whenever the repository changes and links back to this report.

What this is

Wyro reads the repository’s routes and data models and checks the paths between them: whether a route can reach a table without passing a guard, whether a datastore holding personal data is exposed to a public read, whether an endpoint that issues credentials requires the credentials it issues.

It is rule-based, not a model. The same commit produces the same result every time, and it does not guess at business rules it cannot see. A rule with nothing to look at is reported as not having run — never as a pass.

This check runs on public source through GitHub’s own API and needs no account. A free account adds the editable architecture canvas, private repositories on paid plans, and a CI gate. No card required.