Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
ca39264
!refactor(backend): restructure user endpoints
matmair Apr 28, 2025
7ecdac0
Merge branch 'next-breaking' into refactor(backend)--restucture-user-…
matmair Feb 26, 2026
8eb919a
cleanup
matmair Feb 27, 2026
d1eac9c
ann changelog entry
matmair Feb 27, 2026
a0ba06f
fix name
matmair Feb 27, 2026
71b7713
chore(docs): remove old structure entry (#11435)
matmair Feb 27, 2026
a9fdcf2
bump API
matmair Feb 27, 2026
cdd102f
feat(docs): add next breaking docs (#11433)
matmair Feb 27, 2026
b471b25
Merge branch 'next-breaking' into refactor(backend)--restucture-user-…
matmair Feb 27, 2026
05a63fe
chore(deps): bump the dependencies group across 2 directories with 8 …
dependabot[bot] Feb 27, 2026
23d60bf
chore(deps): bump pypdf from 6.7.2 to 6.7.3 in /src/backend (#11436)
dependabot[bot] Feb 27, 2026
3d9104e
Add "updated_at" field to Orders model (#11374)
jmerro-c3d Feb 27, 2026
428e782
chore(deps): bump pypdf from 6.7.3 to 6.7.4 in /src/backend (#11443)
dependabot[bot] Mar 1, 2026
2c67454
fix requirements (#11445)
matmair Mar 2, 2026
3bbdddf
[API] Enforce pk ordering for API endpoints (#11446)
SchrodingersGat Mar 2, 2026
41a617f
Allow Zero Quantity BOM Item with System Setting (#11437)
jacobfelknor Mar 3, 2026
948818b
Expose monitorDataOutput hook to plugin library (#11453)
SchrodingersGat Mar 3, 2026
cdcfdd8
[bug] Import Session bug fix (#11456)
SchrodingersGat Mar 3, 2026
4d40435
[ui] Fix Reference column in SalesOrderLineItemTable (#11455)
SchrodingersGat Mar 4, 2026
3ed21e0
chore(deps): bump pypdf from 6.7.4 to 6.7.5 in /src/backend (#11454)
dependabot[bot] Mar 4, 2026
511d97b
re-enable codspeed (#11457)
matmair Mar 4, 2026
7d61e59
bump django (#11463)
matmair Mar 5, 2026
fcb76cd
chore(deps): bump the dependencies group across 1 directory with 5 up…
dependabot[bot] Mar 9, 2026
2c8ef25
chore(deps): bump the dependencies group across 2 directories with 12…
dependabot[bot] Mar 10, 2026
bcde270
chore(deps): bump pypdf from 6.7.5 to 6.8.0 in /src/backend (#11485)
dependabot[bot] Mar 11, 2026
27809d7
Copy order params (#11479)
SchrodingersGat Mar 11, 2026
a964d66
fix: wrap create_default_labels in transaction.atomic() savepoint to …
tigger2000ttfn Mar 11, 2026
57949b6
chore(frontend): resolution bump (#11465)
matmair Mar 12, 2026
f7da51b
fix style issue from 11485 (#11487)
matmair Mar 12, 2026
c292e80
Enhance MonitorDataOutput (#11458)
SchrodingersGat Mar 12, 2026
aafda4b
[UI] Fix hook deps for BuildOutputTable (#11483)
SchrodingersGat Mar 12, 2026
1e2c9ed
Refactor part.on_order (#11496)
SchrodingersGat Mar 12, 2026
1be08e4
[API] Allow filtering ScheduledTask objects by name (#11497)
SchrodingersGat Mar 12, 2026
98b56e1
New Crowdin translations by GitHub Action (#11407)
github-actions[bot] Mar 12, 2026
bc0ab35
Fix broken redis link (#11502)
SchrodingersGat Mar 12, 2026
6ca102c
Allow bulk edit of stock batch code (#11499)
SchrodingersGat Mar 12, 2026
7d739e5
chore(deps): bump the dependencies group across 1 directory with 4 up…
dependabot[bot] Mar 12, 2026
c8d41bc
chore(deps): bump dompurify from 3.2.6 to 3.3.2 in /src/frontend (#11…
dependabot[bot] Mar 13, 2026
6deed01
Add poppler-utils to packager.io dependencies (#11508)
justynbell Mar 13, 2026
fda3204
fix: low-privilege user token creation (#11492)
matmair Mar 14, 2026
d7af345
refactor(frontend): use central user creds (#11520)
matmair Mar 14, 2026
649ff00
[CI] Add unit test for large shipment (#11503)
SchrodingersGat Mar 14, 2026
c3cedd2
Fix stuck-in-past expiry date filter (#11518)
jacobfelknor Mar 14, 2026
da982dc
Fix table for s3 backup in docs (#11512)
Knirps1 Mar 14, 2026
897e3b9
bump build tooling (#11505)
matmair Mar 14, 2026
29ac239
bump undici (#11526)
matmair Mar 14, 2026
133d254
chore(deps): bump the dependencies group across 2 directories with 25…
dependabot[bot] Mar 14, 2026
6830ba5
[API] Monitor task (#11527)
SchrodingersGat Mar 15, 2026
609a3f4
[UI] Library fix (#11530)
SchrodingersGat Mar 15, 2026
97aec82
bump PyJWT (#11532)
matmair Mar 15, 2026
84cd81d
Build consume fix (#11529)
SchrodingersGat Mar 17, 2026
ab11630
chore(backend): fix isGenerating detection (#11548)
matmair Mar 17, 2026
34b7a55
chore(deps): bump the dependencies group with 7 updates (#11544)
dependabot[bot] Mar 17, 2026
756c0be
[db] Backend setting improvements (#11500)
SchrodingersGat Mar 17, 2026
b10fd94
Remove error handling for complete_build_allocations task (#11551)
SchrodingersGat Mar 17, 2026
488bd5f
Fix complete_sales_order_shipment task (#11525)
SchrodingersGat Mar 17, 2026
468f0f9
fix(plugin): use app_name instead of plugin_path when deregistering m…
nino-tan-smartee Mar 18, 2026
865ec47
Fix error generation on failed background task (#11552)
SchrodingersGat Mar 18, 2026
1610337
chore(backend): Bump ty (#11537)
matmair Mar 18, 2026
b239643
Merge branch 'next-breaking' into refactor(backend)--restucture-user-…
matmair Mar 18, 2026
077a3d1
remove api bump
matmair Mar 18, 2026
4468305
do not check for api diff on breaking
matmair Mar 18, 2026
22ae0d0
fix redis docs link
matmair Mar 18, 2026
4599edd
[UI Update image fix (#11557)
SchrodingersGat Mar 19, 2026
ef2f05a
[API] Bug fix for PartCategory cascade filter (#11562)
SchrodingersGat Mar 19, 2026
9c993d1
bump drf (#11559)
matmair Mar 19, 2026
7f06105
Build line fix (#11566)
SchrodingersGat Mar 19, 2026
a64b15a
chore(deps): bump pypdf from 6.8.0 to 6.9.1 in /src/backend (#11556)
dependabot[bot] Mar 19, 2026
8c2592b
Fix parent field for StockItemSerializer (#11573)
SchrodingersGat Mar 20, 2026
fc730b9
Save user info (#11572)
SchrodingersGat Mar 20, 2026
5f9972e
[plugin] Cache busting for plugin static files (#11565)
SchrodingersGat Mar 20, 2026
c5bf915
Adjust DataOutput API endpoint (#11580)
SchrodingersGat Mar 21, 2026
5adf33d
Improvements for get_bulk_queryset (#11581)
SchrodingersGat Mar 21, 2026
6d8606b
Refactoring for report helper functions (#11579)
SchrodingersGat Mar 21, 2026
3a38163
Make WAL mode configurable for sqlite (#11585)
SchrodingersGat Mar 21, 2026
cf619b4
[Bug] Import-records fix when importing from older InvenTree+Postgres…
bbzylstra Mar 21, 2026
8e289a3
[API] Category star fix (#11588)
SchrodingersGat Mar 21, 2026
0feba9f
New Crowdin translations by GitHub Action (#11498)
github-actions[bot] Mar 22, 2026
1e0a0aa
Add option to "asset" tag to control error raising (#11591)
SchrodingersGat Mar 22, 2026
08e8b43
docs:clear up admin access (#11595)
matmair Mar 22, 2026
7100569
Support image upload from clipboard (#11577)
martonmiklos Mar 23, 2026
ae593bd
chore(backend): full backend/image bump (#11571)
matmair Mar 23, 2026
4865a2b
Remove unnecessary semicolon passed to FontFace constructor (#11603)
martonmiklos Mar 24, 2026
b98fc9c
Restrict queryset for DataImportSession (#11602)
SchrodingersGat Mar 24, 2026
953b77b
chore(deps): bump the dependencies group with 4 updates (#11599)
dependabot[bot] Mar 24, 2026
8ec61ac
Update DataExport functionality (#11604)
SchrodingersGat Mar 24, 2026
a1ec46a
isGeneratingSchema fix (#11606)
SchrodingersGat Mar 24, 2026
7e18555
chore(deps): bump yaml from 1.10.2 to 1.10.3 in /src/frontend (#11607)
dependabot[bot] Mar 26, 2026
6233fe4
Merge branch 'inventree:master' into refactor(backend)--restucture-us…
matmair Mar 26, 2026
ac557b2
Revert "Merge branch 'inventree:master' into refactor(backend)--restu…
matmair Mar 30, 2026
5d97fab
Fix typo
matmair Mar 30, 2026
3f51e98
Merge branch 'next-breaking' into refactor(backend)--restucture-user-…
matmair Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/qc_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ jobs:
run: echo "${DIFF}" >> $GITHUB_STEP_SUMMARY

- name: Check for differences in API Schema
if: needs.paths-filter.outputs.api == 'false'
if: needs.paths-filter.outputs.api == 'false' && github.base_ref != 'next-breaking'
run: |
diff --color -u src/backend/InvenTree/schema.yml api.yaml
diff -u src/backend/InvenTree/schema.yml api.yaml && echo "no difference in API schema " || exit 2
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Breaking Changes - Remove deprecated features and APIs

- [#9604](https://github.com/inventree/InvenTree/pull/9604) - refactors user API endpoint to be less ambiguous
- [#11111](https://github.com/inventree/InvenTree/pull/11111) - removes legacy metadata APIs
- [#9814](https://github.com/inventree/InvenTree/pull/9814) - removes legacy config path support
- [#11667](https://github.com/inventree/InvenTree/pull/11667) - removes legacy url patterns
Expand Down
19 changes: 14 additions & 5 deletions src/backend/InvenTree/users/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,17 +506,26 @@ def get_object(self):


user_urls = [
path('roles/', RoleDetails.as_view(), name='api-user-roles'),
path('token/', ensure_csrf_cookie(GetAuthToken.as_view()), name='api-token'),
# Individual user endpoints
path(
'tokens/',
'me/',
include([
path('profile/', UserProfileDetail.as_view(), name='api-user-profile'),
path('roles/', RoleDetails.as_view(), name='api-user-roles'),
path(
'token/', ensure_csrf_cookie(GetAuthToken.as_view()), name='api-token'
),
path('', MeUserDetail.as_view(), name='api-user-me'),
]),
),
# User related endpoints
path(
'token/',
include([
path('<int:pk>/', TokenDetailView.as_view(), name='api-token-detail'),
path('', TokenListView.as_view(), name='api-token-list'),
]),
),
path('me/', MeUserDetail.as_view(), name='api-user-me'),
path('profile/', UserProfileDetail.as_view(), name='api-user-profile'),
path(
'owner/',
include([
Expand Down
11 changes: 6 additions & 5 deletions src/frontend/lib/enums/ApiEndpoints.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ export enum ApiEndpoints {
// User API endpoints
user_list = 'user/',
user_set_password = 'user/:id/set-password/',
user_me = 'user/me/',
user_profile = 'user/profile/',
user_roles = 'user/roles/',
user_token = 'user/token/',
user_tokens = 'user/tokens/',
user_tokens = 'user/token/',
user_simple_login = 'email/generate/',
// Individual user endpoints
user_me_profile = 'user/me/profile/',
user_me_roles = 'user/me/roles/',
user_me_token = 'user/me/token/',
user_me = 'user/me/',

// User auth endpoints
auth_base = '/auth/',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export function AccountDetailPanel() {

const editProfile = useEditApiFormModal({
title: t`Edit Profile Information`,
url: ApiEndpoints.user_profile,
url: ApiEndpoints.user_me_profile,
onFormSuccess: fetchUserState,
fields: profileFields,
successMessage: t`Profile details updated`
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/states/LocalState.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ pushes changes in user profile to backend
function patchUser(key: 'language' | 'theme' | 'widgets', val: any) {
const uid = useUserState.getState().userId();
if (uid) {
api.patch(apiUrl(ApiEndpoints.user_profile), { [key]: val });
api.patch(apiUrl(ApiEndpoints.user_me_profile), { [key]: val });
} else {
console.log('user not logged in, not patching');
}
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/states/UserState.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export const useUserState = create<UserStateProps>((set, get) => ({

// Fetch role data
await api
.get(apiUrl(ApiEndpoints.user_roles))
.get(apiUrl(ApiEndpoints.user_me_roles))
.then((response) => {
if (response.status == 200) {
const user: UserProps = get().user as UserProps;
Expand Down
Loading