The owned_organisations module serves the company's own organisations, departments, employees, and employee assignments. All 28 endpoints sit under /api/v1/owned_organisations. For business meaning see the Owned organisations module page.
Group facts¶
| Item | Value | Source |
|---|---|---|
| Base path | /api/v1/owned_organisations |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/owned_organisations/module.py:49 |
| Routers | 3 router objects in 3 files; listed in the section Endpoint summary | src/cluster_erp/modules/owned_organisations/module.py:35 |
| Endpoints | 28, counted from the route decorators and add_api_route calls of the routers that register_routes mounts |
src/cluster_erp/modules/owned_organisations/departments/routes.py, src/cluster_erp/modules/owned_organisations/employees/routes.py, src/cluster_erp/modules/owned_organisations/organisations/routes.py |
| Authentication | Bearer header or session cookie, resolved by get_current_user; see Authentication and headers |
src/cluster_erp/modules/auth/guards.py:85-167 |
| Permission guard | 28 of 28 routes declare require_permission |
src/cluster_erp/modules/auth/guards.py:205-240 |
| App entitlement gate | require_app("owned_organisations") on every mounted router |
src/cluster_erp/modules/owned_organisations/module.py:54 |
| Error format | JSON body {"error": {...}}; see Errors |
src/cluster_erp/server/error_handler.py:33-46 |
Endpoint summary¶
One row per sub-module folder. The router prefix is added to the base path.
| Sub-module | Routers | Endpoints | Router source |
|---|---|---|---|
organisations |
router (/organisations) |
6 | src/cluster_erp/modules/owned_organisations/organisations/routes.py:28 |
departments |
router (/departments) |
7 | src/cluster_erp/modules/owned_organisations/departments/routes.py:21 |
employees |
router |
15 | src/cluster_erp/modules/owned_organisations/employees/routes.py:35 |
Organisations endpoints¶
Organisation records.
| Method | Path | Handler | Permission | Request | Query | Response | Status | Source |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/owned_organisations/organisations/ |
list_organisations |
organisation.read |
none | active_only, party_id |
list[OwnedOrganisationListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/organisations/routes.py:44 |
POST |
/api/v1/owned_organisations/organisations/ |
create_organisation |
organisation.create |
OwnedOrganisationCreate |
none | OwnedOrganisationRead |
201 |
src/cluster_erp/modules/owned_organisations/organisations/routes.py:69 |
GET |
/api/v1/owned_organisations/organisations/{org_id} |
get_organisation |
organisation.read |
none | none | OwnedOrganisationRead |
200 (default) | src/cluster_erp/modules/owned_organisations/organisations/routes.py:81 |
PUT |
/api/v1/owned_organisations/organisations/{org_id} |
update_organisation |
organisation.update |
OwnedOrganisationUpdate |
none | OwnedOrganisationRead |
200 (default) | src/cluster_erp/modules/owned_organisations/organisations/routes.py:95 |
POST |
/api/v1/owned_organisations/organisations/bulk-delete |
bulk_delete_organisations |
organisation.bulk_delete |
BulkDeleteRequest |
none | BulkDeleteResponse |
200 (default) | src/cluster_erp/modules/owned_organisations/organisations/routes.py:110 |
DELETE |
/api/v1/owned_organisations/organisations/{org_id} |
delete_organisation |
organisation.delete |
none | none | none | 204 |
src/cluster_erp/modules/owned_organisations/organisations/routes.py:122 |
Departments endpoints¶
Department records and the departments of one organisation.
| Method | Path | Handler | Permission | Request | Query | Response | Status | Source |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/owned_organisations/departments/ |
list_all_departments |
department.read |
none | none | dict |
200 (default) | src/cluster_erp/modules/owned_organisations/departments/routes.py:37 |
GET |
/api/v1/owned_organisations/departments/by-org/{org_id} |
list_departments |
department.read |
none | none | list[DepartmentRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/departments/routes.py:57 |
POST |
/api/v1/owned_organisations/departments/ |
create_department |
department.create |
DepartmentCreate |
none | DepartmentRead |
201 |
src/cluster_erp/modules/owned_organisations/departments/routes.py:75 |
GET |
/api/v1/owned_organisations/departments/{dept_id} |
get_department |
department.read |
none | none | DepartmentRead |
200 (default) | src/cluster_erp/modules/owned_organisations/departments/routes.py:86 |
PUT |
/api/v1/owned_organisations/departments/{dept_id} |
update_department |
department.update |
DepartmentUpdate |
none | DepartmentRead |
200 (default) | src/cluster_erp/modules/owned_organisations/departments/routes.py:99 |
POST |
/api/v1/owned_organisations/departments/bulk-delete |
bulk_delete_departments |
department.bulk_delete |
BulkDeleteRequest |
none | BulkDeleteResponse |
200 (default) | src/cluster_erp/modules/owned_organisations/departments/routes.py:113 |
DELETE |
/api/v1/owned_organisations/departments/{dept_id} |
delete_department |
department.delete |
none | none | none | 204 |
src/cluster_erp/modules/owned_organisations/departments/routes.py:124 |
Employees and assignments endpoints¶
Employee records and assignments, with reads by organisation, party, and department.
| Method | Path | Handler | Permission | Request | Query | Response | Status | Source |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/owned_organisations/employees/ |
list_all_employees |
employee.read |
none | search, party_id, limit, offset |
list[EmployeeListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:42 |
POST |
/api/v1/owned_organisations/employees/ |
create_employee |
employee.create |
EmployeeCreate |
none | EmployeeRead |
201 |
src/cluster_erp/modules/owned_organisations/employees/routes.py:65 |
GET |
/api/v1/owned_organisations/employees/{employee_id} |
get_employee |
employee.read |
none | none | EmployeeRead |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:81 |
PUT |
/api/v1/owned_organisations/employees/{employee_id} |
update_employee |
employee.update |
EmployeeUpdate |
none | EmployeeRead |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:98 |
POST |
/api/v1/owned_organisations/employees/bulk-delete |
bulk_delete_employees |
employee.bulk_delete |
BulkDeleteRequest |
none | BulkDeleteResponse |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:117 |
DELETE |
/api/v1/owned_organisations/employees/{employee_id} |
delete_employee |
employee.delete |
none | none | none | 204 |
src/cluster_erp/modules/owned_organisations/employees/routes.py:129 |
GET |
/api/v1/owned_organisations/assignments/ |
list_assignments |
assignment.read |
none | party_id |
list[AssignmentListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:146 |
GET |
/api/v1/owned_organisations/assignments/by-org/{org_id} |
list_assignments_by_org |
assignment.read |
none | active_only |
list[AssignmentListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:161 |
GET |
/api/v1/owned_organisations/assignments/by-party/{party_id} |
list_assignments_by_party |
assignment.read |
none | none | list[AssignmentListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:174 |
GET |
/api/v1/owned_organisations/assignments/by-dept/{dept_id} |
list_assignments_by_dept |
assignment.read |
none | none | list[AssignmentListRead] |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:188 |
POST |
/api/v1/owned_organisations/assignments/ |
create_assignment |
assignment.create |
AssignmentCreate |
none | AssignmentRead |
201 |
src/cluster_erp/modules/owned_organisations/employees/routes.py:200 |
GET |
/api/v1/owned_organisations/assignments/{assignment_id} |
get_assignment |
assignment.read |
none | none | AssignmentRead |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:216 |
PUT |
/api/v1/owned_organisations/assignments/{assignment_id} |
update_assignment |
assignment.update |
AssignmentUpdate |
none | AssignmentRead |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:234 |
POST |
/api/v1/owned_organisations/assignments/bulk-delete |
bulk_delete_assignments |
assignment.bulk_delete |
BulkDeleteRequest |
none | BulkDeleteResponse |
200 (default) | src/cluster_erp/modules/owned_organisations/employees/routes.py:253 |
DELETE |
/api/v1/owned_organisations/assignments/{assignment_id} |
delete_assignment |
assignment.delete |
none | none | none | 204 |
src/cluster_erp/modules/owned_organisations/employees/routes.py:265 |
Error codes¶
The table lists the error codes that code under src/cluster_erp/modules/owned_organisations/ raises, found by a syntax-tree scan for AppError(...), the factories in src/cluster_erp/core/errors.py (not_found, conflict, protected, permission_denied, privilege_escalation, check_version), and HTTPException(...). A status of 400 is the AppError default (src/cluster_erp/core/errors.py:23). Guard errors (401, 403), the entitlement codes, and validation errors (422) apply to every route and are listed on Errors.
| Code | HTTP status | Raised in | First site |
|---|---|---|---|
RESOURCE_NOT_FOUND |
404 |
departments, employees, organisations |
src/cluster_erp/modules/owned_organisations/departments/routes.py:95 |
VALIDATION_ERROR |
422 |
employees, organisations |
src/cluster_erp/modules/owned_organisations/employees/services.py:205 |
Events emitted¶
The table lists the contract classes that code under src/cluster_erp/modules/owned_organisations/ passes directly to EventBus.emit, found by a syntax-tree scan. Events built in a variable first are not counted. The contracts are described in Contracts reference.
| Contract | Sites | First site |
|---|---|---|
EmployeeAdded |
1 | src/cluster_erp/modules/owned_organisations/employees/services.py:232 |
OrganisationCreated |
1 | src/cluster_erp/modules/owned_organisations/organisations/services.py:103 |
OrganisationUpdated |
1 | src/cluster_erp/modules/owned_organisations/organisations/services.py:139 |
PartyRoleSet |
2 | src/cluster_erp/modules/owned_organisations/employees/services.py:94 |
Related pages¶
Verified against commit 92f8051 on 2026-11-13.