crm modülü müşterileri, müşteri parçalarını ve revizyonlarını, kalemleri, kalem malzemeleri ve paketleriyle müşteri teklif taleplerini ve CRM gelen kutusunu sunar. 57 uç noktanın tamamı /api/v1/crm altındadır. İş anlamı için CRM modülü sayfasına bakın.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/crm |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/crm/module.py:65 |
| Yönlendiriciler | 7 dosyada 7 yönlendirici nesnesi; Uç nokta özeti bölümünde listelenir | src/cluster_erp/modules/crm/module.py:39 |
| Uç noktalar | 57; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/crm/customer_part_revisions/routes.py, src/cluster_erp/modules/crm/customer_parts/routes.py, src/cluster_erp/modules/crm/customers/routes.py ... |
| Kimlik doğrulama | Bearer başlığı veya oturum çerezi, get_current_user ile çözülür; bkz. Kimlik doğrulama ve başlıklar |
src/cluster_erp/modules/auth/guards.py:85-167 |
| Yetki koruması | 57 yolun 57 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("crm") |
src/cluster_erp/modules/crm/module.py:74 |
| Hata biçimi | JSON gövdesi {"error": {...}}; bkz. Hatalar |
src/cluster_erp/server/error_handler.py:33-46 |
Uç nokta özeti¶
Alt modül klasörü başına bir satır. Yönlendirici öneki temel yola eklenir.
| Alt modül | Yönlendiriciler | Uç noktalar | Yönlendirici kaynağı |
|---|---|---|---|
customers |
router |
6 | src/cluster_erp/modules/crm/customers/routes.py:28 |
customer_parts |
router |
6 | src/cluster_erp/modules/crm/customer_parts/routes.py:27 |
customer_part_revisions |
router |
7 | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:21 |
rfqs |
router |
18 | src/cluster_erp/modules/crm/rfqs/routes.py:36 |
rfq_line_items |
router |
6 | src/cluster_erp/modules/crm/rfq_line_items/routes.py:20 |
rfq_line_materials |
router |
6 | src/cluster_erp/modules/crm/rfq_line_materials/routes.py:26 |
inbox |
router |
8 | src/cluster_erp/modules/crm/inbox/routes.py:22 |
Müşteriler uç noktaları¶
Müşteri kayıtları. Bu modüldeki yönlendiricilerin kendi öneki yoktur; her yol kendi kaynak bölümüyle başlar.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/customers/ |
list_customers |
customer.read |
yok | search, active_only, party_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/crm/customers/routes.py:37 |
POST |
/api/v1/crm/customers/ |
create_customer |
customer.create |
CustomerCreate |
yok | CustomerRead |
201 |
src/cluster_erp/modules/crm/customers/routes.py:73 |
GET |
/api/v1/crm/customers/{customer_id} |
get_customer |
customer.read |
yok | yok | CustomerRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customers/routes.py:92 |
PUT |
/api/v1/crm/customers/{customer_id} |
update_customer |
customer.update |
CustomerUpdate |
yok | CustomerRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customers/routes.py:113 |
DELETE |
/api/v1/crm/customers/{customer_id} |
delete_customer |
customer.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/customers/routes.py:135 |
POST |
/api/v1/crm/customers/bulk-delete |
bulk_delete_customers |
customer.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/customers/routes.py:147 |
Müşteri parçaları uç noktaları¶
Müşteri parçası kayıtları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/customer-parts/ |
list_customer_parts |
customer_part.read |
yok | customer_id, rfq_id, search, active_only, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_parts/routes.py:47 |
POST |
/api/v1/crm/customer-parts/ |
create_customer_part |
customer_part.create |
CustomerPartCreate |
yok | CustomerPartRead |
201 |
src/cluster_erp/modules/crm/customer_parts/routes.py:88 |
GET |
/api/v1/crm/customer-parts/{customer_part_id} |
get_customer_part |
customer_part.read |
yok | yok | CustomerPartRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_parts/routes.py:106 |
PUT |
/api/v1/crm/customer-parts/{customer_part_id} |
update_customer_part |
customer_part.update |
CustomerPartUpdate |
yok | CustomerPartRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_parts/routes.py:125 |
DELETE |
/api/v1/crm/customer-parts/{customer_part_id} |
delete_customer_part |
customer_part.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/customer_parts/routes.py:145 |
POST |
/api/v1/crm/customer-parts/bulk-delete |
bulk_delete_customer_parts |
customer_part.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_parts/routes.py:157 |
Müşteri parçası revizyonları uç noktaları¶
Bir müşteri parçası altındaki revizyonlar; etkinleştirme ve yerine geçirme ile.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/customer-parts/{customer_part_id}/revisions |
list_revisions |
customer_part_revision.read |
yok | yok | list[CustomerPartRevisionRead] |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:24 |
POST |
/api/v1/crm/customer-parts/{customer_part_id}/revisions |
create_revision |
customer_part_revision.create |
CustomerPartRevisionCreate |
yok | CustomerPartRevisionRead |
201 |
src/cluster_erp/modules/crm/customer_part_revisions/routes.py:39 |
GET |
/api/v1/crm/customer-part-revisions/{revision_id} |
get_revision |
customer_part_revision.read |
yok | yok | CustomerPartRevisionRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:56 |
PUT |
/api/v1/crm/customer-part-revisions/{revision_id} |
update_revision |
customer_part_revision.update |
CustomerPartRevisionUpdate |
yok | CustomerPartRevisionRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:73 |
DELETE |
/api/v1/crm/customer-part-revisions/{revision_id} |
delete_revision |
customer_part_revision.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/customer_part_revisions/routes.py:91 |
POST |
/api/v1/crm/customer-part-revisions/{revision_id}/activate |
activate_revision |
customer_part_revision.activate |
yok | yok | CustomerPartRevisionRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:103 |
POST |
/api/v1/crm/customer-part-revisions/{revision_id}/supersede |
supersede_revision |
customer_part_revision.activate |
yok | yok | CustomerPartRevisionRead |
200 (varsayılan) | src/cluster_erp/modules/crm/customer_part_revisions/routes.py:118 |
Müşteri teklif talepleri uç noktaları¶
Teklif talebi kayıtları, eksiksizlik denetimi, atama, teklif verme, reddetme, süresini doldurma, kazanma, kaybetme, yeniden açma ve teklif talebi paketi.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/rfqs/ |
list_rfqs |
rfq.read |
yok | search, status, customer_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:51 |
POST |
/api/v1/crm/rfqs/ |
create_rfq |
rfq.create |
RfqCreate |
yok | RfqRead |
201 |
src/cluster_erp/modules/crm/rfqs/routes.py:85 |
GET |
/api/v1/crm/rfqs/{rfq_id} |
get_rfq |
rfq.read |
yok | yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:97 |
PUT |
/api/v1/crm/rfqs/{rfq_id} |
update_rfq |
rfq.update |
RfqUpdate |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:111 |
DELETE |
/api/v1/crm/rfqs/{rfq_id} |
delete_rfq |
rfq.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/rfqs/routes.py:126 |
POST |
/api/v1/crm/rfqs/bulk-delete |
bulk_delete_rfqs |
rfq.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:138 |
GET |
/api/v1/crm/rfqs/{rfq_id}/completeness |
get_rfq_completeness |
rfq.read |
yok | yok | dict |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:153 |
POST |
/api/v1/crm/rfqs/{rfq_id}/assign |
assign_rfq |
rfq.assign |
RfqAssign |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:170 |
POST |
/api/v1/crm/rfqs/{rfq_id}/quote |
quote_rfq |
rfq.quote |
RfqTransition |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:188 |
POST |
/api/v1/crm/rfqs/{rfq_id}/decline |
decline_rfq |
rfq.decline |
RfqDecline |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:201 |
POST |
/api/v1/crm/rfqs/{rfq_id}/expire |
expire_rfq |
rfq.expire |
RfqTransition |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:214 |
POST |
/api/v1/crm/rfqs/{rfq_id}/win |
win_rfq |
rfq.win |
RfqTransition |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:227 |
POST |
/api/v1/crm/rfqs/{rfq_id}/lose |
lose_rfq |
rfq.lose |
RfqLose |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:240 |
POST |
/api/v1/crm/rfqs/{rfq_id}/reopen |
reopen_rfq |
rfq.reopen |
RfqTransition |
yok | RfqRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:253 |
GET |
/api/v1/crm/rfqs/{rfq_id}/rfq-package |
get_rfq_package |
rfq_package.read |
yok | yok | RfqPackageRead \| None |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:269 |
POST |
/api/v1/crm/rfqs/{rfq_id}/rfq-package |
create_rfq_package |
rfq_package.create |
RfqPackageCreate |
yok | RfqPackageRead |
201 |
src/cluster_erp/modules/crm/rfqs/routes.py:283 |
PUT |
/api/v1/crm/rfq-packages/{package_id} |
update_rfq_package |
rfq_package.update |
RfqPackageUpdate |
yok | RfqPackageRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfqs/routes.py:300 |
DELETE |
/api/v1/crm/rfq-packages/{package_id} |
delete_rfq_package |
rfq_package.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/rfqs/routes.py:318 |
Teklif talebi kalemleri uç noktaları¶
Bir teklif talebi altındaki kalemler.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/rfqs/{rfq_id}/line-items |
list_line_items |
rfq_line_item.read |
yok | search |
list[RfqLineItemRead] |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_items/routes.py:23 |
POST |
/api/v1/crm/rfqs/{rfq_id}/line-items |
create_line_item |
rfq_line_item.create |
RfqLineItemCreate |
yok | RfqLineItemRead |
201 |
src/cluster_erp/modules/crm/rfq_line_items/routes.py:39 |
GET |
/api/v1/crm/line-items/{line_item_id} |
get_line_item |
rfq_line_item.read |
yok | yok | RfqLineItemRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_items/routes.py:56 |
PUT |
/api/v1/crm/line-items/{line_item_id} |
update_line_item |
rfq_line_item.update |
RfqLineItemUpdate |
yok | RfqLineItemRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_items/routes.py:73 |
DELETE |
/api/v1/crm/line-items/{line_item_id} |
delete_line_item |
rfq_line_item.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/rfq_line_items/routes.py:91 |
POST |
/api/v1/crm/line-items/bulk-delete |
bulk_delete_line_items |
rfq_line_item.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_items/routes.py:103 |
Teklif talebi kalem malzemeleri uç noktaları¶
Bir kalem altındaki malzemeler; ürün ağacından içe aktarma dahil.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/line-items/{line_item_id}/materials |
list_line_materials |
rfq_line_material.read |
yok | yok | list[RfqLineMaterialRead] |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_materials/routes.py:29 |
POST |
/api/v1/crm/line-items/{line_item_id}/materials |
create_line_material |
rfq_line_material.create |
RfqLineMaterialCreate |
yok | RfqLineMaterialRead |
201 |
src/cluster_erp/modules/crm/rfq_line_materials/routes.py:44 |
POST |
/api/v1/crm/line-items/{line_item_id}/materials/from-bom |
import_line_materials_from_bom |
rfq_line_material.create |
yok | yok | dict |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_materials/routes.py:65 |
PUT |
/api/v1/crm/line-materials/{material_id} |
update_line_material |
rfq_line_material.update |
RfqLineMaterialUpdate |
yok | RfqLineMaterialRead |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_materials/routes.py:86 |
DELETE |
/api/v1/crm/line-materials/{material_id} |
delete_line_material |
rfq_line_material.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/rfq_line_materials/routes.py:108 |
POST |
/api/v1/crm/line-materials/bulk-delete |
bulk_delete_line_materials |
rfq_line_material.delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/rfq_line_materials/routes.py:123 |
Gelen kutusu uç noktaları¶
Gelen kutusu iletileri, bir kayda elle eşleme ve istenmeyen olarak işaretleme.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/crm/inbox/ |
list_inbox_messages |
inbox_message.read |
yok | search, match_status, rfq_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:25 |
POST |
/api/v1/crm/inbox/ |
create_inbox_message |
inbox_message.create |
InboxMessageCreate |
yok | InboxMessageRead |
201 |
src/cluster_erp/modules/crm/inbox/routes.py:51 |
GET |
/api/v1/crm/inbox/{message_id} |
get_inbox_message |
inbox_message.read |
yok | yok | InboxMessageRead |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:63 |
PUT |
/api/v1/crm/inbox/{message_id} |
update_inbox_message |
inbox_message.update |
InboxMessageUpdate |
yok | InboxMessageRead |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:77 |
DELETE |
/api/v1/crm/inbox/{message_id} |
delete_inbox_message |
inbox_message.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/crm/inbox/routes.py:92 |
POST |
/api/v1/crm/inbox/bulk-delete |
bulk_delete_inbox_messages |
inbox_message.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:104 |
POST |
/api/v1/crm/inbox/{message_id}/match |
manual_match_message |
inbox_message.match |
InboxManualMatch |
yok | InboxMessageRead |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:119 |
POST |
/api/v1/crm/inbox/{message_id}/spam |
mark_spam |
inbox_message.spam |
yok | yok | InboxMessageRead |
200 (varsayılan) | src/cluster_erp/modules/crm/inbox/routes.py:134 |
Hata kodları¶
Tablo, src/cluster_erp/modules/crm/ altındaki kodun attığı hata kodlarını listeler. Kodlar, AppError(...) çağrıları, src/cluster_erp/core/errors.py içindeki fabrikalar (not_found, conflict, protected, permission_denied, privilege_escalation, check_version) ve HTTPException(...) için yapılan bir sözdizimi ağacı taramasıyla bulundu. 400 durumu AppError varsayılanıdır (src/cluster_erp/core/errors.py:23). Koruma hataları (401, 403), yetkilendirme kodları ve doğrulama hataları (422) her yol için geçerlidir ve Hatalar sayfasında listelenir.
| Kod | HTTP durumu | Atıldığı yer | İlk konum |
|---|---|---|---|
CONCURRENCY_VERSION_CONFLICT |
409 |
rfq_line_materials, rfqs |
src/cluster_erp/modules/crm/rfq_line_materials/services.py:161 |
CRM_RFQ_BOM_MATERIALS_EMPTY |
422 |
rfq_line_materials |
src/cluster_erp/modules/crm/rfq_line_materials/services.py:119 |
CRM_RFQ_LINE_NO_PRODUCT |
422 |
rfq_line_materials |
src/cluster_erp/modules/crm/rfq_line_materials/services.py:108 |
RESOURCE_CONFLICT |
409 |
rfqs |
src/cluster_erp/modules/crm/rfqs/services.py:576 |
RESOURCE_NOT_FOUND |
404 |
customer_part_revisions, customer_parts, customers, inbox, rfq_line_items, rfq_line_materials, rfqs |
src/cluster_erp/modules/crm/customer_part_revisions/routes.py:69 |
RFQ_ARIBA_DUE_DATE_IMMUTABLE |
400 |
rfqs |
src/cluster_erp/modules/crm/rfqs/services.py:225 |
RFQ_DUPLICATE_SUBJECT |
409 |
rfqs |
src/cluster_erp/modules/crm/rfqs/services.py:521 |
RFQ_INCOMPLETE |
409 |
rfqs |
src/cluster_erp/modules/crm/rfqs/services.py:340 |
RFQ_INVALID_STATUS |
409 |
rfqs |
src/cluster_erp/modules/crm/rfqs/services.py:291 |
Yayımlanan olaylar¶
Tablo, src/cluster_erp/modules/crm/ altındaki kodun EventBus.emit çağrısına doğrudan verdiği sözleşme sınıflarını listeler; sözdizimi ağacı taramasıyla bulundu. Önce bir değişkene kurulan olaylar sayılmaz. Sözleşmeler Sözleşmeler başvurusu sayfasında anlatılır.
| Sözleşme | Konum sayısı | İlk konum |
|---|---|---|
CustomerCreated |
1 | src/cluster_erp/modules/crm/customers/services.py:118 |
CustomerUpdated |
1 | src/cluster_erp/modules/crm/customers/services.py:186 |
PartyRoleSet |
2 | src/cluster_erp/modules/crm/customers/services.py:137 |
RfqAssigned |
1 | src/cluster_erp/modules/crm/rfqs/services.py:321 |
RfqDeclined |
1 | src/cluster_erp/modules/crm/rfqs/services.py:434 |
RfqExpired |
1 | src/cluster_erp/modules/crm/rfqs/services.py:451 |
RfqLost |
1 | src/cluster_erp/modules/crm/rfqs/services.py:487 |
RfqPackageCompleted |
1 | src/cluster_erp/modules/crm/rfqs/services.py:612 |
RfqReceived |
1 | src/cluster_erp/modules/crm/rfqs/services.py:192 |
RfqUpdated |
1 | src/cluster_erp/modules/crm/rfqs/services.py:253 |
RfqWon |
1 | src/cluster_erp/modules/crm/rfqs/services.py:468 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.