kamau1's picture
fix: add invoice_pricing_rules to project overview response and fix Decimal serialization
a963b0d
Invalid JSON: Unexpected token 'R', "Request UR"... is not valid JSON
Request URL
https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/overview?
Request Method
GET
Status Code
200 OK
Remote Address
54.209.168.62:443
Referrer Policy
strict-origin-when-cross-origin
{
"project": {
"title": "Atomio Fttx",
"description": "Install of testing purposes",
"project_type": "customer_service",
"service_type": "ftth",
"planned_start_date": "2025-11-22",
"planned_end_date": "2026-01-23",
"id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"client_id": "a2455244-d87e-4279-9fca-dc067f06b5c3",
"contractor_id": "1af9fb24-e5bb-40ac-a748-0997580b4c32",
"primary_manager_id": "c5cf92be-4172-4fe2-af5c-f05d83b3a938",
"status": "active",
"actual_start_date": null,
"actual_end_date": null,
"is_closed": false,
"closed_at": null,
"closed_by_user_id": null,
"platform_billing_plan": null,
"is_billable": true,
"activation_requirements": [
{
"type": "text",
"field": "ont_serial",
"label": "ONT",
"options": null,
"required": true
},
{
"type": "text",
"field": "odu_serial",
"label": "ODU",
"options": null,
"required": true
},
{
"type": "text",
"field": "odu_imei_number",
"label": "ODU IMEI Number",
"options": null,
"required": true
},
{
"type": "phone",
"field": "activated_number",
"label": "Activated number",
"options": null,
"pattern": null,
"required": true,
"help_text": null,
"max_length": null,
"min_length": null,
"placeholder": null
}
],
"photo_requirements": [
{
"type": "Speedtest",
"required": true,
"max_photos": 1,
"min_photos": 1,
"description": "speed test collected "
},
{
"type": "Airtel network",
"required": true,
"max_photos": 1,
"min_photos": 1,
"description": "strength metrics"
},
{
"type": "ODU outdoor image",
"required": true,
"max_photos": 1,
"min_photos": 1,
"description": "take a photo of the odu antenna"
},
{
"type": "JCC",
"required": true,
"max_photos": 1,
"min_photos": 1,
"description": "Job Completion Form"
}
],
"budget": {},
"inventory_requirements": {},
"additional_metadata": {
"setup_finalized_at": "2025-11-23T13:47:18.729614",
"setup_finalized_by": "c5cf92be-4172-4fe2-af5c-f05d83b3a938"
},
"is_overdue": false,
"duration_days": 62,
"created_at": "2025-11-20T19:04:04.116380+00:00",
"updated_at": "2025-12-15T11:35:14.705952+00:00",
"client_name": "Tel Operator",
"contractor_name": "Tel Contractor",
"primary_manager_name": "Project Manager"
},
"regions": [
{
"region_name": "Bondo",
"region_code": "41-BON",
"description": "new region",
"country": "Kenya",
"region": "Siaya",
"city": "Bondo",
"address_line1": null,
"address_line2": null,
"maps_link": null,
"latitude": null,
"longitude": null,
"notes": null,
"id": "9f0f1836-5bc7-4fbe-a74c-45916bf7af2b",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"manager_id": "c5cf92be-4172-4fe2-af5c-f05d83b3a938",
"is_active": true,
"hub_contact_persons": [],
"additional_metadata": {},
"created_at": "2025-12-09T09:19:40.163085+00:00",
"updated_at": "2025-12-09T09:19:40.163091+00:00",
"manager_name": "Project Manager"
},
{
"region_name": "Kimbo",
"region_code": "Kimbo1",
"description": "kwa kina joel",
"country": "Kenya",
"region": "Kiambu",
"city": "Kiambu",
"address_line1": "nibs stage",
"address_line2": null,
"maps_link": null,
"latitude": null,
"longitude": null,
"notes": "collect from joel",
"id": "24510a5a-13a6-4334-9055-b4d476aa9e0a",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"manager_id": null,
"is_active": true,
"hub_contact_persons": [
{
"name": "jeol",
"role": "store keeper",
"email": "joel@example.com",
"phone": "0707070707"
}
],
"additional_metadata": {},
"created_at": "2025-11-24T12:38:18.373277+00:00",
"updated_at": "2025-11-24T12:38:18.373280+00:00",
"manager_name": null
},
{
"region_name": "Test",
"region_code": "testa",
"description": "adasfsdf",
"country": "Kenya",
"region": "Nairobi City",
"city": "Nairobi",
"address_line1": "aawfsgvdsv",
"address_line2": "scsdvsdgsf",
"maps_link": "https://maps.app.goo.gl/KSG1zhzfdYfB56st7",
"latitude": -1.272367,
"longitude": 36.813987,
"notes": "afsafwef",
"id": "4cd27765-5720-4cc0-872e-bf0da3cd1898",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"manager_id": null,
"is_active": true,
"hub_contact_persons": [
{
"name": "Alex",
"role": "Inventiry keeper",
"email": "alex@gmail.com",
"phone": "0707622783"
}
],
"additional_metadata": {},
"created_at": "2025-11-23T12:05:22.341374+00:00",
"updated_at": "2025-11-23T12:06:29.172991+00:00",
"manager_name": null
}
],
"cached_at": "2025-12-15T11:35:15.491745Z",
"cache_expires_in_seconds": 43200,
"roles": [
{
"role_name": "New role",
"description": "new role in system",
"compensation_type": "FIXED_RATE",
"id": "351a94cf-1556-4e69-9f54-5c95e846284a",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 100.0,
"rate_period": "DAY",
"per_unit_rate": null,
"commission_percentage": null,
"is_active": true,
"created_at": "2025-11-24T12:52:50.952608+00:00",
"updated_at": "2025-12-12T18:56:44.150780+00:00"
},
{
"role_name": "Poles",
"description": "pole 1",
"compensation_type": "FIXED_RATE",
"id": "7e0f7731-737c-4fb3-8b1a-fc98e54680b4",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 100.0,
"rate_period": "DAY",
"per_unit_rate": null,
"commission_percentage": null,
"is_active": true,
"created_at": "2025-11-24T12:40:32.367092+00:00",
"updated_at": "2025-12-11T11:42:59.411886+00:00"
},
{
"role_name": "Project Manager",
"description": "Manages this whole project",
"compensation_type": "FIXED_RATE",
"id": "ac88b852-ba9c-4b83-9a35-ccaee4d79b1f",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 10000.0,
"rate_period": "WEEK",
"per_unit_rate": null,
"commission_percentage": null,
"is_active": true,
"created_at": "2025-11-23T13:48:30.878830+00:00",
"updated_at": "2025-11-23T13:48:30.878833+00:00"
},
{
"role_name": "Rigger",
"description": "Rigging",
"compensation_type": "FIXED_PLUS_COMMISSION",
"id": "e5b69085-33dd-4126-bb14-9e57a455d7b1",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 100.0,
"rate_period": "WEEK",
"per_unit_rate": null,
"commission_percentage": 20.0,
"is_active": true,
"created_at": "2025-11-24T12:54:59.913112+00:00",
"updated_at": "2025-12-12T18:57:15.904574+00:00"
},
{
"role_name": "Rihanna",
"description": "Work work work",
"compensation_type": "FIXED_RATE",
"id": "7c88af42-df6e-4933-bf4c-026ee051e313",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 1000.0,
"rate_period": "WEEK",
"per_unit_rate": null,
"commission_percentage": null,
"is_active": true,
"created_at": "2025-11-23T12:38:50.921751+00:00",
"updated_at": "2025-11-23T12:38:50.921755+00:00"
},
{
"role_name": "role",
"description": "role of the workser",
"compensation_type": "FIXED_RATE",
"id": "0ab58206-86b4-4a98-972c-579a440bbe34",
"project_id": "0ade6bd1-e492-4e25-b681-59f42058d29a",
"base_rate": 1000.0,
"rate_period": "WEEK",
"per_unit_rate": null,
"commission_percentage": null,
"is_active": true,
"created_at": "2025-11-24T12:50:39.153498+00:00",
"updated_at": "2025-11-24T12:50:39.153501+00:00"
}
],
"subcontractors": [],
"team_summary": {
"total_members": 3,
"by_role": {
"contractor_admin": 1,
"field_agent": 1,
"project_manager": 1
},
"by_region": {
"Test": 2,
"Project-wide": 1
}
},
"my_involvement": null
}