Ana içeriğe geç

BCM Service — İş Sürekliliği Yönetimi API'si

Base Routes: /api/bcm/admin/{resource}
Service: Taz.SaaS.Bcm.Api

Tüm endpoint'ler Bearer Token (Auth) gerektirir. CQRS pattern ile Commands (Write) ve Queries (Read) ayrımı vardır.


AdminBiaController — Business Impact Analysis (/api/bcm/admin/bia)

1. Get BIA List

HTTP Method: GET
Route: /api/bcm/admin/bia?page={int}&pageSize={int}
Auth: Required

Query Parameters

NameTypeRequiredDefault
pageintNo1
pageSizeintNo20

Response (200 OK) — PaginatedList<BiaListDto>

{
"items": [{
"id": "guid",
"title": "string",
"description": "string | null",
"status": 1,
"assignedToId": "guid | null",
"createdAt": "datetime"
}],
"totalCount": 50,
"totalPages": 3,
"page": 1,
"pageSize": 20
}

2. Get BIA Detail

HTTP Method: GET
Route: /api/bcm/admin/bia/{biaId:guid}
Auth: Required

Response (200 OK) — BiaDetailDto

{
"id": "guid",
"title": "string",
"description": "string | null",
"status": 1,
"assignedToId": "guid | null",
"assignments": [{
"userId": "guid",
"userName": "string",
"type": 1
}],
"entries": [{
"id": "guid",
"briefDescription": "string",
"completeAt": "datetime"
}],
"createdAt": "datetime"
}

3. Create BIA

HTTP Method: POST
Route: /api/bcm/admin/bia
Auth: Required

Request Body

{
"title": "string (required)",
"description": "string | null",
"status": "int | null"
}

4. Update BIA

HTTP Method: PUT
Route: /api/bcm/admin/bia/{biaId:guid}
Auth: Required

Request Body

{
"title": "string | null",
"description": "string | null"
}

5. Change BIA Status

HTTP Method: PUT
Route: /api/bcm/admin/bia/{biaId:guid}/status
Auth: Required

Request Body

{
"newStatus": "int (required, enum BiaStatus)"
}

6. Create New BIA Version

HTTP Method: POST
Route: /api/bcm/admin/bia/{biaId:guid}/new-version
Auth: Required

Response (201 Created) — BiaDetailDto

7. Delete BIA

HTTP Method: DELETE
Route: /api/bcm/admin/bia/{biaId:guid}
Auth: Required

8. Add BIA Assignment

HTTP Method: POST
Route: /api/bcm/admin/bia/{biaId:guid}/assignments
Auth: Required

Request Body

{
"userId": "guid (required)",
"type": "int (required, enum AssigneeType)"
}

9. Remove BIA Assignment

HTTP Method: DELETE
Route: /api/bcm/admin/bia/{biaId:guid}/assignments/{assignmentId:guid}
Auth: Required


AdminBiaEntryController — BIA Entries (/api/bcm/admin/bia)

10. Get Entry List

GET /api/bcm/admin/bia/{biaId:guid}/entries?page={int}&pageSize={int}
Auth: Required

Response (200 OK) — PaginatedList<BiaEntryBriefDto>

{
"items": [{
"id": "guid",
"briefDescription": "string",
"completeAt": "datetime"
}],
"totalCount": 15,
"totalPages": 1,
"page": 1,
"pageSize": 20
}

11. Get Entry Detail

GET /api/bcm/admin/bia/{biaId:guid}/entries/{entryId:guid}
Auth: Required

Response (200 OK) — BiaEntryDetailDto

{
"id": "guid",
"briefDescription": "string",
"completeAt": "datetime",
"digitalAssets": [{ "name": "string", "description": "string | null" }],
"printedAssets": [{ "name": "string", "quantity": "int | null" }],
"communicationSystems": [{ "name": "string", "type": "string" }],
"productionSystems": [{ "name": "string", "type": "string" }],
"equipmentAssets": [{ "name": "string", "quantity": "int | null" }],
"supplierDependencies": [{ "name": "string", "contactName": "string | null" }],
"recoveryStrategies": [{ "category": "string", "description": "string | null" }],
"processDependencies": [{ "id": "guid", "title": "string" }]
}

12. Create BIA Entry

POST /api/bcm/admin/bia/{biaId:guid}/entries
Auth: Required

Request Body

{
"briefDescription": "string (required)",
"completeAt": "datetime | null"
}

13. Update BIA Entry

PUT /api/bcm/admin/bia/{biaId:guid}/entries/{entryId:guid}
Auth: Required

Request Body — UpdateBiaEntryCommand

{
"briefDescription": "string | null",
"completeAt": "datetime | null"
}

14. Delete BIA Entry

DELETE /api/bcm/admin/bia/{biaId:guid}/entries/{entryId:guid}
Auth: Required

15. Mark Entry Complete

PATCH /api/bcm/admin/bia/{biaId:guid}/entries/{entryId:guid}/complete
Auth: Required


Entry Detail Update Endpoints (Sub-resources)

OperationRouteAuth
Update Digital AssetsPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/digital-assetsRequired
Update Printed AssetsPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/printed-assetsRequired
Update Communication SystemsPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/communication-systemsRequired
Update Production SystemsPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/production-systemsRequired
Update Equipment AssetsPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/equipment-assetsRequired
Update Supplier DependenciesPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/supplier-dependenciesRequired
Update Recovery StrategiesPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/recovery-strategiesRequired
Update Process DependenciesPUT /api/bcm/admin/bia/{biaId}/entries/{entryId}/process-dependenciesRequired

Her endpoint'in request body'si ilgili DTO array'ini alır (örn. [DigitalAssetDto], [SupplierDependencyDto]).


AdminRiskController — Risk Management (/api/bcm/admin/risk)

16. Get Risk List

GET /api/bcm/admin/risk?page={int}&pageSize={int}
Auth: Required

Response (200 OK) — PaginatedList<RiskDto>

{
"items": [{
"id": "guid",
"title": "string",
"category": 1,
"level": 3,
"status": 1,
"probabilityScore": 5,
"impactScore": 7,
"createdAt": "datetime"
}],
"totalCount": 25,
"totalPages": 2,
"page": 1,
"pageSize": 20
}

17. Get Risk Detail

GET /api/bcm/admin/risk/{riskId:guid}
Auth: Required

Response (200 OK) — RiskDto

{
"id": "guid",
"title": "string",
"description": "string | null",
"category": 1,
"level": 3,
"status": 1,
"probabilityScore": 5,
"impactScore": 7,
"mitigationActions": [{ "id": "guid", "title": "string", "status": 1 }],
"risks": [{ "id": "guid", "name": "string", "score": 6 }]
}

18. Create Risk

POST /api/bcm/admin/risk
Auth: Required

Request Body — AddRiskCommand

{
"title": "string (required)",
"description": "string | null",
"category": "int (required, enum RiskCategory)",
"level": "int (required, enum RiskLevel)"
}

19. Change Risk Status

PUT /api/bcm/admin/risk/{riskId:guid}/status
Auth: Required

Request Body

{ "newStatus": "int (required)" }

20. Add Risk Assessment

POST /api/bcm/admin/risk/{riskId:guid}/risks
Auth: Required

Request Body — CreateRiskAssessmentCommand

{
"name": "string (required)",
"score": "int (required)"
}

21. Update Risk Assessment

PUT /api/bcm/admin/risk/{riskId:guid}/risks/{assessmentId:guid}
Auth: Required

Request Body — UpdateRiskCommand

{
"name": "string | null",
"score": "int | null"
}

22. Delete Risk Assessment

DELETE /api/bcm/admin/risk/{riskId:guid}/risks/{assessmentId:guid}
Auth: Required

23. Add Mitigation Action

POST /api/bcm/admin/risk/{riskId:guid}/risks/{assessmentId:guid}/actions
Auth: Required

Request Body — AddMitigationActionCommand

{
"title": "string (required)",
"description": "string | null",
"status": "int | null"
}

24. Update Mitigation Action

PUT /api/bcm/admin/risk/{riskId:guid}/risks/{assessmentId:guid}/actions/{actionId:guid}
Auth: Required

Request Body — UpdateMitigationActionCommand

{
"title": "string | null",
"description": "string | null",
"status": "int | null"
}

AdminBcmConfigController — BCM Configuration (/api/bcm/admin/config)

25. Get Impact Thresholds

GET /api/bcm/admin/config/impact-thresholds
Auth: Required

Response (200 OK) — ImpactThresholdDto[]

[
{ "dimension": 1, "score": 5, "description": "string" },
{ "dimension": 2, "score": 7, "description": "string" }
]

26. Update Impact Thresholds

PUT /api/bcm/admin/config/impact-thresholds
Auth: Required

Request Body — UpdateImpactThresholdsCommand

{
"thresholds": [
{ "dimension": 1, "score": 5, "description": "string" }
]
}

AdminDashboardController — BCM Dashboard (/api/bcm/admin/dashboard)

27. Get Dashboard Data

GET /api/bcm/admin/dashboard
Auth: Required

Response (200 OK) — DashboardDto

{
"totalAssessments": 15,
"criticalFunctions": { "identified": 3, "pending": 5 },
"activeRisks": { "highImpact": 1, "mediumImpact": 3, "lowImpact": 2 },
"biaProgressOverview": { "completedEntries": 10, "totalEntries": 20, "percentageComplete": 50 },
"recentActivities": [{
"activityType": 1,
"description": "string",
"createdAt": "datetime"
}],
"upcomingTasks": [{ "title": "string", "dueAt": "datetime" }]
}

Enums

BiaStatus

ValueName
0Draft
1InProgress
2Completed

AssigneeType

ValueName
0User
1Group

RiskCategory

ValueName
0Technology
1Natural Disaster
2Human Error
3Supplier Failure
4Regulatory

RiskLevel

ValueName
0Low
1Medium
2High
3Critical

MitigationActionStatus

ValueName
0Pending
1InProgress
2Completed
3Cancelled