API — Administration & platform¶
Everything that is not a business module: authentication, the control panel, user administration,
shared lookups, error pages, file serving, and the public portals. This is the largest group — 225
actions — and AdminController alone accounts for 100 of them.
Ungated endpoints live here
PublicFilesController serves files from object storage with no authentication and no
ownership check, and AppsController's 12 actions are unauthenticated by design. See
R3-1 and R3-2 in Recommendations.
See Administration module, Authentication and Permissions.
227 actions across 12 controllers
Routing, the permission model, response kinds and error behaviour are described
once in the API Overview. Unless a row says otherwise the route is
/{Controller}/{Action}, id is a GUID string, and a Details page is a
full View while Manage* / Create fragments are PartialViews loaded into a modal.
AccountController¶
Sign-in and sign-out, the profile, password change, e-signature upload and approval, notifications and contacts.
Source: NKO.Lib/NKO.Shared/Controllers/AccountController.cs · route prefix: /Account · 46 actions · 7 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id, bool? type |
Account |
PartialView |
/ |
POST | App |
Account |
JSON |
/ |
GET | string err, int? edit |
Account |
View |
/ |
GET | — | Account |
View |
/ |
GET | — | Account |
View |
/ |
GET | string id |
Account |
PartialView / Redirect |
/ |
POST | App |
Account |
JSON |
/ |
GET | int id |
Account |
PartialView / Redirect |
/ |
POST | App |
Account |
PartialView / JSON |
/ |
GET | int id |
Account |
PartialView / Redirect |
/ |
POST | App |
Account |
PartialView / JSON |
/ |
GET | int id |
Account |
PartialView |
/ |
POST | User |
Account |
PartialView / JSON |
/ |
POST | string id |
Account |
JSON |
/ |
POST | IForm |
Account |
Redirect |
/ |
GET | string attachment |
Account |
Redirect / NotFound |
/ |
POST | string id |
Account |
Redirect |
/ |
GET | — | Account |
View |
/ |
POST | Custom, IForm, List< |
Account |
View |
/ |
GET | int id |
Account |
PartialView |
/ |
POST | App |
Account |
JSON |
/ |
GET | — | Account |
View |
/ |
GET | bool using |
Account |
PartialView / JSON |
/ |
POST | Identity |
Account |
JSON |
/ |
GET | string id |
Account |
View |
/ |
GET | string user |
— open | List< — internal helper, unintentionally routable |
/ |
GET | string return |
— open | View |
/ |
POST | Login, string return |
— open | View / Redirect |
/ |
GET | int? t |
Account |
Redirect |
/ |
POST | App |
Account |
Redirect |
/ |
GET | string u, int? t |
Account |
PartialView |
/ |
POST | App |
Account |
PartialView / JSON |
/ |
POST | Update |
Account |
Redirect |
/ |
POST | Update |
Account |
View / Redirect / BadRequest |
/ |
GET | int? sign |
Account |
Redirect |
/ |
POST | User |
Account |
Redirect |
/ |
GET | — | — open | Signs the caller out, redirects to / |
/ |
GET | — | — open | View |
/ |
GET | string message, bool success |
Account |
View |
/ |
POST | Update |
Account |
View |
/ |
GET | Application, string pass |
— open | Task — internal helper that calls Password; unintentionally routable, see R3-7 |
/ |
GET | — | — open | Task — internal helper, unintentionally routable |
/ |
GET | string id, int? sign, string msg, string success |
Account |
View |
/ |
POST | — | Account |
JSON |
/ |
POST | — | Account |
JSON |
/ |
GET | — | Account |
View |
AdminController¶
The control panel — permission groups and keys, the org structure (branches, departments, positions, levels, teams), reference data, donors, the work calendar, general settings, announcements and the audit history. The largest controller in the solution.
Source: NKO.Main/NKO.Main/Controllers/AdminController.cs · route prefix: /Admin · 100 actions · 1 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
POST | App, IForm |
Admin |
View |
/ |
GET | — | Admin |
PartialView |
/ |
POST | Calender |
Admin |
PartialView / JSON |
/ |
GET | — | Project |
PartialView |
/ |
POST | Budget |
Project |
PartialView / JSON |
/ |
GET | — | Admin |
View |
/ |
POST | Common |
Admin |
View / JSON |
/ |
GET | — | Admin |
View |
/ |
POST | Donor appuser |
Admin |
JSON |
/ |
GET | — | Admin |
View |
/ |
GET | Position |
Admin |
JSON |
/ |
GET | — | Admin |
View |
/ |
POST | Common |
Admin |
View / JSON |
/ |
GET | — | Admin |
PartialView |
/ |
POST | Special, List< |
Admin |
PartialView / JSON |
/ |
GET | string type |
Admin |
PartialView |
/ |
GET | App, string type |
Admin |
JSON |
/ |
GET | — | Admin |
View |
/ |
POST | App |
Admin |
JSON |
/ |
GET | string id, string edit |
Admin |
View |
/ |
POST | Announcements Model, List<, List<, List<, bool is |
Admin |
View / Redirect |
/ |
GET | int id, string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | int? page |
Admin |
View |
/ |
GET | int id |
— open | Redirect |
/ |
GET | string id |
Admin |
Redirect |
/ |
GET | string id |
Admin |
Redirect |
/ |
GET | int id |
Admin |
PartialView |
/ |
GET | Branch |
Admin |
JSON |
/ |
GET | string id |
Admin |
View / Redirect |
/ |
POST | int? Calender |
Admin |
PartialView / JSON |
/ |
GET | int id |
Project |
PartialView |
/ |
POST | Budget |
Project |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / Redirect |
/ |
POST | Common |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / Redirect |
/ |
POST | Donor model |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / Redirect |
/ |
POST | App |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / Redirect |
/ |
POST | Position |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / JSON |
/ |
POST | Calendar |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / Redirect |
/ |
POST | Common |
Admin |
PartialView / JSON |
/ |
GET | string id |
Admin |
PartialView / JSON |
/ |
POST | Special |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView |
/ |
POST | Common |
Admin |
PartialView / JSON |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | int id |
Admin |
PartialView |
/ |
POST | Common |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / JSON |
/ |
POST | Calender |
Admin |
PartialView / JSON |
/ |
GET | int? id |
Project |
PartialView / Redirect |
/ |
POST | Budget |
Project |
PartialView / JSON |
/ |
GET | int id |
Admin |
PartialView / JSON |
/ |
POST | Position |
Admin |
JSON |
/ |
GET | int id, string edit |
Admin |
View |
/ |
POST | Common |
Admin |
View / JSON |
/ |
GET | int id |
Admin |
PartialView / JSON |
/ |
POST | Special, List< |
Admin |
PartialView / JSON |
/ |
GET | int id |
Admin |
View |
/ |
POST | App |
Admin |
JSON |
/ |
GET | string id, string edit |
Admin |
View |
/ |
POST | General |
Admin |
View |
/ |
GET | List<, int? user, int? page, bool? is, int? method, int? system, string content, string from, string to, bool is |
Admin |
View / JSON |
/ |
GET | — | Admin |
View |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | int? id |
Admin |
PartialView |
/ |
POST | Common |
Admin |
PartialView / JSON |
/ |
GET | int? id |
Admin |
PartialView |
/ |
POST | Donor Model |
Admin |
JSON |
/ |
GET | int? id |
Admin |
PartialView |
/ |
POST | Calendar |
Admin |
PartialView / JSON |
/ |
GET | int branch, int? id |
Admin |
PartialView |
/ |
POST | Common |
Admin |
JSON |
/ |
GET | int position, int? id |
Admin |
View |
/ |
POST | Position |
Admin |
View / JSON |
/ |
GET | int id, int? page |
Admin |
View |
/ |
POST | int id, int to, int? page |
Admin |
View |
/ |
GET | int id |
Admin |
View |
/ |
GET | int position |
Admin |
View |
/ |
GET | int id |
Admin |
View |
/ |
GET | int? page |
Admin |
View |
/ |
GET | Request |
Admin |
JSON |
/ |
GET | List<, List<, string sort, int? page |
Admin |
View |
/ |
GET | int id, int profile, string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | int id, string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | — | Admin |
View |
/ |
POST | int id |
Admin |
JSON |
/ |
GET | int id |
Admin |
View / Redirect |
/ |
POST | List<, List<, int id |
Admin |
Redirect |
/ |
GET | int? page, List<, string All, string sort, string current, string search, string search_param, int id |
User |
View |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
/ |
GET | int id, int? page, int? user, int? selected |
Admin |
View / Redirect |
/ |
POST | List<, int id |
Admin |
Redirect |
/ |
GET | string sort, string current, string search |
Admin |
View |
/ |
GET | string sort, string current, string search, int? page |
Admin |
View |
UserController¶
User administration: linking an employee to a login, group membership and per-user permission and data-scope assignment.
Source: NKO.Main/NKO.Main/Controllers/UserController.cs · route prefix: /User · 19 actions · 0 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id |
User |
View |
/ |
GET | string user |
User |
Redirect |
/ |
GET | string id, string new, string msg |
User |
View |
/ |
POST | Edit, string id |
User |
View |
/ |
GET | string User, int type |
User |
Redirect |
/ |
GET | string id, int? page |
User |
View |
/ |
GET | string sort, string current, int? filter, string search, int? page, int login, string current, int? current, int? enabled, int? user, int active, int? filter, bool? sign, int? member, int? manager |
User |
View |
/ |
GET | string u, int? g |
User |
PartialView |
/ |
POST | App |
User |
PartialView / JSON |
/ |
GET | string u, int? t |
User |
PartialView |
/ |
POST | App |
User |
PartialView / JSON |
/ |
GET | string id |
User |
View / Redirect |
/ |
POST | User, List<, List<, string id |
User |
View |
/ |
GET | string id, string side, string current |
User |
View / Redirect |
/ |
GET | string id |
User |
View |
/ |
GET | string id |
User |
View |
/ |
POST | Reset |
User |
View |
/ |
GET | int? page |
User |
View |
/ |
GET | string id |
User |
View |
HomeController¶
The dashboard and announcements landing page.
Source: NKO.Main/NKO.Main/Controllers/HomeController.cs · route prefix: /Home · 4 actions
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id |
Home |
View / Redirect |
/ |
POST | int type |
Home |
Redirect |
/ |
GET | int? Sub, string msg |
Home |
View |
/ |
GET | string msg |
Home |
View |
GeneralController¶
Cross-cutting lookups used by many screens (contacts, org chart data, file helpers).
Source: NKO.Main/NKO.Main/Controllers/GeneralController.cs · route prefix: /General · 7 actions · 2 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | int? page, string search, string sort |
Home |
View |
/ |
GET | — | Home |
View |
/ |
GET | — | Home |
View |
/ |
GET | — | Home |
JSON |
/ |
GET | IForm |
— open | string |
/ |
GET | List< |
— open | List< — internal helper, unintentionally routable |
/ |
GET | int? page, string search, string sort |
Home |
View |
CommonController¶
Shared endpoints — the notification list and the notification redirect that resolves a record to its detail screen.
Source: NKO.Lib/NKO.Shared/Controllers/CommonController.cs · route prefix: /Common · 5 actions · 1 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | bool? is |
Home |
View |
/ |
GET | — | Home |
View |
/ |
GET | — | Home |
JSON |
/ |
GET | string id |
Home |
Redirect |
/ |
GET | string id, int? t |
— open | Redirect |
CultureController¶
Language switching (ar / en).
Source: NKO.Lib/NKO.Shared/Controllers/CultureController.cs · route prefix: /Culture · 1 actions · 1 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string culture, string return |
— open | IAction |
ErrorController¶
The generic error page and the UnAuthorised page that a failed permission check redirects to.
Source: NKO.Main/NKO.Main/Controllers/ErrorController.cs · route prefix: /Error · 3 actions
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | — | General |
View |
/ |
GET | — | General |
View |
/ |
GET | — | [Authorize] |
View |
BaseController¶
Shared lookups and helpers reachable as /Base/* — cascading dropdowns, comments, notes and attachment helpers used across modules.
Source: NKO.Main/NKO.Main/Controllers/BaseController.cs · route prefix: /Base · 24 actions
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
[Authorize] |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string file, Attach, int? sub, int? user |
General |
Redirect |
/ |
GET | string file |
[Authorize] |
Redirect |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | — | General |
View |
/ |
GET | int id |
[Authorize] |
JSON |
/ |
GET | int id |
[Authorize] |
File |
/ |
GET | int id, int profile |
General |
JSON |
/ |
GET | string branch |
General |
JSON |
/ |
GET | string branch |
[Authorize] |
JSON |
/ |
GET | int id |
[Authorize] |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | string search |
General |
JSON |
/ |
GET | int width, int height, int id |
General |
File |
/ |
POST | List< |
Account |
JSON |
FilesController¶
File download and inline viewing from object storage, plus the e-signature template. [Authorize] at class level.
Source: NKO.Lib/NKO.Shared/Controllers/FilesController.cs · route prefix: /Files · 4 actions
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id, string name |
[Authorize] (class) |
File / NotFound |
/ |
GET | — | [Authorize] (class) |
File |
/ |
GET | string id |
General |
File |
/ |
GET | string id |
[Authorize] (class) |
File / NotFound |
PublicFilesController¶
A second, ungated file controller in the same source file. See R3-1 in Recommendations.
Source: NKO.Lib/NKO.Shared/Controllers/FilesController.cs · route prefix: /PublicFiles · 2 actions · 2 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id, string name |
— open | File / NotFound |
/ |
GET | string id |
— open | File / NotFound |
AppsController¶
The public, unauthenticated portals: job application, applicant reference forms and supplier quotation submission. These write Applicants and RFQProvider* rows without a session.
Source: NKO.Main/NKO.Main/Controllers/AppsController.cs · route prefix: /Apps · 12 actions · 12 ungated
| Route | Verb | Parameters | Permission | Returns |
|---|---|---|---|---|
/ |
GET | string id |
— open | View / Redirect |
/ |
POST | Provider, Cancellation, int? export |
— open | View / Redirect |
/ |
GET | string id |
— open | View / Redirect |
/ |
POST | Applicant, Cancellation, IForm, IForm, IForm |
— open | View / Redirect |
/ |
GET | string id |
— open | View / Redirect |
/ |
POST | Reference, Cancellation, IForm, IForm, IForm |
— open | View |
/ |
GET | — | — open | View |
/ |
GET | Applicant |
— open | View |
/ |
GET | string file, Enums., int? sub, int? user |
— open | Redirect |
/ |
POST | Provider |
— open | Task< |
/ |
GET | — | — open | View |
/ |
POST | Date |
— open | JSON |
View components — not endpoints¶
SidebarViewComponent and TopbarViewComponent live alongside the controllers in
NKO.Lib/NKO.Shared/Controllers/, but both derive from ViewComponent, not Controller. Their
InvokeAsync() methods are invoked from a Razor layout
(@await Component.InvokeAsync("Sidebar")), not over HTTP — there is no
/SidebarViewComponent/InvokeAsync route, and an earlier revision of this page listed one in
error. They are excluded from the action counts above.
| Component | Source | Renders |
|---|---|---|
Sidebar |
NKO. |
Never invoked — no layout or view calls it, so it renders nothing. Dead code, like Views/. |
Topbar |
NKO. |
The top bar — notifications, language and the profile menu. |
Their [ClaimRequirement("General")] attribute does nothing
Both InvokeAsync methods carry [ClaimRequirement("General")]. ClaimRequirementFilter is an
IAsyncAuthorizationFilter, and MVC does not run the authorization filter pipeline for view
component invocation — the attribute is inert. It is harmless here (the components only render
inside an already-authorized page) but should not be read as a security control.
Related¶
- Administration module
- Authentication
- Permissions
- Administration database
- API Overview — routing, auth, responses and error behaviour.