Factorizer/Cluster ERP WikiCluster ERP Türkçe
Home / API reference

API

Intranet API (intranet)

HTTP endpoints of the intranet module under /api/v1/intranet: 117 routes with permissions, schemas, status codes, and error codes.

The intranet module serves content and spaces, audience segments, access grants, settings, comments, notifications, leave types, balances and requests, request types and requests, official deliveries, the directory, the caller's documents, kudos, quick links, alerts, events with media, and the feed. All 117 endpoints sit under /api/v1/intranet. For business meaning see the Intranet module page.

Group facts

Item Value Source
Base path /api/v1/intranet src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/intranet/module.py:172
Routers 21 router objects in 10 files; listed in the section Endpoint summary src/cluster_erp/modules/intranet/module.py:133
Endpoints 117, counted from the route decorators and add_api_route calls of the routers that register_routes mounts src/cluster_erp/modules/intranet/content/routes.py, src/cluster_erp/modules/intranet/delivery/routes.py, src/cluster_erp/modules/intranet/directory/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 116 of 117 routes declare require_permission; the other routes show their guard in the tables src/cluster_erp/modules/auth/guards.py:205-240
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
content content_router (/content), space_router (/spaces), segment_router (/segments), acl_router (/acl), settings_router (/settings), comment_router (/comments) 38 src/cluster_erp/modules/intranet/content/routes.py:37, src/cluster_erp/modules/intranet/content/routes.py:36, src/cluster_erp/modules/intranet/content/routes.py:39, src/cluster_erp/modules/intranet/content/routes.py:38, src/cluster_erp/modules/intranet/content/routes.py:40, src/cluster_erp/modules/intranet/content/routes.py:41
notifications notification_router (/notifications) 8 src/cluster_erp/modules/intranet/notifications/routes.py:28
leave leave_type_router (/leave-types), leave_balance_router (/leave-balances), leave_request_router (/leave-requests) 15 src/cluster_erp/modules/intranet/leave/routes.py:28, src/cluster_erp/modules/intranet/leave/routes.py:29, src/cluster_erp/modules/intranet/leave/routes.py:32
requests request_type_router (/request-types), request_router (/requests) 11 src/cluster_erp/modules/intranet/requests/routes.py:27, src/cluster_erp/modules/intranet/requests/routes.py:28
delivery delivery_router (/deliveries) 9 src/cluster_erp/modules/intranet/delivery/routes.py:30
directory directory_router (/directory) 4 src/cluster_erp/modules/intranet/directory/routes.py:19
my_documents my_documents_router (/my-documents) 1 src/cluster_erp/modules/intranet/my_documents/routes.py:12
engagement kudos_router (/kudos), quicklink_router (/quick-links), alert_router (/alerts) 15 src/cluster_erp/modules/intranet/engagement/routes.py:27, src/cluster_erp/modules/intranet/engagement/routes.py:28, src/cluster_erp/modules/intranet/engagement/routes.py:29
events event_router (/events), media_router (/media) 15 src/cluster_erp/modules/intranet/events/routes.py:41, src/cluster_erp/modules/intranet/events/routes.py:42
feed feed_router (/feed) 1 src/cluster_erp/modules/intranet/feed/routes.py:23

Content, spaces, and access endpoints

Six routers: content (variants, views, analytics, compliance, acknowledgements, reactions, comments), spaces, segments with rebuild and members, ACL grants, the settings row, and comment moderation.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/content/ list_content intranet_content.read none search, space_id, kind, status, mine, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:116
POST /api/v1/intranet/content/ create_content intranet_content.create sc.ContentCreate none sc.ContentRead 201 src/cluster_erp/modules/intranet/content/routes.py:171
GET /api/v1/intranet/content/pending-acks my_pending_acks intranet_content.read none party_id dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:181
GET /api/v1/intranet/content/{content_id} get_content intranet_content.read none none sc.ContentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:205
PUT /api/v1/intranet/content/{content_id} update_content intranet_content.update sc.ContentUpdate none sc.ContentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:230
POST /api/v1/intranet/content/{content_id}/actions/{action} run_content_action intranet_content.update dict[str, Any] \| None none sc.ContentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:243
DELETE /api/v1/intranet/content/{content_id} deactivate_content intranet_content.delete none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:287
GET /api/v1/intranet/content/{content_id}/variants list_variants intranet_content.read none none list[sc.VariantRead] 200 (default) src/cluster_erp/modules/intranet/content/routes.py:307
PUT /api/v1/intranet/content/{content_id}/variants set_variant intranet_content.update sc.VariantWrite none sc.VariantRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:317
POST /api/v1/intranet/content/{content_id}/view record_view intranet_content.read none party_id dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:333
GET /api/v1/intranet/content/{content_id}/analytics content_analytics intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:349
GET /api/v1/intranet/content/{content_id}/compliance content_compliance intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:358
POST /api/v1/intranet/content/{content_id}/acknowledge acknowledge_content intranet_content.read sc.AckWrite \| None party_id sc.AckRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:370
GET /api/v1/intranet/content/{content_id}/acks list_acks intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:402
GET /api/v1/intranet/content/{content_id}/reactions reaction_counts intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:421
PUT /api/v1/intranet/content/{content_id}/reactions set_reaction intranet_content.read sc.ReactionWrite party_id sc.ReactionRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:430
DELETE /api/v1/intranet/content/{content_id}/reactions remove_reaction intranet_content.read none party_id dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:448
GET /api/v1/intranet/content/{content_id}/comments list_comments intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:467
POST /api/v1/intranet/content/{content_id}/comments create_comment intranet_content.read sc.CommentCreate party_id sc.CommentRead 201 src/cluster_erp/modules/intranet/content/routes.py:480
GET /api/v1/intranet/spaces/ list_spaces intranet_space.read none search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:47
POST /api/v1/intranet/spaces/ create_space intranet_space.create sc.SpaceCreate none sc.SpaceRead 201 src/cluster_erp/modules/intranet/content/routes.py:68
GET /api/v1/intranet/spaces/{space_id} get_space intranet_space.read none none sc.SpaceRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:78
PUT /api/v1/intranet/spaces/{space_id} update_space intranet_space.update sc.SpaceUpdate none sc.SpaceRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:90
DELETE /api/v1/intranet/spaces/{space_id} deactivate_space intranet_space.delete none none sc.SpaceRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:103
GET /api/v1/intranet/segments/ list_segments intranet_segment.read none include_inactive, search dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:551
POST /api/v1/intranet/segments/ create_segment intranet_segment.create sc.SegmentCreate none sc.SegmentRead 201 src/cluster_erp/modules/intranet/content/routes.py:565
GET /api/v1/intranet/segments/{segment_id} get_segment intranet_segment.read none none sc.SegmentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:578
PUT /api/v1/intranet/segments/{segment_id} update_segment intranet_segment.update sc.SegmentUpdate none sc.SegmentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:590
POST /api/v1/intranet/segments/{segment_id}/rebuild rebuild_segment intranet_segment.update none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:604
POST /api/v1/intranet/segments/rebuild-all rebuild_all_segments intranet_segment.update none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:619
GET /api/v1/intranet/segments/{segment_id}/members segment_members intranet_segment.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:636
DELETE /api/v1/intranet/segments/{segment_id} deactivate_segment intranet_segment.delete none none sc.SegmentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:646
GET /api/v1/intranet/acl/ list_grants intranet_content.read none subject_kind, subject_id dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:515
POST /api/v1/intranet/acl/ set_grant intranet_content.update sc.AclGrantWrite none sc.AclGrantRead 201 src/cluster_erp/modules/intranet/content/routes.py:529
DELETE /api/v1/intranet/acl/{grant_id} remove_grant intranet_content.update none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:539
GET /api/v1/intranet/settings/ get_settings_row intranet_settings.read none none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:659
PUT /api/v1/intranet/settings/ update_settings_row intranet_settings.update dict[str, Any] none dict 200 (default) src/cluster_erp/modules/intranet/content/routes.py:676
POST /api/v1/intranet/comments/{comment_id}/moderate moderate_comment intranet_content.publish dict[str, Any] \| None none sc.CommentRead 200 (default) src/cluster_erp/modules/intranet/content/routes.py:500

Notifications endpoints

Notifications, the caller's own list, unread count, mark read and seen, and dispatch rows.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/notifications/ list_notifications intranet_notification.read none party_id, unread_only, search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:31
GET /api/v1/intranet/notifications/mine list_my_notifications intranet_notification.read none unread_only, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:67
GET /api/v1/intranet/notifications/unread-count unread_count intranet_notification.read none party_id dict 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:92
POST /api/v1/intranet/notifications/read-all mark_all_read intranet_notification.update none party_id dict 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:113
GET /api/v1/intranet/notifications/{notification_id}/dispatches list_dispatches intranet_notification.read none none list[sc.DispatchRead] 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:153
GET /api/v1/intranet/notifications/{notification_id} get_notification intranet_notification.read none none sc.NotificationRead 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:167
POST /api/v1/intranet/notifications/{notification_id}/read mark_read intranet_notification.update none none sc.NotificationRead 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:178
POST /api/v1/intranet/notifications/{notification_id}/seen mark_seen intranet_notification.update none none sc.NotificationRead 200 (default) src/cluster_erp/modules/intranet/notifications/routes.py:190

Leave endpoints

Three routers: leave types, leave balances, and leave requests with actions.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/leave-types/ list_leave_types intranet_leave_type.read none include_inactive, search dict 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:40
POST /api/v1/intranet/leave-types/ create_leave_type intranet_leave_type.create sc.LeaveTypeCreate none sc.LeaveTypeRead 201 src/cluster_erp/modules/intranet/leave/routes.py:56
GET /api/v1/intranet/leave-types/{type_id} get_leave_type intranet_leave_type.read none none sc.LeaveTypeRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:66
PUT /api/v1/intranet/leave-types/{type_id} update_leave_type intranet_leave_type.update sc.LeaveTypeUpdate none sc.LeaveTypeRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:78
DELETE /api/v1/intranet/leave-types/{type_id} deactivate_leave_type intranet_leave_type.delete none none sc.LeaveTypeRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:91
GET /api/v1/intranet/leave-balances/ list_balances intranet_leave_balance.read none party_id, period_year dict 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:104
GET /api/v1/intranet/leave-balances/{balance_id} get_balance intranet_leave_balance.read none none sc.LeaveBalanceRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:126
POST /api/v1/intranet/leave-balances/ create_balance intranet_leave_balance.create sc.LeaveBalanceWrite none sc.LeaveBalanceRead 201 src/cluster_erp/modules/intranet/leave/routes.py:142
PUT /api/v1/intranet/leave-balances/{balance_id} update_balance intranet_leave_balance.update sc.LeaveBalanceUpdate none sc.LeaveBalanceRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:154
GET /api/v1/intranet/leave-requests/ list_requests intranet_leave_request.read none party_id, status, leave_type_id, search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:170
POST /api/v1/intranet/leave-requests/ create_request intranet_leave_request.create sc.LeaveRequestCreate none sc.LeaveRequestRead 201 src/cluster_erp/modules/intranet/leave/routes.py:204
GET /api/v1/intranet/leave-requests/{request_id} get_request intranet_leave_request.read none none sc.LeaveRequestRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:225
PUT /api/v1/intranet/leave-requests/{request_id} update_request intranet_leave_request.update sc.LeaveRequestUpdate none sc.LeaveRequestRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:241
POST /api/v1/intranet/leave-requests/{request_id}/actions/{action} run_request_action intranet_leave_request.update dict[str, Any] \| None none sc.LeaveRequestRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:255
DELETE /api/v1/intranet/leave-requests/{request_id} deactivate_request intranet_leave_request.delete none none sc.LeaveRequestRead 200 (default) src/cluster_erp/modules/intranet/leave/routes.py:283

Requests endpoints

Two routers: request types and requests with actions.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/request-types/ list_request_types intranet_request_type.read none include_inactive, search dict 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:34
POST /api/v1/intranet/request-types/ create_request_type intranet_request_type.create sc.RequestTypeCreate none sc.RequestTypeRead 201 src/cluster_erp/modules/intranet/requests/routes.py:50
GET /api/v1/intranet/request-types/{type_id} get_request_type intranet_request_type.read none none sc.RequestTypeRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:60
PUT /api/v1/intranet/request-types/{type_id} update_request_type intranet_request_type.update sc.RequestTypeUpdate none sc.RequestTypeRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:72
DELETE /api/v1/intranet/request-types/{type_id} deactivate_request_type intranet_request_type.delete none none sc.RequestTypeRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:85
GET /api/v1/intranet/requests/ list_requests intranet_request.read none party_id, status, request_type_id, search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:98
POST /api/v1/intranet/requests/ create_request intranet_request.create sc.RequestCreate none sc.RequestRead 201 src/cluster_erp/modules/intranet/requests/routes.py:132
GET /api/v1/intranet/requests/{request_id} get_request intranet_request.read none none sc.RequestRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:152
PUT /api/v1/intranet/requests/{request_id} update_request intranet_request.update sc.RequestUpdate none sc.RequestRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:168
POST /api/v1/intranet/requests/{request_id}/actions/{action} run_request_action intranet_request.update dict[str, Any] \| None none sc.RequestRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:181
DELETE /api/v1/intranet/requests/{request_id} deactivate_request intranet_request.delete none none sc.RequestRead 200 (default) src/cluster_erp/modules/intranet/requests/routes.py:206

Official deliveries endpoints

Deliveries with a document download and the deliver, acknowledge, and refuse actions.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/deliveries/ list_deliveries intranet_official_delivery.read none party_id, status, category, search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:50
POST /api/v1/intranet/deliveries/ create_delivery intranet_official_delivery.create sc.DeliveryCreate none sc.DeliveryRead 201 src/cluster_erp/modules/intranet/delivery/routes.py:84
GET /api/v1/intranet/deliveries/{delivery_id} get_delivery intranet_official_delivery.read none none sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:101
GET /api/v1/intranet/deliveries/{delivery_id}/document download_delivery_document intranet_official_delivery.read none none Response 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:120
PUT /api/v1/intranet/deliveries/{delivery_id} update_delivery intranet_official_delivery.update sc.DeliveryUpdate none sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:166
POST /api/v1/intranet/deliveries/{delivery_id}/actions/deliver deliver intranet_official_delivery.update dict[str, Any] \| None none sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:182
POST /api/v1/intranet/deliveries/{delivery_id}/actions/acknowledge acknowledge_delivery intranet_official_delivery.read dict[str, Any] \| None party_id sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:197
POST /api/v1/intranet/deliveries/{delivery_id}/actions/refuse refuse intranet_official_delivery.update dict[str, Any] \| None none sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:230
DELETE /api/v1/intranet/deliveries/{delivery_id} deactivate_delivery intranet_official_delivery.delete none none sc.DeliveryRead 200 (default) src/cluster_erp/modules/intranet/delivery/routes.py:242

Directory endpoints

The colleague directory, the organisation chart, one colleague, and direct reports.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/directory/ list_directory intranet_employee_projection.read none search, dept_id, manager_party_id, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/directory/routes.py:22
GET /api/v1/intranet/directory/org-chart org_chart intranet_employee_projection.read none none dict 200 (default) src/cluster_erp/modules/intranet/directory/routes.py:48
GET /api/v1/intranet/directory/{party_id} get_colleague intranet_employee_projection.read none none sc.EmployeeProjectionRead 200 (default) src/cluster_erp/modules/intranet/directory/routes.py:60
GET /api/v1/intranet/directory/{party_id}/reports direct_reports intranet_employee_projection.read none none dict 200 (default) src/cluster_erp/modules/intranet/directory/routes.py:72

My documents endpoints

The caller's own documents. The handler resolves the user from the credential (src/cluster_erp/modules/intranet/my_documents/routes.py:25).

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/my-documents/ list_my_documents authenticated user (get_current_user) none none dict 200 (default) src/cluster_erp/modules/intranet/my_documents/routes.py:15

Engagement endpoints

Three routers: kudos, quick links, and alerts with an active-alerts read.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/kudos/ list_kudos intranet_kudos.read none to_party_id, search, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:35
POST /api/v1/intranet/kudos/ create_kudos intranet_kudos.create sc.KudosCreate none sc.KudosRead 201 src/cluster_erp/modules/intranet/engagement/routes.py:57
GET /api/v1/intranet/kudos/{kudos_id} get_kudos intranet_kudos.read none none sc.KudosRead 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:85
DELETE /api/v1/intranet/kudos/{kudos_id} deactivate_kudos intranet_kudos.delete none none dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:97
GET /api/v1/intranet/quick-links/ list_quicklinks intranet_quick_link.read none include_inactive, search dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:110
POST /api/v1/intranet/quick-links/ create_quicklink intranet_quick_link.create sc.QuickLinkCreate none sc.QuickLinkRead 201 src/cluster_erp/modules/intranet/engagement/routes.py:126
GET /api/v1/intranet/quick-links/{link_id} get_quicklink intranet_quick_link.read none none sc.QuickLinkRead 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:136
PUT /api/v1/intranet/quick-links/{link_id} update_quicklink intranet_quick_link.update sc.QuickLinkUpdate none sc.QuickLinkRead 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:148
DELETE /api/v1/intranet/quick-links/{link_id} deactivate_quicklink intranet_quick_link.delete none none dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:161
GET /api/v1/intranet/alerts/active active_alerts intranet_alert.read none none dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:174
GET /api/v1/intranet/alerts/ list_alerts intranet_alert.read none include_inactive, search dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:186
POST /api/v1/intranet/alerts/ create_alert intranet_alert.create sc.AlertCreate none sc.AlertRead 201 src/cluster_erp/modules/intranet/engagement/routes.py:202
GET /api/v1/intranet/alerts/{alert_id} get_alert intranet_alert.read none none sc.AlertRead 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:214
PUT /api/v1/intranet/alerts/{alert_id} update_alert intranet_alert.update sc.AlertUpdate none sc.AlertRead 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:226
DELETE /api/v1/intranet/alerts/{alert_id} deactivate_alert intranet_alert.delete none none dict 200 (default) src/cluster_erp/modules/intranet/engagement/routes.py:239

Events and media endpoints

Two routers: events (actions, RSVP, RSVP list, invitations, changes, an iCalendar export) and media attached to an entity.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/events/ list_events intranet_event.read none status, upcoming, from_dt, to_dt, space_id, search, mine, include_archived, limit, offset dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:57
POST /api/v1/intranet/events/ create_event intranet_event.create sc.EventCreate none sc.EventRead 201 src/cluster_erp/modules/intranet/events/routes.py:97
GET /api/v1/intranet/events/{event_id} get_event intranet_event.read none none sc.EventRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:116
PUT /api/v1/intranet/events/{event_id} update_event intranet_event.update sc.EventUpdate none sc.EventRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:129
DELETE /api/v1/intranet/events/{event_id} archive_event intranet_event.update none none sc.EventRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:145
POST /api/v1/intranet/events/{event_id}/actions/{action} run_event_action intranet_event.update sc.EventActionIn \| None none sc.EventRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:162
POST /api/v1/intranet/events/{event_id}/rsvp rsvp_event intranet_event.read sc.RsvpWrite none sc.RsvpRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:207
GET /api/v1/intranet/events/{event_id}/rsvps list_event_rsvps intranet_event.read none none dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:229
GET /api/v1/intranet/events/{event_id}/invitations list_event_invitations intranet_event.read none none dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:263
GET /api/v1/intranet/events/{event_id}/changes list_event_changes intranet_event.read none none dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:281
GET /api/v1/intranet/events/{event_id}/ics event_ics intranet_event.read none none Response 200 (default) src/cluster_erp/modules/intranet/events/routes.py:295
GET /api/v1/intranet/media/{entity_type}/{entity_id} list_media intranet_content.read none none dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:325
POST /api/v1/intranet/media/{entity_type}/{entity_id} add_media intranet_content.update sc.MediaAdd none sc.MediaRead 201 src/cluster_erp/modules/intranet/events/routes.py:337
PUT /api/v1/intranet/media/{media_id} update_media intranet_content.update sc.MediaUpdate none sc.MediaRead 200 (default) src/cluster_erp/modules/intranet/events/routes.py:352
DELETE /api/v1/intranet/media/{media_id} remove_media intranet_content.update none none dict 200 (default) src/cluster_erp/modules/intranet/events/routes.py:363

Feed endpoints

The caller's feed.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/intranet/feed/ get_feed intranet_content.read none types, kind, space_id, mine, before, limit dict 200 (default) src/cluster_erp/modules/intranet/feed/routes.py:26

Error codes

The table lists the error codes that code under src/cluster_erp/modules/intranet/ 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
AUTH_PERMISSION_DENIED 403 access, content, delivery, events src/cluster_erp/modules/intranet/access.py:75
INTRANET_ERROR 400 content, leave, requests src/cluster_erp/modules/intranet/content/services.py:1098
INTRANET_EVENT_ENDS_BEFORE_START 422 events src/cluster_erp/modules/intranet/events/services.py:377
INTRANET_EVENT_FULL 422 events src/cluster_erp/modules/intranet/events/lifecycle.py:255
INTRANET_EVENT_INVALID_STATUS 422 events src/cluster_erp/modules/intranet/events/lifecycle.py:108
INTRANET_EVENT_NOT_EDITABLE 422 events src/cluster_erp/modules/intranet/events/lifecycle.py:139
INTRANET_EVENT_REASON_REQUIRED 422 events src/cluster_erp/modules/intranet/events/lifecycle.py:306
INTRANET_EVENT_RSVP_CLOSED 422 events src/cluster_erp/modules/intranet/events/services.py:609
INTRANET_EVENT_UNCANCEL_EXPIRED 422 events src/cluster_erp/modules/intranet/events/lifecycle.py:156
INTRANET_INVALID_STATUS 400 content, delivery, leave, requests src/cluster_erp/modules/intranet/content/services.py:821
INTRANET_LEAVE_DOCUMENT_REQUIRED 409 leave src/cluster_erp/modules/intranet/leave/services.py:515
INTRANET_LEAVE_GENDER_RESTRICTED 409 leave src/cluster_erp/modules/intranet/leave/services.py:459
INTRANET_LEAVE_INSUFFICIENT_BALANCE 409 leave src/cluster_erp/modules/intranet/leave/services.py:539
INTRANET_LEAVE_NOTICE_TOO_SHORT 409 leave src/cluster_erp/modules/intranet/leave/services.py:490
INTRANET_LEAVE_OVERLAP 409 leave src/cluster_erp/modules/intranet/leave/services.py:432
INTRANET_MEDIA_ENTITY 422 events src/cluster_erp/modules/intranet/events/routes.py:317
INTRANET_NO_PARTY 400 content, engagement, events src/cluster_erp/modules/intranet/content/routes.py:384
INTRANET_PARTY_NOT_EMPLOYEE 422 access src/cluster_erp/modules/intranet/access.py:139
RESOURCE_CONFLICT 409 content, leave, requests src/cluster_erp/modules/intranet/content/services.py:310
RESOURCE_NOT_FOUND 404 content, delivery, directory, engagement, events, leave, notifications, requests src/cluster_erp/modules/intranet/content/routes.py:86

Events emitted

The table lists the contract classes that code under src/cluster_erp/modules/intranet/ 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
IntranetEventCancelled 1 src/cluster_erp/modules/intranet/events/services.py:497
IntranetEventPublished 1 src/cluster_erp/modules/intranet/events/services.py:590
IntranetEventUpdated 1 src/cluster_erp/modules/intranet/events/services.py:431
IntranetPostPublished 1 src/cluster_erp/modules/intranet/content/routes.py:273
ResolveEntityEmails 2 src/cluster_erp/modules/intranet/directory/services.py:91
SendTransactionalEmail 1 src/cluster_erp/modules/intranet/notify.py:51

Verified against commit 92f8051 on 2026-11-13.

Verified against commit 92f8051 · 2026-11-13