{"openapi":"3.1.0","info":{"title":"Signal Telecom Suite","description":"Modular OSS/BSS platform for telecom operators, ISPs & MVNOs","version":"0.1.0"},"paths":{"/api/v1/customers/":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Create Customer","operationId":"create_customer_api_v1_customers__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ID — Identity & CRM"],"summary":"List Customers","description":"List customers with filtering, search, and pagination.","operationId":"list_customers_api_v1_customers__get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"customer_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Type"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country"}},{"name":"segment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Customers Api V1 Customers  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/bulk":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Bulk Import Customers","description":"Create multiple customers in batch. Returns summary with created/failed counts.","operationId":"bulk_import_customers_api_v1_customers_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerCreate"},"title":"Customers"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCustomerImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}":{"get":{"tags":["SIG-ID — Identity & CRM"],"summary":"Get Customer","operationId":"get_customer_api_v1_customers__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-ID — Identity & CRM"],"summary":"Update Customer","operationId":"update_customer_api_v1_customers__customer_id__patch","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-ID — Identity & CRM"],"summary":"Delete Customer","description":"Delete a customer and all associated data (KYC docs, contacts, etc.).","operationId":"delete_customer_api_v1_customers__customer_id__delete","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/status":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Change Status","description":"Transition customer lifecycle status with validation.","operationId":"change_status_api_v1_customers__customer_id__status_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerStatusChange"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__identity__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/contacts":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Add Contact","operationId":"add_contact_api_v1_customers__customer_id__contacts_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ID — Identity & CRM"],"summary":"List Contacts","operationId":"list_contacts_api_v1_customers__customer_id__contacts_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactResponse"},"title":"Response List Contacts Api V1 Customers  Customer Id  Contacts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/kyc":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Add Kyc Document","operationId":"add_kyc_document_api_v1_customers__customer_id__kyc_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCDocumentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCDocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ID — Identity & CRM"],"summary":"List Kyc Documents","operationId":"list_kyc_documents_api_v1_customers__customer_id__kyc_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KYCDocumentResponse"},"title":"Response List Kyc Documents Api V1 Customers  Customer Id  Kyc Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/kyc/{document_id}/verify":{"post":{"tags":["SIG-ID — Identity & CRM"],"summary":"Verify Kyc Document","operationId":"verify_kyc_document_api_v1_customers__customer_id__kyc__document_id__verify_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCVerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCDocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/kyc/compliance":{"get":{"tags":["SIG-ID — Identity & CRM"],"summary":"Check Kyc Compliance","description":"Check if customer meets KYC requirements for their country and type.","operationId":"check_kyc_compliance_api_v1_customers__customer_id__kyc_compliance_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"service_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(all|broadband|mobile|sim_only)$","default":"all","title":"Service Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCComplianceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kyc-policies":{"post":{"tags":["SIG-ID — KYC Policies"],"summary":"Create Kyc Policy","description":"Create a KYC policy for a country + customer type.","operationId":"create_kyc_policy_api_v1_kyc_policies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCPolicyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KYCPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ID — KYC Policies"],"summary":"List Kyc Policies","description":"List all KYC policies for this tenant.","operationId":"list_kyc_policies_api_v1_kyc_policies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KYCPolicyResponse"},"title":"Response List Kyc Policies Api V1 Kyc Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/plans":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Create Plan","description":"Create a new service plan in draft status.","operationId":"create_plan_api_v1_provisioning_plans_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-PROV — Provisioning"],"summary":"List Plans","description":"List service plans with filtering, search, and pagination.","operationId":"list_plans_api_v1_provisioning_plans_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"plan_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Type"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Plans Api V1 Provisioning Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/plans/{plan_id}":{"get":{"tags":["SIG-PROV — Provisioning"],"summary":"Get Plan","description":"Get a single service plan by ID.","operationId":"get_plan_api_v1_provisioning_plans__plan_id__get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-PROV — Provisioning"],"summary":"Update Plan","description":"Update a service plan (draft or active only).","operationId":"update_plan_api_v1_provisioning_plans__plan_id__patch","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/plans/{plan_id}/activate":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Activate Plan","description":"Transition plan from draft to active.","operationId":"activate_plan_api_v1_provisioning_plans__plan_id__activate_post","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/plans/{plan_id}/deprecate":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Deprecate Plan","description":"Transition plan from active to deprecated.","operationId":"deprecate_plan_api_v1_provisioning_plans__plan_id__deprecate_post","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/plans/{plan_id}/archive":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Archive Plan","description":"Transition plan from deprecated to archived.","operationId":"archive_plan_api_v1_provisioning_plans__plan_id__archive_post","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Create Subscription","description":"Create a new subscription (pending status). Plan must be active.","operationId":"create_subscription_api_v1_provisioning_subscriptions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__provisioning__schemas__SubscriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-PROV — Provisioning"],"summary":"List Subscriptions","description":"List subscriptions with filtering and pagination.","operationId":"list_subscriptions_api_v1_provisioning_subscriptions_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Subscriptions Api V1 Provisioning Subscriptions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}":{"get":{"tags":["SIG-PROV — Provisioning"],"summary":"Get Subscription","description":"Get a single subscription by ID.","operationId":"get_subscription_api_v1_provisioning_subscriptions__subscription_id__get","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/activate":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Activate Subscription","description":"Activate a pending or suspended subscription. Starts billing period.","operationId":"activate_subscription_api_v1_provisioning_subscriptions__subscription_id__activate_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionStatusChange"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/suspend":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Suspend Subscription","description":"Suspend an active subscription.","operationId":"suspend_subscription_api_v1_provisioning_subscriptions__subscription_id__suspend_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionStatusChange"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/terminate":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Terminate Subscription","description":"Terminate an active or suspended subscription. Irreversible.","operationId":"terminate_subscription_api_v1_provisioning_subscriptions__subscription_id__terminate_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionStatusChange"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/change-plan":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Change Plan","description":"Upgrade or downgrade a subscription to a different plan.\nTerminates the old subscription and creates a new one.","operationId":"change_plan_api_v1_provisioning_subscriptions__subscription_id__change_plan_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/renew":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Renew Subscription","description":"Advance billing period for an active, auto-renew subscription.","operationId":"renew_subscription_api_v1_provisioning_subscriptions__subscription_id__renew_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/subscriptions/{subscription_id}/devices":{"post":{"tags":["SIG-PROV — Provisioning"],"summary":"Add Subscription Device","description":"Attach a device (vessel, aircraft, terminal, sensor) to a subscription.","operationId":"add_subscription_device_api_v1_provisioning_subscriptions__subscription_id__devices_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionDeviceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionDeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-PROV — Provisioning"],"summary":"List Subscription Devices","description":"List all devices attached to a subscription.","operationId":"list_subscription_devices_api_v1_provisioning_subscriptions__subscription_id__devices_get","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionDeviceResponse"},"title":"Response List Subscription Devices Api V1 Provisioning Subscriptions  Subscription Id  Devices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/provisioning/devices/{device_id}":{"patch":{"tags":["SIG-PROV — Provisioning"],"summary":"Update Subscription Device","description":"Update a device's fields.","operationId":"update_subscription_device_api_v1_provisioning_devices__device_id__patch","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionDeviceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionDeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-PROV — Provisioning"],"summary":"Delete Subscription Device","description":"Remove a device from a subscription (hard delete).","operationId":"delete_subscription_device_api_v1_provisioning_devices__device_id__delete","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Create Invoice","description":"Create a new invoice.\n\nExternal orchestration systems identify themselves via the X-Source\nheader; the value is stored on the invoice so Reports can show\nprovenance. X-Source-Ref carries an optional opaque correlation id\nfrom the source system's own workflow.\n\n**Idempotent when X-Source-Ref is set.** A duplicate POST with the same\n`(source, source_ref, customer_id, period_start)` returns the existing\ninvoice with HTTP 200 instead of creating a duplicate. Lets external\nworkflows retry mid-run crashes without tracking per-customer success\nin their own state. The new invoice case returns HTTP 201.","operationId":"create_invoice_api_v1_billing_invoices_post","parameters":[{"name":"x-source","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Source"}},{"name":"x-source-ref","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Source-Ref"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"}}}},"responses":{"201":{"description":"New invoice created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceDetailResponse"}}}},"200":{"description":"Idempotent return-of-existing. `X-Source-Ref` matched an invoice already written for `(source, source_ref, customer_id, period_start)`; the existing row is returned unchanged."},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:issue"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}},"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Invoices","operationId":"list_invoices_api_v1_billing_invoices_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"sigtel | eikam | manual | partner system code","title":"Source"},"description":"sigtel | eikam | manual | partner system code"},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"title":"Currency"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}":{"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Get Invoice","operationId":"get_invoice_api_v1_billing_invoices__invoice_id__get","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/pdf":{"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Download Invoice Pdf","description":"Generate and download a PDF invoice.","operationId":"download_invoice_pdf_api_v1_billing_invoices__invoice_id__pdf_get","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tenant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/lines":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Add Line Item","operationId":"add_line_item_api_v1_billing_invoices__invoice_id__lines_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceLineCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/lines/{line_id}":{"delete":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Remove Line Item","operationId":"remove_line_item_api_v1_billing_invoices__invoice_id__lines__line_id__delete","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"line_id","in":"path","required":true,"schema":{"type":"integer","title":"Line Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/issue":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Issue Invoice","operationId":"issue_invoice_api_v1_billing_invoices__invoice_id__issue_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueInvoiceRequest","default":{"payment_terms_days":30}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/pay":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Record Payment","operationId":"record_payment_api_v1_billing_invoices__invoice_id__pay_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPaymentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoices/{invoice_id}/void":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Void Invoice","operationId":"void_invoice_api_v1_billing_invoices__invoice_id__void_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoidInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/credit-notes":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Create Credit Note","operationId":"create_credit_note_api_v1_billing_credit_notes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditNoteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/run-billing-cycle":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Run Billing Cycle","description":"Generate invoices for all active subscriptions whose billing period has ended.","operationId":"run_billing_cycle_api_v1_billing_run_billing_cycle_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Billing Cycle Api V1 Billing Run Billing Cycle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/cycles":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Create Billing Cycle","operationId":"create_billing_cycle_api_v1_billing_cycles_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Billing Cycles","operationId":"list_billing_cycles_api_v1_billing_cycles_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/cycles/{cycle_id}":{"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Get Billing Cycle","operationId":"get_billing_cycle_api_v1_billing_cycles__cycle_id__get","parameters":[{"name":"cycle_id","in":"path","required":true,"schema":{"type":"integer","title":"Cycle Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Create Partner","description":"Create a partner/reseller revenue share agreement.","operationId":"create_partner_api_v1_billing_partners_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__billing__router__PartnerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__billing__router__PartnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Partners","description":"List all partner agreements.","operationId":"list_partners_api_v1_billing_partners_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/sigcore__bss__billing__router__PartnerResponse"},"title":"Response List Partners Api V1 Billing Partners Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners/assign-customer":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Assign Customer To Partner","description":"Assign a customer to a partner for revenue share tracking.","operationId":"assign_customer_to_partner_api_v1_billing_partners_assign_customer_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignCustomerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Assign Customer To Partner Api V1 Billing Partners Assign Customer Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners/{partner_id}/calculate":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Calculate Settlement","description":"Calculate revenue share for a partner over a billing period.","operationId":"calculate_settlement_api_v1_billing_partners__partner_id__calculate_post","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"period_start","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"Period Start"}},{"name":"period_end","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"Period End"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Calculate Settlement Api V1 Billing Partners  Partner Id  Calculate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners/{partner_id}/settlements":{"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Settlements","description":"List all settlements for a partner.","operationId":"list_settlements_api_v1_billing_partners__partner_id__settlements_get","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SettlementResponse"},"title":"Response List Settlements Api V1 Billing Partners  Partner Id  Settlements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners/settlements/{settlement_id}/approve":{"patch":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Approve Settlement","description":"Approve a calculated settlement for payout.","operationId":"approve_settlement_api_v1_billing_partners_settlements__settlement_id__approve_patch","parameters":[{"name":"settlement_id","in":"path","required":true,"schema":{"type":"integer","title":"Settlement Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Approve Settlement Api V1 Billing Partners Settlements  Settlement Id  Approve Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/partners/settlements/{settlement_id}/pay":{"patch":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Mark Settlement Paid","description":"Mark a settlement as paid with payout reference.","operationId":"mark_settlement_paid_api_v1_billing_partners_settlements__settlement_id__pay_patch","parameters":[{"name":"settlement_id","in":"path","required":true,"schema":{"type":"integer","title":"Settlement Id"}},{"name":"payout_reference","in":"query","required":true,"schema":{"type":"string","title":"Payout Reference"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mark Settlement Paid Api V1 Billing Partners Settlements  Settlement Id  Pay Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoicing/trigger":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Trigger Invoicing","description":"Publish invoicing.requested events for the customers in scope.\n\nConsumers (external workflow like Eikam, or Sigtel's own rating engine\nfor internal-mode tenants) pick up the events and compute the invoices.\nThis endpoint does not compute anything itself — it only emits.\n\nBehaviour by tenant mode:\n  external — invoicing.requested fans out, one per customer in scope.\n  internal — invoicing.requested fans out (still useful as an audit\n             trail), AND the rating engine is invoked synchronously for\n             each customer in scope so the operator gets immediate\n             feedback without waiting for a scheduler tick.","operationId":"trigger_invoicing_api_v1_billing_invoicing_trigger_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_TriggerInvoicingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Invoicing Api V1 Billing Invoicing Trigger Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoicing/runs":{"post":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Create Run","description":"Register an external-orchestrator-initiated invoicing run.\n\nEikam calls this *before* writing invoices, so subsequent invoice POSTs\nthat carry X-Source-Ref=<external_run_id> roll up under one run in\nReports. If Eikam writes invoices first without registering a run, the\ninvoices still land — they just won't be grouped.","operationId":"create_run_api_v1_billing_invoicing_runs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_EikamInitRunRequest"}}}},"responses":{"201":{"description":"New invoicing run registered.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Run Api V1 Billing Invoicing Runs Post"}}}},"200":{"description":"Idempotent — `external_run_id` already registered. The existing run is returned with `deduplicated: true`."},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:read"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}},"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Runs","description":"List invoicing runs for the calling tenant — newest first.","operationId":"list_runs_api_v1_billing_invoicing_runs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs Api V1 Billing Invoicing Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/invoicing/runs/{run_id}":{"patch":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"Update Run Status","description":"Set a run's terminal status. Used by external orchestrators (Eikam,\npartner ERPs) to report 'I'm done' or 'I failed at customer 7 of 12'.\n\nSigtel also auto-completes a run when its invoice count reaches the\ncustomers_in_scope target, so calling this PATCH is optional for the\nhappy path — but it's how Eikam reports a failure that didn't produce\nany partial invoices.","operationId":"update_run_status_api_v1_billing_invoicing_runs__run_id__patch","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_RunStatusUpdate"}}}},"responses":{"200":{"description":"Status updated.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Run Status Api V1 Billing Invoicing Runs  Run Id  Patch"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:read"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/billing/invoicing/eligible-customers":{"get":{"tags":["SIG-BILL — Billing & Invoicing"],"summary":"List Eligible Customers","description":"List customers eligible for invoicing in the given period.\n\nReturns the full subscription + rate-plan context an external\norchestrator needs to compute invoices. Mirrors the\ncustomer_subscription_billing_view exposed over HTTP so workflows\nwithout Postgres access (Eikam HTTP-only mode, serverless, partner\nERPs) can self-serve.\n\nperiod_start/end aren't enforced today — we return every active\nsubscription. They're plumbed through so future logic (mid-cycle\nupgrades, prorated billing) can filter on the period.","operationId":"list_eligible_customers_api_v1_billing_invoicing_eligible_customers_get","parameters":[{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"List of customers eligible for invoicing in the given period. In the rare case where the tenant's `customer_subscription_billing_view` is missing (a skipped migration), the response is `{items: [], total: 0, error: '...'}` — still HTTP 200; surface the `error` field to ops.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Eligible Customers Api V1 Billing Invoicing Eligible Customers Get"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: customers:read"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/rate-plans":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Create Rate Plan","description":"Create a new rate plan.","operationId":"create_rate_plan_api_v1_rating_rate_plans_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatePlanCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatePlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"List Rate Plans","description":"List rate plans for the tenant.","operationId":"list_rate_plans_api_v1_rating_rate_plans_get","parameters":[{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by service plan ID","title":"Plan Id"},"description":"Filter by service plan ID"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only active rate plans","default":false,"title":"Active Only"},"description":"Only active rate plans"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RatePlanOut"},"title":"Response List Rate Plans Api V1 Rating Rate Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/rate-plans/{rate_plan_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Rate Plan","description":"Get a single rate plan by ID.","operationId":"get_rate_plan_api_v1_rating_rate_plans__rate_plan_id__get","parameters":[{"name":"rate_plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Rate Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatePlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Update Rate Plan","description":"Update an existing rate plan.","operationId":"update_rate_plan_api_v1_rating_rate_plans__rate_plan_id__patch","parameters":[{"name":"rate_plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Rate Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatePlanUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatePlanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Delete Rate Plan","description":"Delete a rate plan. Cascades to its rated_charges only if status='draft'.\n\nIdempotent: 204 if it didn't exist.","operationId":"delete_rate_plan_api_v1_rating_rate_plans__rate_plan_id__delete","parameters":[{"name":"rate_plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Rate Plan Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/usage":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Record Usage","description":"Record a usage event (from RADIUS, CDR, API, manual, or NETCONF).","operationId":"record_usage_api_v1_rating_usage_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageRecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageRecordOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/simulate-usage":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Simulate Usage","description":"Simulate a RADIUS accounting session — creates a usage record.\n\nAlias for POST /usage, kept for backward compatibility.","operationId":"simulate_usage_api_v1_rating_simulate_usage_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageRecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageRecordOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/rate":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Rate Customer Usage","description":"Rate all unrated usage records for a customer.\n\nFinds the active subscription, looks up rate plans, and produces\nRatedCharge entries for each unrated UsageRecord.","operationId":"rate_customer_usage_api_v1_rating_rate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateCustomerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingResultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/generate-invoice":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Generate Invoice From Charges","description":"Generate an invoice from unbilled rated charges.\n\nRatedCharge (unbilled) -> Invoice + InvoiceLines -> RatedCharge (billed)","operationId":"generate_invoice_from_charges_api_v1_rating_generate_invoice_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceFromChargesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/reset-billing":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Reset Customer Billing","description":"Wipe a customer's rated charges + invoices for a fresh replay.\n\nOperational utility for re-running a billing month from scratch.\nAlways: deletes all rated_charges and invoice_lines/invoices that hung\noff them, marks usage records as unrated.\nWith drop_usage=true: also deletes the customer's usage records (use for\ndeterministic replay scripts that re-load usage from a known input).","operationId":"reset_customer_billing_api_v1_rating_reset_billing_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetBillingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Customer Billing Api V1 Rating Reset Billing Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/manual-charge":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Post Manual Charge","description":"Inject a one-time rated charge for a customer.\n\nCatalog-driven (preferred):  pass service_code; we look up name/unit/price.\nFree-form (fallback):        pass description+amount.\n\nThe charge is written directly to rated_charges with status='unbilled'\nand gets picked up by the next /generate-invoice call alongside engine-\nproduced charges. Currency is forced to the tenant's canonical currency.","operationId":"post_manual_charge_api_v1_rating_manual_charge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualChargeRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatedChargeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/entitlements/apply":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Apply Entitlements","description":"Materialize the customer's active entitlements as unbilled rated_charges\nfor the given period. Called by the seed, by the rating engine, and by\nexternal workflows that want Sigtel to assemble pro-services lines for\na customer before invoicing.\n\nIdempotent — entitlements already materialized for this period are\nskipped.","operationId":"apply_entitlements_api_v1_rating_entitlements_apply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ApplyEntitlementsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Apply Entitlements Api V1 Rating Entitlements Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/chain/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Charging Chain","description":"View the full charging chain for a customer.\n\nShows: UsageRecords -> RatedCharges -> Invoices","operationId":"get_charging_chain_api_v1_rating_chain__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargingChainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/usage-summary/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Usage Summary","description":"Get aggregated usage statistics for a customer.","operationId":"get_usage_summary_api_v1_rating_usage_summary__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/pipeline/run":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Run Pipeline","description":"Run the full mediation -> rating -> charging -> billing pipeline.\n\nProcesses all unrated CDRs and SMS records for a customer:\n  - Checks allowance counters (voice, SMS, data)\n  - Consumes from allowance or calculates overage charges\n  - Creates charged items in SIG-CHG\n  - Applies flat monthly plan fee (once per period)\n  - Returns summary with counts and totals","operationId":"run_pipeline_api_v1_rating_pipeline_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateCustomerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Pipeline Api V1 Rating Pipeline Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/pipeline/generate-invoice":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Pipeline Generate Invoice","description":"Generate an invoice from charged items created by the pipeline.\n\nQueries ALL charged_items for the customer in the billing period,\ngroups overage charges by type, and creates detailed invoice lines.","operationId":"pipeline_generate_invoice_api_v1_rating_pipeline_generate_invoice_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateInvoiceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pipeline Generate Invoice Api V1 Rating Pipeline Generate Invoice Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/threshold/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Check Customer Threshold","description":"Check if a customer has exceeded plan thresholds.\n\nUsed by RADIUS authorize callback and PCRF to decide whether to\nallow or block service. Returns remaining allowances and exceeded flags.","operationId":"check_customer_threshold_api_v1_rating_threshold__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Check Customer Threshold Api V1 Rating Threshold  Customer Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/cdr":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Ingest Cdr","description":"Ingest a single Call Detail Record.","operationId":"ingest_cdr_api_v1_rating_cdr_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__CdrResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/cdr/bulk":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Ingest Cdr Bulk","description":"Ingest a batch of CDRs.","operationId":"ingest_cdr_bulk_api_v1_rating_cdr_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrBulkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Cdr Bulk Api V1 Rating Cdr Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/cdr/history/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Cdr History","description":"Call history for a customer, paginated, ordered by call_start desc.","operationId":"get_cdr_history_api_v1_rating_cdr_history__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__CdrListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/cdr/stats/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Cdr Stats","description":"Call statistics summary for a customer.","operationId":"get_cdr_stats_api_v1_rating_cdr_stats__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallStatsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/sms":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Ingest Sms","description":"Ingest a single SMS record.","operationId":"ingest_sms_api_v1_rating_sms_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsRecordCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__SmsRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/sms/bulk":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Ingest Sms Bulk","description":"Ingest a batch of SMS records.","operationId":"ingest_sms_bulk_api_v1_rating_sms_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsBulkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Sms Bulk Api V1 Rating Sms Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/sms/history/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Sms History","description":"SMS history for a customer, paginated, ordered by timestamp desc.","operationId":"get_sms_history_api_v1_rating_sms_history__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__SmsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/sms/stats/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Sms Stats","description":"SMS statistics summary for a customer.","operationId":"get_sms_stats_api_v1_rating_sms_stats__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsStatsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/simulator/generate":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Generate Usage","description":"Bulk-generate realistic usage, CDR, and SMS records for demo purposes.\n\nSimulates what RADIUS, CDR feeds, SMSC, and NETCONF polling would produce.\nGenerates:\n  - UsageRecord entries for data sessions (existing behavior)\n  - CallDetailRecord entries with realistic Rwandan phone numbers\n  - SmsRecord entries with realistic delivery patterns","operationId":"generate_usage_api_v1_rating_simulator_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Usage Api V1 Rating Simulator Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/dry-run":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Dry Run","description":"Run the rating engine against a synthetic usage payload and return the\nresulting line-by-line invoice preview. Writes nothing to the database.\n\nThe Playground UI calls this on each Recompute. Auth: tenant context is\nenough in sandbox mode; production requires `rating:dry-run` scope.","operationId":"dry_run_api_v1_rating_dry_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_DryRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dry Run Api V1 Rating Dry Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/starter-overrides/{customer_id}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Starter Overrides","description":"Return the usage payload that reproduces this customer's last rated\nmonth. The Playground uses this to prefill each demo customer with its\nmaster-data baseline. Returns zeros for any dimension the customer\ndidn't use.","operationId":"get_starter_overrides_api_v1_rating_starter_overrides__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Starter Overrides Api V1 Rating Starter Overrides  Customer Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/scenarios":{"post":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Create Scenario","description":"Save a named scenario. Computes its total once at save time (cached for\nthe list view) and mints a `share_token` for URL-based sharing.","operationId":"create_scenario_api_v1_rating_scenarios_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ScenarioCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Scenario Api V1 Rating Scenarios Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"List Scenarios","description":"List this tenant's active scenarios.","operationId":"list_scenarios_api_v1_rating_scenarios_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Scenarios Api V1 Rating Scenarios Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rating/scenarios/{share_token}":{"get":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Get Scenario By Token","description":"Load a saved scenario by its share token + recompute the preview live\n(so any rate-plan edits made since save are reflected).\n\nTenant scoping still applies — the share token alone narrows to one row,\nand the tenant header narrows to one tenant. A public token can be\nforwarded to anyone, but they need at least a sandbox `X-Tenant-ID` to\nfollow the link.","operationId":"get_scenario_by_token_api_v1_rating_scenarios__share_token__get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Scenario By Token Api V1 Rating Scenarios  Share Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-RATE — Rating & Charging"],"summary":"Soft Delete Scenario","description":"Soft-delete a scenario. The row stays for audit; `is_active` flips to\nfalse so it no longer appears in the list or resolves by token.","operationId":"soft_delete_scenario_api_v1_rating_scenarios__share_token__delete","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/ingest/cdr":{"post":{"tags":["SIG-MED — Mediation"],"summary":"Ingest Cdr","description":"Ingest a single Call Detail Record.\n\nCreates the CDR record and normalizes it to a ChargeableItem\nwith status=pending for downstream rating.","operationId":"ingest_cdr_api_v1_mediation_ingest_cdr_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrIngest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__CdrResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/ingest/cdr/bulk":{"post":{"tags":["SIG-MED — Mediation"],"summary":"Ingest Cdr Bulk","description":"Ingest a batch of CDRs.\n\nEach CDR is normalized to a ChargeableItem. Returns count of\nsuccessfully ingested records.","operationId":"ingest_cdr_bulk_api_v1_mediation_ingest_cdr_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CdrBulkIngest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Cdr Bulk Api V1 Mediation Ingest Cdr Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/ingest/sms":{"post":{"tags":["SIG-MED — Mediation"],"summary":"Ingest Sms","description":"Ingest a single SMS record.\n\nCreates the SMS record and normalizes it to a ChargeableItem\nwith status=pending for downstream rating.","operationId":"ingest_sms_api_v1_mediation_ingest_sms_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsIngest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__SmsRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/ingest/sms/bulk":{"post":{"tags":["SIG-MED — Mediation"],"summary":"Ingest Sms Bulk","description":"Ingest a batch of SMS records.","operationId":"ingest_sms_bulk_api_v1_mediation_ingest_sms_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsBulkIngest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Sms Bulk Api V1 Mediation Ingest Sms Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/ingest/data-session":{"post":{"tags":["SIG-MED — Mediation"],"summary":"Ingest Data Session","description":"Ingest a single data session.\n\nCreates the data session record and normalizes it to a ChargeableItem\nwith status=pending for downstream rating.","operationId":"ingest_data_session_api_v1_mediation_ingest_data_session_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataSessionIngest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/chargeable-items/stats":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Chargeable Items Stats","description":"Get mediation statistics: counts of jobs and items by status and event type.","operationId":"get_chargeable_items_stats_api_v1_mediation_chargeable_items_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediationStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/chargeable-items/{item_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Chargeable Item","description":"Get a single chargeable item by ID.","operationId":"get_chargeable_item_api_v1_mediation_chargeable_items__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeableItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/chargeable-items":{"get":{"tags":["SIG-MED — Mediation"],"summary":"List Chargeable Items","description":"List chargeable items with filters.\n\nSupports filtering by status, event_type, customer_id, and date range.","operationId":"list_chargeable_items_api_v1_mediation_chargeable_items_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by event type","title":"Event Type"},"description":"Filter by event type"},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by customer","title":"Customer Id"},"description":"Filter by customer"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start date filter","title":"Date From"},"description":"Start date filter"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End date filter","title":"Date To"},"description":"End date filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeableItemListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/jobs":{"get":{"tags":["SIG-MED — Mediation"],"summary":"List Jobs","description":"List mediation jobs, optionally filtered by status.","operationId":"list_jobs_api_v1_mediation_jobs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job status","title":"Status"},"description":"Filter by job status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MediationJobResponse"},"title":"Response List Jobs Api V1 Mediation Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/jobs/{job_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Job","description":"Get a single mediation job by ID with record counts.","operationId":"get_job_api_v1_mediation_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediationJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/cdr/history/{customer_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Cdr History","description":"Call history for a customer, paginated, ordered by call_start desc.","operationId":"get_cdr_history_api_v1_mediation_cdr_history__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__CdrListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/sms/history/{customer_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Sms History","description":"SMS history for a customer, paginated, ordered by timestamp desc.","operationId":"get_sms_history_api_v1_mediation_sms_history__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__SmsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/cdr/stats/{customer_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Cdr Stats","description":"Call statistics summary for a customer.","operationId":"get_cdr_stats_api_v1_mediation_cdr_stats__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallStatsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mediation/sms/stats/{customer_id}":{"get":{"tags":["SIG-MED — Mediation"],"summary":"Get Sms Stats","description":"SMS statistics summary for a customer.","operationId":"get_sms_stats_api_v1_mediation_sms_stats__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmsStatsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts":{"post":{"tags":["SIG-CHG — Charging"],"summary":"Create Account","description":"Create a new subscriber charging account.","operationId":"create_account_api_v1_charging_accounts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriberAccountCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriberAccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts/{customer_id}":{"get":{"tags":["SIG-CHG — Charging"],"summary":"Get Account","description":"Get subscriber account with balance summary.","operationId":"get_account_api_v1_charging_accounts__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriberAccountWithBalances"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts/{customer_id}/balances":{"get":{"tags":["SIG-CHG — Charging"],"summary":"Get Balances","description":"Get all balance buckets with remaining values.","operationId":"get_balances_api_v1_charging_accounts__customer_id__balances_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts/{customer_id}/topup":{"post":{"tags":["SIG-CHG — Charging"],"summary":"Topup Balance","description":"Add monetary balance to a subscriber account (topup).","operationId":"topup_balance_api_v1_charging_accounts__customer_id__topup_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceBucketOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts/{customer_id}/allowances":{"get":{"tags":["SIG-CHG — Charging"],"summary":"Get Allowances","description":"Get allowance counters for a subscriber.","operationId":"get_allowances_api_v1_charging_accounts__customer_id__allowances_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AllowanceCounterOut"},"title":"Response Get Allowances Api V1 Charging Accounts  Customer Id  Allowances Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/charge":{"post":{"tags":["SIG-CHG — Charging"],"summary":"Charge Single","description":"Charge a single chargeable item to a subscriber account.","operationId":"charge_single_api_v1_charging_charge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargedItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/charge/batch":{"post":{"tags":["SIG-CHG — Charging"],"summary":"Charge Batch","description":"Charge multiple items in a batch.","operationId":"charge_batch_api_v1_charging_charge_batch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeBatchRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChargedItemOut"},"title":"Response Charge Batch Api V1 Charging Charge Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/charged-items":{"get":{"tags":["SIG-CHG — Charging"],"summary":"List Charged Items","description":"List charged items with optional filters.","operationId":"list_charged_items_api_v1_charging_charged_items_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargedItemListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/billable-items":{"get":{"tags":["SIG-CHG — Charging"],"summary":"List Billable Items","description":"List billable items ready for invoicing.","operationId":"list_billable_items_api_v1_charging_billable_items_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillableItemListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/billable-items/export":{"post":{"tags":["SIG-CHG — Charging"],"summary":"Export Billable Items","description":"Generate billable items from charged items for a billing period.","operationId":"export_billable_items_api_v1_charging_billable_items_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportBillableItemsRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BillableItemOut"},"title":"Response Export Billable Items Api V1 Charging Billable Items Export Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/charging/accounts/{customer_id}/transactions":{"get":{"tags":["SIG-CHG — Charging"],"summary":"Get Transactions","description":"Get charging transaction history for a customer.","operationId":"get_transactions_api_v1_charging_accounts__customer_id__transactions_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bss__charging__schemas__TransactionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/methods":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Add Payment Method","operationId":"add_payment_method_api_v1_payments_methods_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/methods/{customer_id}":{"get":{"tags":["SIG-PAY — Payments"],"summary":"List Payment Methods","operationId":"list_payment_methods_api_v1_payments_methods__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethodResponse"},"title":"Response List Payment Methods Api V1 Payments Methods  Customer Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/methods/{customer_id}/{method_id}/default":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Set Default Method","operationId":"set_default_method_api_v1_payments_methods__customer_id___method_id__default_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"method_id","in":"path","required":true,"schema":{"type":"integer","title":"Method Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/methods/{method_id}":{"delete":{"tags":["SIG-PAY — Payments"],"summary":"Deactivate Payment Method","operationId":"deactivate_payment_method_api_v1_payments_methods__method_id__delete","parameters":[{"name":"method_id","in":"path","required":true,"schema":{"type":"integer","title":"Method Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Record Payment","operationId":"record_payment_api_v1_payments__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-PAY — Payments"],"summary":"List Payments","description":"List payments with filtering and pagination.","operationId":"list_payments_api_v1_payments__get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"payment_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"invoice_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/{payment_id}":{"get":{"tags":["SIG-PAY — Payments"],"summary":"Get Payment","operationId":"get_payment_api_v1_payments__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/refund":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Process Refund","operationId":"process_refund_api_v1_payments_refund_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/prepaid/{customer_id}/balance":{"get":{"tags":["SIG-PAY — Payments"],"summary":"Get Prepaid Balance","operationId":"get_prepaid_balance_api_v1_payments_prepaid__customer_id__balance_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidBalanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/prepaid/topup":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Topup Prepaid","description":"Top up prepaid balance. Returns the payment record.","operationId":"topup_prepaid_api_v1_payments_prepaid_topup_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidTopupRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/prepaid/deduct":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Deduct Prepaid","description":"Deduct from prepaid balance (usage session, etc.). Returns updated balance.","operationId":"deduct_prepaid_api_v1_payments_prepaid_deduct_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidDeductRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidBalanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/prepaid/{customer_id}/transactions":{"get":{"tags":["SIG-PAY — Payments"],"summary":"List Prepaid Transactions","description":"List prepaid transactions for a customer.","operationId":"list_prepaid_transactions_api_v1_payments_prepaid__customer_id__transactions_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"transaction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transaction Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/pay-invoice":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Pay Invoice","description":"Pay an invoice via MoMo (or other provider).\n\nLooks up the invoice, gets the customer's phone number, initiates a collection\nrequest with the gateway, and creates a pending payment record.\nThe consumer app then polls /payments/{reference}/status until resolved.","operationId":"pay_invoice_api_v1_payments_pay_invoice_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayInvoiceRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayInvoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/{reference}/status":{"get":{"tags":["SIG-PAY — Payments"],"summary":"Get Payment Status","description":"Poll payment status by provider reference.\n\nChecks the gateway for the current status. If completed, updates the payment\nrecord and marks the linked invoice as paid. If failed, records the reason.","operationId":"get_payment_status_api_v1_payments__reference__status_get","parameters":[{"name":"reference","in":"path","required":true,"schema":{"type":"string","title":"Reference"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/gateway/balance":{"get":{"tags":["SIG-PAY — Payments"],"summary":"Get Gateway Balance","description":"Check operator float balance with a payment provider.","operationId":"get_gateway_balance_api_v1_payments_gateway_balance_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string","default":"momo","title":"Provider"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"collect","title":"Product"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayBalanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/gateway/initiate":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Gateway Initiate Payment","description":"Initiate payment via external gateway (MoMo, Stripe, or cash).\n\nDispatches to the appropriate adapter, records a pending payment in the DB,\nand returns the gateway reference for tracking.","operationId":"gateway_initiate_payment_api_v1_payments_gateway_initiate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayInitiateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayInitiateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/gateway/webhook/{provider}":{"post":{"tags":["SIG-PAY — Payments"],"summary":"Gateway Webhook","description":"Receive webhook callbacks from MoMo or Stripe.\n\nUpdates the payment record status based on the provider notification.","operationId":"gateway_webhook_api_v1_payments_gateway_webhook__provider__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases":{"post":{"tags":["SIG-COL — Collections"],"summary":"Create Case","operationId":"create_case_api_v1_collections_cases_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-COL — Collections"],"summary":"List Cases","operationId":"list_cases_api_v1_collections_cases_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},{"name":"assigned_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"}},{"name":"min_days_overdue","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Days Overdue"}},{"name":"max_days_overdue","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Days Overdue"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Cases Api V1 Collections Cases Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}":{"get":{"tags":["SIG-COL — Collections"],"summary":"Get Case","operationId":"get_case_api_v1_collections_cases__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-COL — Collections"],"summary":"Update Case","operationId":"update_case_api_v1_collections_cases__case_id__patch","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/status":{"patch":{"tags":["SIG-COL — Collections"],"summary":"Update Case Status","operationId":"update_case_status_api_v1_collections_cases__case_id__status_patch","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/escalate":{"post":{"tags":["SIG-COL — Collections"],"summary":"Escalate Case","operationId":"escalate_case_api_v1_collections_cases__case_id__escalate_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"performed_by","in":"query","required":true,"schema":{"type":"string","title":"Performed By"}},{"name":"notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/suspend":{"post":{"tags":["SIG-COL — Collections"],"summary":"Suspend Case","operationId":"suspend_case_api_v1_collections_cases__case_id__suspend_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/close":{"post":{"tags":["SIG-COL — Collections"],"summary":"Close Case","operationId":"close_case_api_v1_collections_cases__case_id__close_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/write-off":{"post":{"tags":["SIG-COL — Collections"],"summary":"Write Off Case","operationId":"write_off_case_api_v1_collections_cases__case_id__write_off_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/cases/{case_id}/actions":{"post":{"tags":["SIG-COL — Collections"],"summary":"Record Action","operationId":"record_action_api_v1_collections_cases__case_id__actions_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/dunning/run":{"post":{"tags":["SIG-COL — Collections"],"summary":"Run Dunning","description":"Execute dunning policy against all open cases based on days overdue.","operationId":"run_dunning_api_v1_collections_dunning_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Dunning Api V1 Collections Dunning Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/dunning/policies":{"post":{"tags":["SIG-COL — Collections"],"summary":"Create Dunning Policy","operationId":"create_dunning_policy_api_v1_collections_dunning_policies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DunningPolicyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DunningPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-COL — Collections"],"summary":"List Dunning Policies","operationId":"list_dunning_policies_api_v1_collections_dunning_policies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DunningPolicyResponse"},"title":"Response List Dunning Policies Api V1 Collections Dunning Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/dunning/policies/{policy_id}":{"get":{"tags":["SIG-COL — Collections"],"summary":"Get Dunning Policy","operationId":"get_dunning_policy_api_v1_collections_dunning_policies__policy_id__get","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DunningPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-COL — Collections"],"summary":"Update Dunning Policy","operationId":"update_dunning_policy_api_v1_collections_dunning_policies__policy_id__patch","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DunningPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DunningPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-COL — Collections"],"summary":"Delete Dunning Policy","operationId":"delete_dunning_policy_api_v1_collections_dunning_policies__policy_id__delete","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/dashboard":{"get":{"tags":["SIG-COL — Collections"],"summary":"Get Dashboard Stats","operationId":"get_dashboard_stats_api_v1_collections_dashboard_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Create Ticket","operationId":"create_ticket_api_v1_tickets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"List Tickets","operationId":"list_tickets_api_v1_tickets_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"assigned_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"}},{"name":"assigned_team","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Team"}},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"sla_breached","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sla Breached"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/stats":{"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"Get Ticket Stats","operationId":"get_ticket_stats_api_v1_tickets_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}":{"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"Get Ticket","operationId":"get_ticket_api_v1_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-TKT — Support Tickets"],"summary":"Update Ticket","operationId":"update_ticket_api_v1_tickets__ticket_id__patch","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/status":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Change Ticket Status","operationId":"change_ticket_status_api_v1_tickets__ticket_id__status_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketStatusChange"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/assign":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Assign Ticket","operationId":"assign_ticket_api_v1_tickets__ticket_id__assign_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketAssign"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/resolve":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Resolve Ticket","operationId":"resolve_ticket_api_v1_tickets__ticket_id__resolve_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"resolution_notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/close":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Close Ticket","operationId":"close_ticket_api_v1_tickets__ticket_id__close_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/reopen":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Reopen Ticket","operationId":"reopen_ticket_api_v1_tickets__ticket_id__reopen_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/sla/check-breaches":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Check Sla Breaches","operationId":"check_sla_breaches_api_v1_tickets_sla_check_breaches_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Check Sla Breaches Api V1 Tickets Sla Check Breaches Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/{ticket_id}/comments":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Add Comment","operationId":"add_comment_api_v1_tickets__ticket_id__comments_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"List Comments","operationId":"list_comments_api_v1_tickets__ticket_id__comments_get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"include_internal","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Internal"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/sla/policies":{"post":{"tags":["SIG-TKT — Support Tickets"],"summary":"Create Sla Policy","operationId":"create_sla_policy_api_v1_tickets_sla_policies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"List Sla Policies","operationId":"list_sla_policies_api_v1_tickets_sla_policies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tickets/sla/policies/{policy_id}":{"get":{"tags":["SIG-TKT — Support Tickets"],"summary":"Get Sla Policy","operationId":"get_sla_policy_api_v1_tickets_sla_policies__policy_id__get","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-TKT — Support Tickets"],"summary":"Update Sla Policy","operationId":"update_sla_policy_api_v1_tickets_sla_policies__policy_id__patch","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLAPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-TKT — Support Tickets"],"summary":"Delete Sla Policy","operationId":"delete_sla_policy_api_v1_tickets_sla_policies__policy_id__delete","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"integer","title":"Policy Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/baselines":{"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"List Tax Baselines","description":"List tax baselines from the shared catalog. Filter by country + region.","operationId":"list_tax_baselines_api_v1_tax_baselines_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"ISO 3166-1 alpha-2","title":"Country"},"description":"ISO 3166-1 alpha-2"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Tax Baselines Api V1 Tax Baselines Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/effective":{"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"Get Effective Tax","description":"Resolve the effective tax rate for a customer in (country, region).\n\nResolution: tenant's own active TaxRule for the jurisdiction → public\nTaxBaseline for the same jurisdiction → null.","operationId":"get_effective_tax_api_v1_tax_effective_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"title":"Country"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Effective Tax Api V1 Tax Effective Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/calculate":{"post":{"tags":["SIG-TAX — Tax Engine"],"summary":"Calculate Tax","description":"Calculate taxes for a set of line items given country/region.","operationId":"calculate_tax_api_v1_tax_calculate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxCalculationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxCalculationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/rules":{"post":{"tags":["SIG-TAX — Tax Engine"],"summary":"Create Tax Rule","operationId":"create_tax_rule_api_v1_tax_rules_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"List Tax Rules","operationId":"list_tax_rules_api_v1_tax_rules_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country"}},{"name":"tax_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Type"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/rules/{rule_id}":{"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"Get Tax Rule","operationId":"get_tax_rule_api_v1_tax_rules__rule_id__get","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-TAX — Tax Engine"],"summary":"Update Tax Rule","operationId":"update_tax_rule_api_v1_tax_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-TAX — Tax Engine"],"summary":"Delete Tax Rule","operationId":"delete_tax_rule_api_v1_tax_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"integer","title":"Rule Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/exemptions":{"post":{"tags":["SIG-TAX — Tax Engine"],"summary":"Create Exemption","operationId":"create_exemption_api_v1_tax_exemptions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxExemptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxExemptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"List Exemptions","operationId":"list_exemptions_api_v1_tax_exemptions_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"tax_rule_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tax Rule Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxExemptionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/exemptions/{exemption_id}":{"delete":{"tags":["SIG-TAX — Tax Engine"],"summary":"Delete Exemption","operationId":"delete_exemption_api_v1_tax_exemptions__exemption_id__delete","parameters":[{"name":"exemption_id","in":"path","required":true,"schema":{"type":"integer","title":"Exemption Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/summary":{"get":{"tags":["SIG-TAX — Tax Engine"],"summary":"Get Tax Summary","operationId":"get_tax_summary_api_v1_tax_summary_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tax/seed":{"post":{"tags":["SIG-TAX — Tax Engine"],"summary":"Seed Common Rules","description":"Seed common tax rules for a country (Rwanda, India, Kenya, etc.).","operationId":"seed_common_rules_api_v1_tax_seed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pro-services/":{"get":{"tags":["SIG-PSV — Professional Services"],"summary":"List Pro Services","operationId":"list_pro_services_api_v1_pro_services__get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Catalog entries (bare array, no envelope).","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProServiceOut"},"title":"Response List Pro Services Api V1 Pro Services  Get"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope (need one of ['proservices:read', 'plans:read'])"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["SIG-PSV — Professional Services"],"summary":"Create Pro Service","operationId":"create_pro_service_api_v1_pro_services__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProServiceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProServiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pro-services/{service_code}":{"get":{"tags":["SIG-PSV — Professional Services"],"summary":"Get Pro Service","operationId":"get_pro_service_api_v1_pro_services__service_code__get","parameters":[{"name":"service_code","in":"path","required":true,"schema":{"type":"string","title":"Service Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProServiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-PSV — Professional Services"],"summary":"Update Pro Service","operationId":"update_pro_service_api_v1_pro_services__service_code__patch","parameters":[{"name":"service_code","in":"path","required":true,"schema":{"type":"string","title":"Service Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProServiceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProServiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-PSV — Professional Services"],"summary":"Delete Pro Service","operationId":"delete_pro_service_api_v1_pro_services__service_code__delete","parameters":[{"name":"service_code","in":"path","required":true,"schema":{"type":"string","title":"Service Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/terminals":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Create Terminal","operationId":"create_terminal_api_v1_pos_terminals_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-POS — Point of Sale"],"summary":"List Terminals","operationId":"list_terminals_api_v1_pos_terminals_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/terminals/{terminal_id}":{"get":{"tags":["SIG-POS — Point of Sale"],"summary":"Get Terminal","operationId":"get_terminal_api_v1_pos_terminals__terminal_id__get","parameters":[{"name":"terminal_id","in":"path","required":true,"schema":{"type":"integer","title":"Terminal Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-POS — Point of Sale"],"summary":"Update Terminal","operationId":"update_terminal_api_v1_pos_terminals__terminal_id__patch","parameters":[{"name":"terminal_id","in":"path","required":true,"schema":{"type":"integer","title":"Terminal Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/terminals/{terminal_id}/assign-operator":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Assign Operator","operationId":"assign_operator_api_v1_pos_terminals__terminal_id__assign_operator_post","parameters":[{"name":"terminal_id","in":"path","required":true,"schema":{"type":"integer","title":"Terminal Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignOperatorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Create Transaction","operationId":"create_transaction_api_v1_pos_transactions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-POS — Point of Sale"],"summary":"List Transactions","operationId":"list_transactions_api_v1_pos_transactions_get","parameters":[{"name":"terminal_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Terminal Id"}},{"name":"operator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator"}},{"name":"transaction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transaction Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigcore__bss__pos__schemas__TransactionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions/{transaction_id}":{"get":{"tags":["SIG-POS — Point of Sale"],"summary":"Get Transaction","operationId":"get_transaction_api_v1_pos_transactions__transaction_id__get","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"integer","title":"Transaction Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions/{transaction_id}/lines":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Add Line Item","operationId":"add_line_item_api_v1_pos_transactions__transaction_id__lines_post","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"integer","title":"Transaction Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LineItemCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions/{transaction_id}/complete":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Complete Transaction","operationId":"complete_transaction_api_v1_pos_transactions__transaction_id__complete_post","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"integer","title":"Transaction Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteTransactionRequest","default":{"payment_method":"cash"}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions/{transaction_id}/void":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Void Transaction","operationId":"void_transaction_api_v1_pos_transactions__transaction_id__void_post","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"integer","title":"Transaction Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoidTransactionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/transactions/{transaction_id}/refund":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Refund Transaction","operationId":"refund_transaction_api_v1_pos_transactions__transaction_id__refund_post","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"integer","title":"Transaction Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/quick/voucher":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Quick Voucher Sale","operationId":"quick_voucher_sale_api_v1_pos_quick_voucher_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickVoucherSale"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/quick/sim":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Quick Sim Sale","operationId":"quick_sim_sale_api_v1_pos_quick_sim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickSIMSale"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/quick/topup":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Quick Topup","operationId":"quick_topup_api_v1_pos_quick_topup_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickTopup"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/products":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Create Product","operationId":"create_product_api_v1_pos_products_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-POS — Point of Sale"],"summary":"List Products","operationId":"list_products_api_v1_pos_products_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/products/alerts/low-stock":{"get":{"tags":["SIG-POS — Point of Sale"],"summary":"Get Low Stock Alerts","operationId":"get_low_stock_alerts_api_v1_pos_products_alerts_low_stock_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LowStockAlert"},"title":"Response Get Low Stock Alerts Api V1 Pos Products Alerts Low Stock Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/products/{product_id}":{"get":{"tags":["SIG-POS — Point of Sale"],"summary":"Get Product","operationId":"get_product_api_v1_pos_products__product_id__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-POS — Point of Sale"],"summary":"Update Product","operationId":"update_product_api_v1_pos_products__product_id__patch","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/products/{product_id}/stock":{"post":{"tags":["SIG-POS — Point of Sale"],"summary":"Adjust Stock","operationId":"adjust_stock_api_v1_pos_products__product_id__stock_post","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockAdjustRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pos/reports/daily-summary":{"get":{"tags":["SIG-POS — Point of Sale"],"summary":"Get Daily Summary","operationId":"get_daily_summary_api_v1_pos_reports_daily_summary_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date in YYYY-MM-DD format","title":"Date"},"description":"Date in YYYY-MM-DD format"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailySummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/profiles":{"post":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Create Radius Profile","operationId":"create_radius_profile_api_v1_radius_profiles_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusProfileCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"List Radius Profiles","description":"List all RADIUS profiles for this tenant.","operationId":"list_radius_profiles_api_v1_radius_profiles_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Radius Profiles Api V1 Radius Profiles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/profiles/{profile_id}":{"get":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Get Radius Profile","description":"Get a single RADIUS profile.","operationId":"get_radius_profile_api_v1_radius_profiles__profile_id__get","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Update Radius Profile","description":"Update a RADIUS profile (speed, NAS IP, password).","operationId":"update_radius_profile_api_v1_radius_profiles__profile_id__patch","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Delete Radius Profile","description":"Delete a RADIUS profile.","operationId":"delete_radius_profile_api_v1_radius_profiles__profile_id__delete","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/profiles/{profile_id}/suspend":{"post":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Suspend Radius Profile","description":"Suspend a RADIUS profile (disables auth).","operationId":"suspend_radius_profile_api_v1_radius_profiles__profile_id__suspend_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Suspend Radius Profile Api V1 Radius Profiles  Profile Id  Suspend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/profiles/{profile_id}/reactivate":{"post":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Reactivate Radius Profile","description":"Reactivate a suspended RADIUS profile.","operationId":"reactivate_radius_profile_api_v1_radius_profiles__profile_id__reactivate_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reactivate Radius Profile Api V1 Radius Profiles  Profile Id  Reactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/authorize":{"post":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Radius Authorize","description":"FreeRADIUS REST authorize callback.\n\nTries a regular RadiusProfile lookup first. If the username doesn't match\na profile, falls through to SIG-PASS — letting hotspot vouchers\nauthenticate against the same /authorize endpoint without any NAS\nreconfiguration. The two systems share a flat username namespace; pass\ncodes use a recognizable prefix (e.g. `TRAC-...`) to keep them separate\nfrom subscriber usernames by convention.","operationId":"radius_authorize_api_v1_radius_authorize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusAuthRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusAuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/radius/accounting":{"post":{"tags":["SIG-RAD — AAA / RADIUS"],"summary":"Radius Accounting","description":"FreeRADIUS REST accounting callback.\n\nRecords session telemetry into `radius_accounting`. If the username\nmatches an issued prepaid pass, also burns down the pass's budget by\nthe delta since the last report.","operationId":"radius_accounting_api_v1_radius_accounting_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadiusAcctRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Radius Accounting Api V1 Radius Accounting Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cpe/provision":{"post":{"tags":["SIG-CPE — CPE Management"],"summary":"Provision Cpe","description":"Provision a registered CPE device by hostname (auto-dispatches by vendor).","operationId":"provision_cpe_api_v1_cpe_provision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPEProvisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Provision Cpe Api V1 Cpe Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cpe/provision/direct":{"post":{"tags":["SIG-CPE — CPE Management"],"summary":"Provision Cpe Direct","description":"Provision by vendor + IP directly (no registry lookup — legacy/quick test).","operationId":"provision_cpe_direct_api_v1_cpe_provision_direct_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPEProvisionByVendorRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Provision Cpe Direct Api V1 Cpe Provision Direct Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cpe/status/{device}":{"get":{"tags":["SIG-CPE — CPE Management"],"summary":"Cpe Status","description":"Get CPE status by hostname (auto-dispatches by vendor).","operationId":"cpe_status_api_v1_cpe_status__device__get","parameters":[{"name":"device","in":"path","required":true,"schema":{"type":"string","title":"Device"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CPEStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cpe/vendors":{"get":{"tags":["SIG-CPE — CPE Management"],"summary":"List Supported Vendors","description":"List all vendor IDs with CPE provisioning adapters.","operationId":"list_supported_vendors_api_v1_cpe_vendors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Supported Vendors Api V1 Cpe Vendors Get"}}}}}}},"/api/v1/cpe/catalog/vendors":{"get":{"tags":["SIG-CPE — CPE Management"],"summary":"List Vendor Catalog","description":"Full vendor catalog with connection defaults and models.","operationId":"list_vendor_catalog_api_v1_cpe_catalog_vendors_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Vendor Catalog Api V1 Cpe Catalog Vendors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/devices":{"post":{"tags":["SIG-NET — Network Config"],"summary":"Register Device","description":"Register a network device with its credentials.","operationId":"register_device_api_v1_netconf_devices_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegister"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-NET — Network Config"],"summary":"List Devices","operationId":"list_devices_api_v1_netconf_devices_get","parameters":[{"name":"vendor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceResponse"},"title":"Response List Devices Api V1 Netconf Devices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/devices/{hostname}":{"get":{"tags":["SIG-NET — Network Config"],"summary":"Get Device","operationId":"get_device_api_v1_netconf_devices__hostname__get","parameters":[{"name":"hostname","in":"path","required":true,"schema":{"type":"string","title":"Hostname"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/devices/{device_id}":{"patch":{"tags":["SIG-NET — Network Config"],"summary":"Update Device","description":"Update a registered network device.","operationId":"update_device_api_v1_netconf_devices__device_id__patch","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-NET — Network Config"],"summary":"Delete Device","description":"Delete a registered network device.","operationId":"delete_device_api_v1_netconf_devices__device_id__delete","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"integer","title":"Device Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/adapters":{"get":{"tags":["SIG-NET — Network Config"],"summary":"List Netconf Adapters","description":"List supported NETCONF and REST-only vendors.","operationId":"list_netconf_adapters_api_v1_netconf_adapters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Response List Netconf Adapters Api V1 Netconf Adapters Get"}}}}}}},"/api/v1/netconf/monitor/all":{"get":{"tags":["SIG-NET — Network Config"],"summary":"Monitor All Devices","description":"Get status of all registered devices — used by P5 NOC dashboard.","operationId":"monitor_all_devices_api_v1_netconf_monitor_all_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Monitor All Devices Api V1 Netconf Monitor All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/config/{device}":{"get":{"tags":["SIG-NET — Network Config"],"summary":"Get Running Config","description":"Fetch running configuration from a registered device.","operationId":"get_running_config_api_v1_netconf_config__device__get","parameters":[{"name":"device","in":"path","required":true,"schema":{"type":"string","title":"Device"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Get Running Config Api V1 Netconf Config  Device  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/interfaces/configure":{"post":{"tags":["SIG-NET — Network Config"],"summary":"Configure Interface","description":"Push interface config to a registered device (auto-dispatches by vendor).","operationId":"configure_interface_api_v1_netconf_interfaces_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterfaceConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"title":"Response Configure Interface Api V1 Netconf Interfaces Configure Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/bgp/neighbors":{"post":{"tags":["SIG-NET — Network Config"],"summary":"Add Bgp Neighbor","description":"Add BGP neighbor to a registered device (auto-dispatches by vendor).","operationId":"add_bgp_neighbor_api_v1_netconf_bgp_neighbors_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BGPNeighborRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"title":"Response Add Bgp Neighbor Api V1 Netconf Bgp Neighbors Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/netconf/interfaces/stats":{"post":{"tags":["SIG-NET — Network Config"],"summary":"Get Interface Stats","description":"Get interface statistics from a registered device (auto-dispatches by vendor).","operationId":"get_interface_stats_api_v1_netconf_interfaces_stats_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterfaceStatsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterfaceStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Register Sim","description":"Register a new SIM card into inventory.","operationId":"register_sim_api_v1_mvno_sims_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-SIM — MVNO"],"summary":"List Sims","operationId":"list_sims_api_v1_mvno_sims_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SIMCardResponse"},"title":"Response List Sims Api V1 Mvno Sims Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims/{iccid}/activate":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Activate Sim","description":"Activate a SIM — assign MSISDN, bind to customer, create mobile subscriber.","operationId":"activate_sim_api_v1_mvno_sims__iccid__activate_post","parameters":[{"name":"iccid","in":"path","required":true,"schema":{"type":"string","title":"Iccid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMActivateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileSubscriberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims/{iccid}/suspend":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Suspend Sim","operationId":"suspend_sim_api_v1_mvno_sims__iccid__suspend_post","parameters":[{"name":"iccid","in":"path","required":true,"schema":{"type":"string","title":"Iccid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Suspend Sim Api V1 Mvno Sims  Iccid  Suspend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims/{iccid}/deactivate":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Deactivate Sim","operationId":"deactivate_sim_api_v1_mvno_sims__iccid__deactivate_post","parameters":[{"name":"iccid","in":"path","required":true,"schema":{"type":"string","title":"Iccid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Deactivate Sim Api V1 Mvno Sims  Iccid  Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims/{iccid}":{"get":{"tags":["SIG-SIM — MVNO"],"summary":"Get Sim","description":"Get a single SIM card by ICCID.","operationId":"get_sim_api_v1_mvno_sims__iccid__get","parameters":[{"name":"iccid","in":"path","required":true,"schema":{"type":"string","title":"Iccid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/sims/{iccid}/assign":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Assign Sim To Customer","description":"Assign an available SIM to a customer without activating it.","operationId":"assign_sim_to_customer_api_v1_mvno_sims__iccid__assign_post","parameters":[{"name":"iccid","in":"path","required":true,"schema":{"type":"string","title":"Iccid"}},{"name":"customer_id","in":"query","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Assign Sim To Customer Api V1 Mvno Sims  Iccid  Assign Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Create Enterprise Account","description":"Create an enterprise MVNO account for bulk SIM management.","operationId":"create_enterprise_account_api_v1_mvno_enterprise_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseAccountCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-SIM — MVNO"],"summary":"List Enterprise Accounts","description":"List all enterprise MVNO accounts.","operationId":"list_enterprise_accounts_api_v1_mvno_enterprise_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EnterpriseAccountResponse"},"title":"Response List Enterprise Accounts Api V1 Mvno Enterprise Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/{account_id}":{"get":{"tags":["SIG-SIM — MVNO"],"summary":"Get Enterprise Account","description":"Get enterprise account details.","operationId":"get_enterprise_account_api_v1_mvno_enterprise__account_id__get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseAccountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/{account_id}/sims":{"get":{"tags":["SIG-SIM — MVNO"],"summary":"List Enterprise Sims","description":"List all SIMs assigned to an enterprise account with filtering.","operationId":"list_enterprise_sims_api_v1_mvno_enterprise__account_id__sims_get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"cost_center","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cost Center"}},{"name":"department","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EnterpriseSIMResponse"},"title":"Response List Enterprise Sims Api V1 Mvno Enterprise  Account Id  Sims Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/bulk-assign":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Bulk Assign Sims","description":"Assign multiple SIMs to an enterprise account in one operation.\n\nEach SIM is linked to the enterprise, optionally tagged with cost center\nand department for billing allocation.","operationId":"bulk_assign_sims_api_v1_mvno_enterprise_bulk_assign_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSIMAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSIMAssignResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/{account_id}/bulk-activate":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Bulk Activate Sims","description":"Activate all assigned SIMs in an enterprise account.\n\nOptionally auto-assigns MSISDNs from a number range.","operationId":"bulk_activate_sims_api_v1_mvno_enterprise__account_id__bulk_activate_post","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"msisdn_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msisdn Prefix"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Activate Sims Api V1 Mvno Enterprise  Account Id  Bulk Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/{account_id}/bulk-suspend":{"post":{"tags":["SIG-SIM — MVNO"],"summary":"Bulk Suspend Sims","description":"Suspend all or a cost center's SIMs in an enterprise account.","operationId":"bulk_suspend_sims_api_v1_mvno_enterprise__account_id__bulk_suspend_post","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"cost_center","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cost Center"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Suspend Sims Api V1 Mvno Enterprise  Account Id  Bulk Suspend Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mvno/enterprise/{account_id}/usage-summary":{"get":{"tags":["SIG-SIM — MVNO"],"summary":"Enterprise Usage Summary","description":"Aggregated usage across all SIMs in an enterprise account.\n\nBreaks down by cost center and department for billing allocation.","operationId":"enterprise_usage_summary_api_v1_mvno_enterprise__account_id__usage_summary_get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Enterprise Usage Summary Api V1 Mvno Enterprise  Account Id  Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icx/carriers":{"post":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"Register Carrier","description":"Register a carrier partner (MVNO host, transit, IXP).","operationId":"register_carrier_api_v1_icx_carriers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarrierCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarrierResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"List Carriers","operationId":"list_carriers_api_v1_icx_carriers_get","parameters":[{"name":"carrier_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier Type"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CarrierResponse"},"title":"Response List Carriers Api V1 Icx Carriers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icx/carriers/{slug}":{"get":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"Get Carrier","operationId":"get_carrier_api_v1_icx_carriers__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarrierResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"Update Carrier","description":"Update a carrier partner's fields.","operationId":"update_carrier_api_v1_icx_carriers__slug__patch","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarrierUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarrierResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"Delete Carrier","description":"Delete a carrier partner.","operationId":"delete_carrier_api_v1_icx_carriers__slug__delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icx/catalog":{"get":{"tags":["SIG-ICX — Carrier Interconnect"],"summary":"Carrier Catalog","description":"All known carriers Signal Telecom Suite can integrate with.\n\nReturns the static reference catalog enriched with registration status.\nCarriers already registered by this tenant are marked as registered=True.\nAny registered carriers not in the static catalog are appended at the end.","operationId":"carrier_catalog_api_v1_icx_catalog_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Carrier Catalog Api V1 Icx Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/catalog/vendors":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Vendor Catalog","description":"All vendors Signal Telecom Suite supports.","operationId":"list_vendor_catalog_api_v1_tenant_catalog_vendors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Vendor Catalog Api V1 Tenant Catalog Vendors Get"}}}}}}},"/api/v1/tenant/catalog/modules":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Module Catalog","description":"All modules in Signal Telecom Suite.\n\nEach row contains everything a partner / integration engineer needs to\nactually call into the module: what it does (`description`, `purpose`),\nwhich OAuth scopes a token needs (`auth_scopes`), which Swagger group\nholds the live API (`swagger_group` -> /docs/{group}/docs), and which\nintegration-guide section explains the flow (`guide_anchor`). The\nfrontend derives endpoint counts from /openapi.json directly so this\nendpoint stays free of vertical-package imports.","operationId":"list_module_catalog_api_v1_tenant_catalog_modules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Module Catalog Api V1 Tenant Catalog Modules Get"}}}}}}},"/api/v1/tenant/by-slug/{slug}":{"get":{"tags":["Tenant / Sandbox"],"summary":"Get Tenant By Slug","description":"Public resolver: slug → minimal tenant info (id + name). Used by the\nPlayground UI to discover the demo tenant's id without hardcoding it.\nReturns 404 if no tenant matches. No sensitive fields exposed.","operationId":"get_tenant_by_slug_api_v1_tenant_by_slug__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tenant By Slug Api V1 Tenant By Slug  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/catalog/orchestrators":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Orchestrator Catalog","description":"External workflow orchestrators / ETL tools / partner ERPs the platform\nintegrates with for invoicing and batch jobs. Returned as a flat list for\nthe public /integrations page.","operationId":"list_orchestrator_catalog_api_v1_tenant_catalog_orchestrators_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Orchestrator Catalog Api V1 Tenant Catalog Orchestrators Get"}}}}}}},"/api/v1/tenant/catalog/countries":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Countries","description":"All countries Signal Telecom Suite supports.","operationId":"list_countries_api_v1_tenant_catalog_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Countries Api V1 Tenant Catalog Countries Get"}}}}}}},"/api/v1/tenant/catalog/gateways":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Gateway Catalog","description":"All gateway providers the platform supports (SMS + payment).\n\nOptional filter: ?gateway_type=sms or ?gateway_type=payment","operationId":"list_gateway_catalog_api_v1_tenant_catalog_gateways_get","parameters":[{"name":"gateway_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Gateway Catalog Api V1 Tenant Catalog Gateways Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/catalog/enums":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Enums","description":"All enum values the frontend needs — single request, no hardcoding.","operationId":"list_enums_api_v1_tenant_catalog_enums_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Enums Api V1 Tenant Catalog Enums Get"}}}}}}},"/api/v1/tenant/catalog/currencies":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Currencies","description":"All supported currencies with formatting rules.","operationId":"list_currencies_api_v1_tenant_catalog_currencies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Currencies Api V1 Tenant Catalog Currencies Get"}}}}}}},"/api/v1/tenant/login":{"post":{"tags":["Tenant / Sandbox"],"summary":"Tenant Login","description":"Authenticate tenant and return config.","operationId":"tenant_login_api_v1_tenant_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Tenant Login Api V1 Tenant Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/register":{"post":{"tags":["Tenant / Sandbox"],"summary":"Register Tenant","description":"Register a new tenant (used by Signal AI Labs to onboard customers).","operationId":"register_tenant_api_v1_tenant_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/config/{tenant_id}":{"patch":{"tags":["Tenant / Sandbox"],"summary":"Update Tenant Config","description":"Update tenant's enabled vendors, modules, countries (P0 Admin).","operationId":"update_tenant_config_api_v1_tenant_config__tenant_id__patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Tenant Config Api V1 Tenant Config  Tenant Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/{tenant_id}":{"get":{"tags":["Tenant / Sandbox"],"summary":"Get Tenant","operationId":"get_tenant_api_v1_tenant__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users":{"post":{"tags":["Tenant / Sandbox"],"summary":"Create User","description":"Create a user within a tenant (called by tenant admin).","operationId":"create_user_api_v1_tenant_users_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"type":"integer","default":0,"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users/{tenant_id_param}":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Users","description":"List all users for a tenant.","operationId":"list_users_api_v1_tenant_users__tenant_id_param__get","parameters":[{"name":"tenant_id_param","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id Param"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserResponse"},"title":"Response List Users Api V1 Tenant Users  Tenant Id Param  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users/login":{"post":{"tags":["Tenant / Sandbox"],"summary":"User Login","description":"Authenticate a tenant user and return JWT token.","operationId":"user_login_api_v1_tenant_users_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response User Login Api V1 Tenant Users Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users/{user_id}/reset-password":{"post":{"tags":["Tenant / Sandbox"],"summary":"Reset User Password","description":"Reset a tenant user's password.","operationId":"reset_user_password_api_v1_tenant_users__user_id__reset_password_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset User Password Api V1 Tenant Users  User Id  Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users/{user_id}":{"patch":{"tags":["Tenant / Sandbox"],"summary":"Update User","description":"Update a tenant user's name or role.","operationId":"update_user_api_v1_tenant_users__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/users/{user_id}/deactivate":{"patch":{"tags":["Tenant / Sandbox"],"summary":"Deactivate User","description":"Deactivate a tenant user.","operationId":"deactivate_user_api_v1_tenant_users__user_id__deactivate_patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deactivate User Api V1 Tenant Users  User Id  Deactivate Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users":{"post":{"tags":["Tenant / Sandbox"],"summary":"Create Enterprise User","description":"Create a user for an enterprise customer.\n\nCalled by operator P0 (to create the first enterprise admin)\nor by an enterprise admin (to create their team).","operationId":"create_enterprise_user_api_v1_tenant_enterprise_users_post","parameters":[{"name":"x-tenant-id","in":"header","required":false,"schema":{"type":"integer","default":0,"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseUserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users/{customer_id}":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Enterprise Users","description":"List all users for an enterprise customer.","operationId":"list_enterprise_users_api_v1_tenant_enterprise_users__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"type":"integer","default":0,"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EnterpriseUserResponse"},"title":"Response List Enterprise Users Api V1 Tenant Enterprise Users  Customer Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users/login":{"post":{"tags":["Tenant / Sandbox"],"summary":"Enterprise User Login","description":"Authenticate an enterprise customer user and return JWT.","operationId":"enterprise_user_login_api_v1_tenant_enterprise_users_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Enterprise User Login Api V1 Tenant Enterprise Users Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users/{user_id}":{"patch":{"tags":["Tenant / Sandbox"],"summary":"Update Enterprise User","description":"Update an enterprise user's name, role, or department.","operationId":"update_enterprise_user_api_v1_tenant_enterprise_users__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Enterprise User Api V1 Tenant Enterprise Users  User Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users/{user_id}/deactivate":{"patch":{"tags":["Tenant / Sandbox"],"summary":"Deactivate Enterprise User","description":"Deactivate an enterprise user.","operationId":"deactivate_enterprise_user_api_v1_tenant_enterprise_users__user_id__deactivate_patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deactivate Enterprise User Api V1 Tenant Enterprise Users  User Id  Deactivate Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/enterprise-users/{user_id}/reset-password":{"post":{"tags":["Tenant / Sandbox"],"summary":"Reset Enterprise Password","description":"Reset an enterprise user's password.","operationId":"reset_enterprise_password_api_v1_tenant_enterprise_users__user_id__reset_password_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Enterprise Password Api V1 Tenant Enterprise Users  User Id  Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/gateway-configs/{tenant_id}":{"get":{"tags":["Tenant / Sandbox"],"summary":"List Gateway Configs","description":"List all gateway configs for a tenant (credentials redacted).","operationId":"list_gateway_configs_api_v1_tenant_gateway_configs__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Gateway Configs Api V1 Tenant Gateway Configs  Tenant Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Tenant / Sandbox"],"summary":"Upsert Gateway Config","description":"Create or update a gateway config for a tenant.\n\nuse_platform=true: tenant uses Signal AI Labs' account (billed via SaaS).\nuse_platform=false: tenant provides their own provider + config credentials.","operationId":"upsert_gateway_config_api_v1_tenant_gateway_configs__tenant_id__put","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayConfigCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upsert Gateway Config Api V1 Tenant Gateway Configs  Tenant Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenant/gateway-configs/{tenant_id}/{gateway_type}":{"delete":{"tags":["Tenant / Sandbox"],"summary":"Delete Gateway Config","description":"Remove a tenant's gateway config (reverts to platform default).","operationId":"delete_gateway_config_api_v1_tenant_gateway_configs__tenant_id___gateway_type__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"integer","title":"Tenant Id"}},{"name":"gateway_type","in":"path","required":true,"schema":{"type":"string","title":"Gateway Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Gateway Config Api V1 Tenant Gateway Configs  Tenant Id   Gateway Type  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit":{"get":{"tags":["SIG-AUD — Audit Trail"],"summary":"List Audit Entries","description":"List audit entries with flexible filters and pagination.","operationId":"list_audit_entries_api_v1_audit_get","parameters":[{"name":"actor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"}},{"name":"actor_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Type"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"}},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Module"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["SIG-AUD — Audit Trail"],"summary":"Create Audit Entry","description":"Manually log an audit entry (for external integrations).","operationId":"create_audit_entry_api_v1_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditEntryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditEntryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/entity/{entity_type}/{entity_id}":{"get":{"tags":["SIG-AUD — Audit Trail"],"summary":"Get Entity History","description":"All audit entries for a specific entity.","operationId":"get_entity_history_api_v1_audit_entity__entity_type___entity_id__get","parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/actor/{actor}":{"get":{"tags":["SIG-AUD — Audit Trail"],"summary":"Get Actor History","description":"All actions performed by a specific actor.","operationId":"get_actor_history_api_v1_audit_actor__actor__get","parameters":[{"name":"actor","in":"path","required":true,"schema":{"type":"string","title":"Actor"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/stats":{"get":{"tags":["SIG-AUD — Audit Trail"],"summary":"Get Audit Stats","description":"Aggregate action counts for a time period.","operationId":"get_audit_stats_api_v1_audit_stats_get","parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/templates":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Create Template","operationId":"create_template_api_v1_notifications_templates_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-NTF — Notifications"],"summary":"List Templates","operationId":"list_templates_api_v1_notifications_templates_get","parameters":[{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/templates/{template_id}":{"get":{"tags":["SIG-NTF — Notifications"],"summary":"Get Template","operationId":"get_template_api_v1_notifications_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-NTF — Notifications"],"summary":"Update Template","operationId":"update_template_api_v1_notifications_templates__template_id__patch","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/send":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Send Notification","operationId":"send_notification_api_v1_notifications_send_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendNotificationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/send-bulk":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Send Bulk","operationId":"send_bulk_api_v1_notifications_send_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSendRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/history":{"get":{"tags":["SIG-NTF — Notifications"],"summary":"Notification History","operationId":"notification_history_api_v1_notifications_history_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/{notification_id}":{"get":{"tags":["SIG-NTF — Notifications"],"summary":"Get Notification","operationId":"get_notification_api_v1_notifications__notification_id__get","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/retry-failed":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Retry Failed","operationId":"retry_failed_api_v1_notifications_retry_failed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/{notification_id}/delivered":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Mark Delivered","operationId":"mark_delivered_api_v1_notifications__notification_id__delivered_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkDeliveredRequest","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/{notification_id}/failed":{"post":{"tags":["SIG-NTF — Notifications"],"summary":"Mark Failed","operationId":"mark_failed_api_v1_notifications__notification_id__failed_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkFailedRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/preferences/{customer_id}":{"get":{"tags":["SIG-NTF — Notifications"],"summary":"Get Preferences","operationId":"get_preferences_api_v1_notifications_preferences__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["SIG-NTF — Notifications"],"summary":"Update Preferences","operationId":"update_preferences_api_v1_notifications_preferences__customer_id__put","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceBulkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/metrics":{"post":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Record Metric","description":"Record (upsert) a metric value.  Automatically snapshots the previous value.","operationId":"record_metric_api_v1_analytics_metrics_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricWithTrend"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"List Metrics","description":"List all metrics for the tenant with optional filters.","operationId":"list_metrics_api_v1_analytics_metrics_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MetricCategory"},{"type":"null"}],"title":"Category"}},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MetricPeriod"},{"type":"null"}],"title":"Period"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/metrics/{metric_name}":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Get Metric","description":"Get current value and trend for a single metric.","operationId":"get_metric_api_v1_analytics_metrics__metric_name__get","parameters":[{"name":"metric_name","in":"path","required":true,"schema":{"type":"string","title":"Metric Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricWithTrend"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Update Metric","description":"Update the value of an existing metric (records new snapshot).","operationId":"update_metric_api_v1_analytics_metrics__metric_name__put","parameters":[{"name":"metric_name","in":"path","required":true,"schema":{"type":"string","title":"Metric Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricWithTrend"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/metrics/{metric_name}/history":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Get Metric History","description":"Return time-series snapshots for a specific metric.","operationId":"get_metric_history_api_v1_analytics_metrics__metric_name__history_get","parameters":[{"name":"metric_name","in":"path","required":true,"schema":{"type":"string","title":"Metric Name"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/trends":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Calculate Trends","description":"Compare current vs previous values for all metrics.  Returns trend data.","operationId":"calculate_trends_api_v1_analytics_trends_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MetricCategory"},{"type":"null"}],"title":"Category"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Calculate Trends Api V1 Analytics Trends Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/dashboards":{"post":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Create Dashboard","description":"Create a new dashboard.","operationId":"create_dashboard_api_v1_analytics_dashboards_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"List Dashboards","description":"List all dashboards for the tenant.","operationId":"list_dashboards_api_v1_analytics_dashboards_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/dashboards/{slug}":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Get Dashboard","description":"Fetch a single dashboard by slug.","operationId":"get_dashboard_api_v1_analytics_dashboards__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/dashboards/{dashboard_id}":{"put":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Update Dashboard","description":"Update an existing dashboard.","operationId":"update_dashboard_api_v1_analytics_dashboards__dashboard_id__put","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Delete Dashboard","description":"Delete a dashboard.","operationId":"delete_dashboard_api_v1_analytics_dashboards__dashboard_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"integer","title":"Dashboard Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/dashboards/{slug}/data":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Get Dashboard Data","description":"Resolve a dashboard layout into actual metric data for rendering.","operationId":"get_dashboard_data_api_v1_analytics_dashboards__slug__data_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardDataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/kpis":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Compute Kpis","description":"Compute cross-vertical KPIs from recorded metrics.","operationId":"compute_kpis_api_v1_analytics_kpis_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/export":{"get":{"tags":["SIG-ANL — Analytics & Dashboards"],"summary":"Export Metrics","description":"Export metrics and snapshot history as CSV or JSON for BI tools.","operationId":"export_metrics_api_v1_analytics_export_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ExportFormat","default":"json"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MetricCategory"},{"type":"null"}],"title":"Category"}},{"name":"metric_names","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated metric names","title":"Metric Names"},"description":"Comma-separated metric names"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/definitions":{"post":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Create Report Definition","description":"Create a new report definition.","operationId":"create_report_definition_api_v1_reports_definitions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"List Report Definitions","description":"List report definitions with optional filters.","operationId":"list_report_definitions_api_v1_reports_definitions_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/definitions/{report_id}":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Get Report Definition","description":"Get a report definition by ID.","operationId":"get_report_definition_api_v1_reports_definitions__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Update Report Definition","description":"Update a report definition.","operationId":"update_report_definition_api_v1_reports_definitions__report_id__patch","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Delete Report Definition","description":"Delete a report definition and all its runs.","operationId":"delete_report_definition_api_v1_reports_definitions__report_id__delete","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/definitions/{report_id}/run":{"post":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Run Report","description":"Execute a report on-demand and return the run record.","operationId":"run_report_api_v1_reports_definitions__report_id__run_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RunReportRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/definitions/{report_id}/runs":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"List Report Runs","description":"List execution history for a report.","operationId":"list_report_runs_api_v1_reports_definitions__report_id__runs_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRunListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/runs/{run_id}":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Get Report Run","description":"Get details of a specific report run.","operationId":"get_report_run_api_v1_reports_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/definitions/{report_id}/schedule":{"post":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Schedule Report","description":"Set or update the schedule for a report.","operationId":"schedule_report_api_v1_reports_definitions__report_id__schedule_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}},{"name":"cron_expression","in":"query","required":true,"schema":{"type":"string","description":"Cron expression, e.g. \"0 6 1 * *\"","title":"Cron Expression"},"description":"Cron expression, e.g. \"0 6 1 * *\""},{"name":"recipients","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JSON array of emails","title":"Recipients"},"description":"JSON array of emails"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportDefinitionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/predefined/{report_name}":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Run Predefined Report","description":"Execute a predefined (canned) report by name.","operationId":"run_predefined_report_api_v1_reports_predefined__report_name__get","parameters":[{"name":"report_name","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PredefinedReport"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredefinedReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bi-connections":{"post":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Create Bi Connection","description":"Register a new BI tool connection.","operationId":"create_bi_connection_api_v1_reports_bi_connections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"List Bi Connections","description":"List BI connections with optional filters.","operationId":"list_bi_connections_api_v1_reports_bi_connections_get","parameters":[{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bi-connections/{connection_id}":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Get Bi Connection","description":"Get a BI connection by ID.","operationId":"get_bi_connection_api_v1_reports_bi_connections__connection_id__get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"integer","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Update Bi Connection","description":"Update a BI connection.","operationId":"update_bi_connection_api_v1_reports_bi_connections__connection_id__patch","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"integer","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BIConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Delete Bi Connection","description":"Delete a BI connection.","operationId":"delete_bi_connection_api_v1_reports_bi_connections__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"integer","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bi-connections/{connection_id}/embed":{"get":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Get Embed Config","description":"Get the resolved embed configuration for a BI connection.\n\nReturns the embed URL and platform-specific parameters needed\nby the frontend to render an embedded dashboard.","operationId":"get_embed_config_api_v1_reports_bi_connections__connection_id__embed_get","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"integer","title":"Connection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/bi-connections/export":{"post":{"tags":["SIG-RPT — Reporting & BI"],"summary":"Export Data For Bi","description":"Export raw data tables as CSV/JSON for BI tool import.\n\nOnly whitelisted tables are allowed.  Results are tenant-scoped\nand optionally filtered by date range.","operationId":"export_data_for_bi_api_v1_reports_bi_connections_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DataExportResponse"},"title":"Response Export Data For Bi Api V1 Reports Bi Connections Export Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/models":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Create Model","description":"Create a new AI/ML model definition.","operationId":"create_model_api_v1_ai_models_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SIG-AI — AI & Intelligence"],"summary":"List Models","description":"List AI/ML models with optional filters.","operationId":"list_models_api_v1_ai_models_get","parameters":[{"name":"model_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ModelType"},{"type":"null"}],"title":"Model Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ModelStatus"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/models/{model_id}":{"get":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Get Model","description":"Get a single AI/ML model by ID.","operationId":"get_model_api_v1_ai_models__model_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"integer","title":"Model Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Update Model","description":"Update an existing AI/ML model.","operationId":"update_model_api_v1_ai_models__model_id__put","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"integer","title":"Model Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionModelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Delete Model","description":"Delete an AI/ML model and all its predictions.","operationId":"delete_model_api_v1_ai_models__model_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"integer","title":"Model Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predict/churn":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Predict Churn","description":"Predict churn risk for a customer using heuristic scoring.","operationId":"predict_churn_api_v1_ai_predict_churn_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChurnPredictionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predict/anomalies":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Detect Anomalies","description":"Detect anomalies using z-score analysis for the given entity type.","operationId":"detect_anomalies_api_v1_ai_predict_anomalies_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnomalyDetectionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PredictionResponse"},"title":"Response Detect Anomalies Api V1 Ai Predict Anomalies Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predict/demand":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Forecast Demand","description":"Forecast demand using simple moving average.","operationId":"forecast_demand_api_v1_ai_predict_demand_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandForecastRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predict/recommendations":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Generate Recommendations","description":"Generate rule-based recommendations for a customer.","operationId":"generate_recommendations_api_v1_ai_predict_recommendations_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PredictionResponse"},"title":"Response Generate Recommendations Api V1 Ai Predict Recommendations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predict/batch":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Run Batch Predictions","description":"Run predictions for a batch of entities.","operationId":"run_batch_predictions_api_v1_ai_predict_batch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchPredictionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchPredictionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/predictions":{"get":{"tags":["SIG-AI — AI & Intelligence"],"summary":"List Predictions","description":"List prediction results with optional filters.","operationId":"list_predictions_api_v1_ai_predictions_get","parameters":[{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Id"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TargetEntity"},{"type":"null"}],"title":"Entity Type"}},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"}},{"name":"prediction_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PredictionType"},{"type":"null"}],"title":"Prediction Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/insights/generate":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Generate Insights","description":"Scan data and generate actionable insights.","operationId":"generate_insights_api_v1_ai_insights_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightResponse"},"title":"Response Generate Insights Api V1 Ai Insights Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/insights":{"get":{"tags":["SIG-AI — AI & Intelligence"],"summary":"List Insights","description":"List insights with optional filters.","operationId":"list_insights_api_v1_ai_insights_get","parameters":[{"name":"insight_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/InsightType"},{"type":"null"}],"title":"Insight Type"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/sigcore__core__ai__schemas__Severity"},{"type":"null"}],"title":"Severity"}},{"name":"is_read","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Read"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/insights/mark-read":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Mark Insights Read","description":"Mark one or more insights as read.","operationId":"mark_insights_read_api_v1_ai_insights_mark_read_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightMarkRead"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mark Insights Read Api V1 Ai Insights Mark Read Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/insights/mark-actioned":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Mark Insights Actioned","description":"Mark one or more insights as actioned (also marks as read).","operationId":"mark_insights_actioned_api_v1_ai_insights_mark_actioned_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightMarkActioned"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mark Insights Actioned Api V1 Ai Insights Mark Actioned Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/chat":{"post":{"tags":["SIG-AI — AI & Intelligence"],"summary":"Ai Chat","description":"AI-powered chat assistant — answers billing, usage, plan, and account queries.","operationId":"ai_chat_api_v1_ai_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/partyManagement/v4/individual":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf632 List Individuals","description":"TMF632 — List Individual parties.","operationId":"tmf632_list_individuals_tmf_api_partyManagement_v4_individual_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Tmf632 List Individuals Tmf Api Partymanagement V4 Individual Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/partyManagement/v4/individual/{id}":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf632 Get Individual","description":"TMF632 — Get Individual by ID.","operationId":"tmf632_get_individual_tmf_api_partyManagement_v4_individual__id__get","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tmf632 Get Individual Tmf Api Partymanagement V4 Individual  Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/partyManagement/v4/organization":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf632 List Organizations","description":"TMF632 — List Organization parties.","operationId":"tmf632_list_organizations_tmf_api_partyManagement_v4_organization_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Tmf632 List Organizations Tmf Api Partymanagement V4 Organization Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/productCatalogManagement/v4/productOffering":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf620 List Product Offerings","description":"TMF620 — List Product Offerings (service plans).","operationId":"tmf620_list_product_offerings_tmf_api_productCatalogManagement_v4_productOffering_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Tmf620 List Product Offerings Tmf Api Productcatalogmanagement V4 Productoffering Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/productOrderingManagement/v4/productOrder":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf622 List Product Orders","description":"TMF622 — List Product Orders (subscriptions).","operationId":"tmf622_list_product_orders_tmf_api_productOrderingManagement_v4_productOrder_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Tmf622 List Product Orders Tmf Api Productorderingmanagement V4 Productorder Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tmf-api/customerBillManagement/v4/customerBill":{"get":{"tags":["TMF Open APIs"],"summary":"Tmf678 List Bills","description":"TMF678 — List Customer Bills (invoices).","operationId":"tmf678_list_bills_tmf_api_customerBillManagement_v4_customerBill_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Tmf678 List Bills Tmf Api Customerbillmanagement V4 Customerbill Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/deep":{"get":{"tags":["SIG-MON — Monitoring"],"summary":"Deep Health Check","description":"Deep health check — tests each subsystem individually.","operationId":"deep_health_check_health_deep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Deep Health Check Health Deep Get"}}}}}}},"/metrics/business":{"get":{"tags":["SIG-MON — Monitoring"],"summary":"Business Metrics","description":"Business metrics snapshot — JSON format for dashboards.\n\nReturns counts and aggregates scoped to the requesting tenant.","operationId":"business_metrics_metrics_business_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Business Metrics Metrics Business Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-faq":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"List Platform Faqs","description":"List platform FAQ entries. Searchable by keyword and filterable by category.","operationId":"list_platform_faqs_api_v1_platform_faq_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FaqResponse"},"title":"Response List Platform Faqs Api V1 Platform Faq Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Create Platform Faq","description":"Create a platform FAQ entry (Signal AI Labs admin).","operationId":"create_platform_faq_api_v1_platform_faq_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/platform-faq/categories":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Platform Faq Categories","description":"List platform FAQ categories with counts.","operationId":"platform_faq_categories_api_v1_platform_faq_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FaqCategoryCount"},"type":"array","title":"Response Platform Faq Categories Api V1 Platform Faq Categories Get"}}}}}}},"/api/v1/platform-faq/{faq_id}":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Get Platform Faq","operationId":"get_platform_faq_api_v1_platform_faq__faq_id__get","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Update Platform Faq","operationId":"update_platform_faq_api_v1_platform_faq__faq_id__patch","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Delete Platform Faq","operationId":"delete_platform_faq_api_v1_platform_faq__faq_id__delete","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Platform Faq Api V1 Platform Faq  Faq Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/faq":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"List Tenant Faqs","description":"List tenant FAQ entries. Searchable and filterable.","operationId":"list_tenant_faqs_api_v1_faq_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FaqResponse"},"title":"Response List Tenant Faqs Api V1 Faq Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Create Tenant Faq","description":"Create a tenant FAQ entry (operator admin).","operationId":"create_tenant_faq_api_v1_faq_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/faq/categories":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Tenant Faq Categories","description":"List tenant FAQ categories with counts.","operationId":"tenant_faq_categories_api_v1_faq_categories_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FaqCategoryCount"},"title":"Response Tenant Faq Categories Api V1 Faq Categories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/faq/{faq_id}":{"get":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Get Tenant Faq","operationId":"get_tenant_faq_api_v1_faq__faq_id__get","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Update Tenant Faq","operationId":"update_tenant_faq_api_v1_faq__faq_id__patch","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaqResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SIG-FAQ — Knowledge Base"],"summary":"Delete Tenant Faq","operationId":"delete_tenant_faq_api_v1_faq__faq_id__delete","parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"integer","title":"Faq Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Tenant Faq Api V1 Faq  Faq Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bcarried/partners":{"post":{"tags":["B.Carried (Tenant Ops)"],"summary":"Create Partner Endpoint","operationId":"create_partner_endpoint_api_v1_bcarried_partners_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__PartnerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__PartnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["B.Carried (Tenant Ops)"],"summary":"List Partners Endpoint","operationId":"list_partners_endpoint_api_v1_bcarried_partners_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__PartnerResponse"},"title":"Response List Partners Endpoint Api V1 Bcarried Partners Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bcarried/partners/{partner_id}/keys":{"post":{"tags":["B.Carried (Tenant Ops)"],"summary":"Issue Key Endpoint","operationId":"issue_key_endpoint_api_v1_bcarried_partners__partner_id__keys_post","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyIssued"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["B.Carried (Tenant Ops)"],"summary":"List Keys Endpoint","operationId":"list_keys_endpoint_api_v1_bcarried_partners__partner_id__keys_get","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyResponse"},"title":"Response List Keys Endpoint Api V1 Bcarried Partners  Partner Id  Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bcarried/keys/{key_id}/revoke":{"post":{"tags":["B.Carried (Tenant Ops)"],"summary":"Revoke Key Endpoint","operationId":"revoke_key_endpoint_api_v1_bcarried_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bcarried/partners/{partner_id}/plan-visibility":{"put":{"tags":["B.Carried (Tenant Ops)"],"summary":"Set Plan Visibility Endpoint","operationId":"set_plan_visibility_endpoint_api_v1_bcarried_partners__partner_id__plan_visibility_put","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanVisibilityUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanVisibilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["B.Carried (Tenant Ops)"],"summary":"List Plan Visibility Endpoint","operationId":"list_plan_visibility_endpoint_api_v1_bcarried_partners__partner_id__plan_visibility_get","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanVisibilityResponse"},"title":"Response List Plan Visibility Endpoint Api V1 Bcarried Partners  Partner Id  Plan Visibility Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bcarried/partners/{partner_id}/invoices/generate":{"post":{"tags":["B.Carried (Tenant Ops)"],"summary":"Generate Invoice Endpoint","operationId":"generate_invoice_endpoint_api_v1_bcarried_partners__partner_id__invoices_generate_post","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"integer","title":"Partner Id"}},{"name":"period_start","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"Period Start"}},{"name":"period_end","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"Period End"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Invoice Endpoint Api V1 Bcarried Partners  Partner Id  Invoices Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/whoami":{"get":{"tags":["Partner API (B.Carried)"],"summary":"Whoami","operationId":"whoami_partner_v1_whoami_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhoAmI"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/customers":{"post":{"tags":["Partner API (B.Carried)"],"summary":"Create Customer Endpoint","operationId":"create_customer_endpoint_partner_v1_customers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Partner API (B.Carried)"],"summary":"List Customers Endpoint","operationId":"list_customers_endpoint_partner_v1_customers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerResponse"},"title":"Response List Customers Endpoint Partner V1 Customers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/customers/{customer_id}":{"get":{"tags":["Partner API (B.Carried)"],"summary":"Get Customer Endpoint","operationId":"get_customer_endpoint_partner_v1_customers__customer_id__get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/customers/{customer_id}/suspend":{"post":{"tags":["Partner API (B.Carried)"],"summary":"Suspend Customer Endpoint","operationId":"suspend_customer_endpoint_partner_v1_customers__customer_id__suspend_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/customers/{customer_id}/restore":{"post":{"tags":["Partner API (B.Carried)"],"summary":"Restore Customer Endpoint","operationId":"restore_customer_endpoint_partner_v1_customers__customer_id__restore_post","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"string","title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__CustomerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/plans":{"get":{"tags":["Partner API (B.Carried)"],"summary":"List Plans Endpoint","operationId":"list_plans_endpoint_partner_v1_plans_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Plans Endpoint Partner V1 Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/subscriptions":{"post":{"tags":["Partner API (B.Carried)"],"summary":"Create Subscription Endpoint","operationId":"create_subscription_endpoint_partner_v1_subscriptions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sigtel__bcarried__schemas__SubscriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Subscription Endpoint Partner V1 Subscriptions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/usage":{"get":{"tags":["Partner API (B.Carried)"],"summary":"Get Usage Endpoint","operationId":"get_usage_endpoint_partner_v1_usage_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Usage Endpoint Partner V1 Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/v1/invoices":{"get":{"tags":["Partner API (B.Carried)"],"summary":"List Partner Invoices Endpoint","description":"Returns wholesale invoices the host tenant has issued to this partner.","operationId":"list_partner_invoices_endpoint_partner_v1_invoices_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Partner Invoices Endpoint Partner V1 Invoices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/":{"get":{"tags":["Webhook Subscriptions"],"summary":"List Webhooks","operationId":"list_webhooks_api_v1_webhooks__get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookSubOut"},"title":"Response List Webhooks Api V1 Webhooks  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Webhook Subscriptions"],"summary":"Create Webhook","operationId":"create_webhook_api_v1_webhooks__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubIssued"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/{name}":{"patch":{"tags":["Webhook Subscriptions"],"summary":"Update Webhook","operationId":"update_webhook_api_v1_webhooks__name__patch","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhook Subscriptions"],"summary":"Delete Webhook","operationId":"delete_webhook_api_v1_webhooks__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/{name}/rotate-secret":{"post":{"tags":["Webhook Subscriptions"],"summary":"Rotate Secret","description":"Rotate the HMAC signing secret. Old secret invalid immediately.","operationId":"rotate_secret_api_v1_webhooks__name__rotate_secret_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubIssued"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/{name}/deliveries":{"get":{"tags":["Webhook Subscriptions"],"summary":"List Deliveries","operationId":"list_deliveries_api_v1_webhooks__name__deliveries_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryOut"},"title":"Response List Deliveries Api V1 Webhooks  Name  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/outbox/events":{"get":{"tags":["Outbox"],"summary":"List Events","description":"Read pending (or filtered) outbox events for the calling tenant.\n\nExternal consumers pull events here, process them, then ack via\nPOST /outbox/events/{id}/ack (or /fail with an error message).","operationId":"list_events_api_v1_outbox_events_get","parameters":[{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Outbox events matching the filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboxListResponse"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:read"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/outbox/events/{event_id}/ack":{"post":{"tags":["Outbox"],"summary":"Ack Event","description":"Mark an event as dispatched. Idempotent — re-acking is a no-op.","operationId":"ack_event_api_v1_outbox_events__event_id__ack_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Event marked dispatched. Idempotent — re-acking returns the same response.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ack Event Api V1 Outbox Events  Event Id  Ack Post"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:read"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/outbox/events/{event_id}/fail":{"post":{"tags":["Outbox"],"summary":"Fail Event","description":"Record a processing failure. Bumps dispatch_attempts.","operationId":"fail_event_api_v1_outbox_events__event_id__fail_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FailRequest"}}}},"responses":{"200":{"description":"Failure recorded; `dispatch_attempts` incremented. Status promotes to `failed` after 3 attempts, otherwise stays `pending`.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fail Event Api V1 Outbox Events  Event Id  Fail Post"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: invoices:read"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/display-metadata":{"get":{"tags":["Display Metadata"],"summary":"List Metadata","description":"Return all active display metadata, or one scope when ?scope=...\n\nFrontends typically call this once at boot with no scope and cache the\nfull result in memory, then index by (scope, code).","operationId":"list_metadata_api_v1_display_metadata_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DisplayMetadataItem"},"title":"Response List Metadata Api V1 Display Metadata Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Display Metadata"],"summary":"Upsert Metadata","description":"Replace one scope wholesale. Used by ops portal admins to rebrand.","operationId":"upsert_metadata_api_v1_display_metadata_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisplayMetadataUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DisplayMetadataItem"},"title":"Response Upsert Metadata Api V1 Display Metadata Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/reset/{tenant_slug}":{"post":{"tags":["Demo"],"summary":"Reset Demo","description":"Reset a demo tenant to a clean baseline.\n\nTwo-phase reset for the open-pipeline narrative:\n\n  Phase A (setup, always Sigtel): tenants, plans, rate plans,\n          customers, devices, pro-services catalog, usage records.\n          Sigtel owns this layer regardless of who computes invoices.\n\n  Phase B (invoicing, configurable):\n          - 'sigtel'    — Sigtel's rating engine runs; invoices land\n                          with source='sigtel'. Used by internal-mode\n                          tenants (TrAC, ISPs).\n          - 'eikam'     — The reference Eikam workflow runs against\n                          the same data Eikam would (mock-Dremio +\n                          the SQL view) and writes invoices via\n                          POST /billing/invoices with X-Source: eikam.\n                          The result has source='eikam', matching the\n                          open-pipeline story for satcom-demo.\n          - 'auto'      — Pick based on the tenant's invoicing_mode:\n                          internal → sigtel, external → eikam.\n\nCurrently only satcom-demo is supported (the one tenant with a seed\n+ Eikam-shaped customers).","operationId":"reset_demo_api_v1_demo_reset__tenant_slug__post","parameters":[{"name":"tenant_slug","in":"path","required":true,"schema":{"type":"string","title":"Tenant Slug"}},{"name":"invoicer","in":"query","required":false,"schema":{"type":"string","default":"auto","title":"Invoicer"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Demo Api V1 Demo Reset  Tenant Slug  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/integrations":{"get":{"tags":["Integrations"],"summary":"List Integrations","description":"List integrations registered for the calling tenant.","operationId":"list_integrations_api_v1_integrations_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationResponse"},"title":"Response List Integrations Api V1 Integrations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/integrations/{integration_type}":{"get":{"tags":["Integrations"],"summary":"Get Integration","operationId":"get_integration_api_v1_integrations__integration_type__get","parameters":[{"name":"integration_type","in":"path","required":true,"schema":{"type":"string","title":"Integration Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Integrations"],"summary":"Upsert Integration","description":"Create or update an integration.","operationId":"upsert_integration_api_v1_integrations__integration_type__put","parameters":[{"name":"integration_type","in":"path","required":true,"schema":{"type":"string","title":"Integration Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/integrations/{integration_type}/test":{"post":{"tags":["Integrations"],"summary":"Test Integration","description":"Lightweight connectivity check. For eikam: HEAD/GET the base URL.\n\nDoesn't trigger a real workflow run — that's a separate explicit action.","operationId":"test_integration_api_v1_integrations__integration_type__test_post","parameters":[{"name":"integration_type","in":"path","required":true,"schema":{"type":"string","title":"Integration Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Integration Api V1 Integrations  Integration Type  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entitlements":{"post":{"tags":["SIG-ENT — Customer Entitlements"],"summary":"Create Entitlement","description":"Book a new entitlement for a customer.\n\nUsed by the ops portal (operator manually adds a Failover for Sapphire),\nby automation (CRM workflow on a contract signature), and by seed\nscripts (to populate demo data).","operationId":"create_entitlement_api_v1_entitlements_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementCreate"}}}},"responses":{"201":{"description":"Entitlement booked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementResponse"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: customers:write"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}},"get":{"tags":["SIG-ENT — Customer Entitlements"],"summary":"List Entitlements","description":"List entitlements with optional filters.\n\nThe two common patterns:\n  - ?customer_id=X — everything ever booked for one customer\n  - ?active_in_period_start=...&active_in_period_end=... — what to\n    bill across all customers for the given period (the read Eikam\n    or the internal rating engine performs)","operationId":"list_entitlements_api_v1_entitlements_get","parameters":[{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"active_in_period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active In Period Start"}},{"name":"active_in_period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active In Period End"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Entitlements matching the filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementListResponse"}}}},"422":{"description":"Neither `customer_id` nor both of `active_in_period_start` + `active_in_period_end` supplied. Returning all entitlements unfiltered is intentionally unsupported."},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: customers:read"}}}}}}},"/api/v1/entitlements/{entitlement_id}/cancel":{"post":{"tags":["SIG-ENT — Customer Entitlements"],"summary":"Cancel Entitlement","operationId":"cancel_entitlement_api_v1_entitlements__entitlement_id__cancel_post","parameters":[{"name":"entitlement_id","in":"path","required":true,"schema":{"type":"integer","title":"Entitlement Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementCancel"}}}},"responses":{"200":{"description":"Entitlement cancelled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementResponse"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: customers:write"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prepaid-packages":{"get":{"tags":["SIG-PASS — Prepaid Packages"],"summary":"List Packages","operationId":"list_packages_api_v1_prepaid_packages_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Catalog of prepaid packages.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PrepaidPackageOut"},"title":"Response List Packages Api V1 Prepaid Packages Get"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope (need one of ['plans:read', 'passes:read'])"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["SIG-PASS — Prepaid Packages"],"summary":"Create Package","operationId":"create_package_api_v1_prepaid_packages_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPackageCreate"}}}},"responses":{"201":{"description":"Catalog SKU created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPackageOut"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: plans:write"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/prepaid-packages/{package_id}":{"patch":{"tags":["SIG-PASS — Prepaid Packages"],"summary":"Update Package","operationId":"update_package_api_v1_prepaid_packages__package_id__patch","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"integer","title":"Package Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPackageUpdate"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPackageOut"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: plans:write"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/prepaid-passes/issue":{"post":{"tags":["SIG-PASS — Prepaid Passes"],"summary":"Issue Pass","operationId":"issue_pass_api_v1_prepaid_passes_issue_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassIssue"}}}},"responses":{"201":{"description":"Pass issued. Plaintext password returned ONCE.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassIssueResponse"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: passes:issue"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/prepaid-passes/auth":{"post":{"tags":["SIG-PASS — Prepaid Passes"],"summary":"Authenticate","operationId":"authenticate_api_v1_prepaid_passes_auth_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassAuthRequest"}}}},"responses":{"200":{"description":"Authentication decision. `accepted=true` returns budget + QoS for the NAS to enforce; `accepted=false` carries a machine-readable `reason` (invalid_credentials | expired | budget_exhausted | device_limit_reached | device_mac_required | revoked).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassAuthResponse"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: passes:auth"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/prepaid-passes/usage":{"post":{"tags":["SIG-PASS — Prepaid Passes"],"summary":"Report Usage","operationId":"report_usage_api_v1_prepaid_passes_usage_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassUsageReport"}}}},"responses":{"200":{"description":"Usage applied; updated pass returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassOut"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: passes:auth"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Schema or enum validation failed. `detail` is an array of per-field errors (FastAPI `RequestValidationError` shape).","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"type":"string"}},"msg":{"type":"string"},"type":{"type":"string"},"ctx":{"type":"object"}}}}}},"example":{"detail":[{"loc":["body","lines",0,"unit"],"msg":"Input should be 'month', 'MB', 'min', 'msg', ...","type":"enum"}]}}}}}}},"/api/v1/prepaid-passes":{"get":{"tags":["SIG-PASS — Prepaid Passes"],"summary":"List Passes","operationId":"list_passes_api_v1_prepaid_passes_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"List of passes; password hashes never returned.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PrepaidPassOut"},"title":"Response List Passes Api V1 Prepaid Passes Get"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: passes:read"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prepaid-passes/{pass_id}/revoke":{"post":{"tags":["SIG-PASS — Prepaid Passes"],"summary":"Revoke Pass","operationId":"revoke_pass_api_v1_prepaid_passes__pass_id__revoke_post","parameters":[{"name":"pass_id","in":"path","required":true,"schema":{"type":"integer","title":"Pass Id"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","default":"operator revoke","title":"Reason"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Pass revoked. Cannot be reactivated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepaidPassOut"}}}},"401":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Authentication required"}}}},"403":{"description":"Authenticated but the token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Missing scope: passes:write"}}}},"404":{"description":"Resource not found in this tenant.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset-demo-data":{"post":{"summary":"Reset Demo Data","description":"Reset demo-generated data back to clean seed state.\n\nRemoves:\n  - Demo-generated tenants (slug starts with 'demo-' or contains random names)\n  - Demo-generated customers (email contains @demo or @example)\n  - Demo-generated SIMs, usage, invoices for those customers\n  - Demo-generated tenant schemas\n\nPreserves:\n  - Seed tenants (trac, prairie, vyom)\n  - Seed customers, plans, devices","operationId":"reset_demo_data_api_v1_admin_reset_demo_data_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Reset Demo Data Api V1 Admin Reset Demo Data Post"}}}}}}},"/api/v1/demo/login":{"post":{"summary":"Demo Login","description":"Authenticate a demo access user. Returns whether NDA is accepted.","operationId":"demo_login_api_v1_demo_login_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Login Api V1 Demo Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/accept-nda":{"post":{"summary":"Demo Accept Nda","description":"Record NDA acceptance for a demo access user.","operationId":"demo_accept_nda_api_v1_demo_accept_nda_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Accept Nda Api V1 Demo Accept Nda Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access":{"get":{"summary":"List Demo Access","description":"List all platform access users with NDA status.","operationId":"list_demo_access_api_v1_admin_demo_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Demo Access Api V1 Admin Demo Access Get"}}}}}},"post":{"summary":"Create Demo Access","description":"Create platform access credentials.","operationId":"create_demo_access_api_v1_admin_demo_access_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Demo Access Api V1 Admin Demo Access Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access/bulk":{"post":{"summary":"Bulk Create Demo Access","description":"Bulk create platform access users.\n\nBody: { password: str, role: str, users: [{ email, name?, company? }, ...] }","operationId":"bulk_create_demo_access_api_v1_admin_demo_access_bulk_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Bulk Create Demo Access Api V1 Admin Demo Access Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access/{user_id}/reset-password":{"post":{"summary":"Reset Demo Password","description":"Reset password for a platform access user.","operationId":"reset_demo_password_api_v1_admin_demo_access__user_id__reset_password_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Demo Password Api V1 Admin Demo Access  User Id  Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access/{user_id}/revoke-nda":{"post":{"summary":"Revoke Demo Nda","description":"Revoke NDA acceptance — user must re-accept on next visit.","operationId":"revoke_demo_nda_api_v1_admin_demo_access__user_id__revoke_nda_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Demo Nda Api V1 Admin Demo Access  User Id  Revoke Nda Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access/{user_id}/deactivate":{"post":{"summary":"Deactivate Demo Access","description":"Deactivate demo access entirely — user cannot log in.","operationId":"deactivate_demo_access_api_v1_admin_demo_access__user_id__deactivate_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deactivate Demo Access Api V1 Admin Demo Access  User Id  Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/demo-access/{user_id}/reactivate":{"post":{"summary":"Reactivate Demo Access","description":"Reactivate demo access — user can log in again.","operationId":"reactivate_demo_access_api_v1_admin_demo_access__user_id__reactivate_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reactivate Demo Access Api V1 Admin Demo Access  User Id  Reactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/unified-login":{"post":{"summary":"Unified Login","description":"Unified login — checks ops admin, tenant login, and tenant user in order.\n\nReturns:\n  - type: \"superadmin\" | \"tenant\" | \"user\" | \"consumer\"\n  - For superadmin: list of all tenants to pick from\n  - For tenant: tenant config + persona selector\n  - For user: tenant + persona from their role","operationId":"unified_login_api_v1_auth_unified_login_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Unified Login Api V1 Auth Unified Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/api/v1/auth/consumer-login":{"post":{"summary":"Consumer Login","description":"Consumer login — phone number or email + password.","operationId":"consumer_login_api_v1_auth_consumer_login_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Consumer Login Api V1 Auth Consumer Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Global Search","description":"Global typeahead search across customers, devices, plans, invoices, SIMs.","operationId":"global_search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-tenant-id","in":"header","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X-Tenant-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Global Search Api V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActionCount":{"properties":{"action":{"type":"string","title":"Action"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["action","count"],"title":"ActionCount"},"ActionResult":{"type":"string","enum":["successful","no_response","promised_to_pay","refused","bounced"],"title":"ActionResult"},"ActionType":{"type":"string","enum":["reminder_email","reminder_sms","phone_call","letter","service_suspension","escalation","payment_arrangement","write_off"],"title":"ActionType"},"ActorType":{"type":"string","enum":["user","system","api","webhook"],"title":"ActorType"},"AgingBucket":{"properties":{"bucket":{"type":"string","title":"Bucket"},"count":{"type":"integer","title":"Count"},"total_outstanding":{"type":"number","title":"Total Outstanding"}},"type":"object","required":["bucket","count","total_outstanding"],"title":"AgingBucket"},"AllowanceCounterOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"subscriber_account_id":{"type":"integer","title":"Subscriber Account Id"},"subscription_id":{"type":"integer","title":"Subscription Id"},"allowance_type":{"type":"string","title":"Allowance Type"},"total_allowance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Allowance"},"consumed":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Consumed"},"remaining":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Remaining"},"unit":{"type":"string","title":"Unit"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","subscriber_account_id","subscription_id","allowance_type","total_allowance","consumed","remaining","unit","period_start","period_end","status","created_at"],"title":"AllowanceCounterOut"},"AnomalyDetectionRequest":{"properties":{"entity_type":{"$ref":"#/components/schemas/TargetEntity","default":"device","examples":["device"]}},"type":"object","title":"AnomalyDetectionRequest"},"ApiKeyCreate":{"properties":{"label":{"type":"string","maxLength":100,"minLength":1,"title":"Label"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["label"],"title":"ApiKeyCreate"},"ApiKeyIssued":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"key":{"type":"string","title":"Key"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","label","key","key_prefix","scopes","created_at"],"title":"ApiKeyIssued","description":"Returned ONCE on creation — full key shown, then never again."},"ApiKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","label","key_prefix","scopes","created_at"],"title":"ApiKeyResponse"},"AppliesTo":{"type":"string","enum":["all","broadband","voice","sms","data","equipment","subscription","one_time"],"title":"AppliesTo"},"AssignCustomerRequest":{"properties":{"partner_id":{"type":"integer","title":"Partner Id"},"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"}},"type":"object","required":["partner_id","customer_id"],"title":"AssignCustomerRequest"},"AssignOperatorRequest":{"properties":{"operator_name":{"type":"string","maxLength":200,"title":"Operator Name"}},"type":"object","required":["operator_name"],"title":"AssignOperatorRequest"},"AuditEntryCreate":{"properties":{"actor":{"type":"string","maxLength":200,"title":"Actor"},"actor_type":{"$ref":"#/components/schemas/ActorType","default":"user"},"action":{"type":"string","maxLength":100,"title":"Action"},"entity_type":{"type":"string","maxLength":50,"title":"Entity Type"},"entity_id":{"type":"string","maxLength":100,"title":"Entity Id"},"module":{"type":"string","maxLength":20,"title":"Module"},"changes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changes","description":"JSON diff of what changed"},"ip_address":{"anyOf":[{"type":"string","maxLength":45},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"User Agent"},"request_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Request Id"},"severity":{"$ref":"#/components/schemas/sigcore__core__audit__schemas__Severity","default":"info"}},"type":"object","required":["actor","action","entity_type","entity_id","module"],"title":"AuditEntryCreate"},"AuditEntryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"actor":{"type":"string","title":"Actor"},"actor_type":{"type":"string","title":"Actor Type"},"action":{"type":"string","title":"Action"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"module":{"type":"string","title":"Module"},"changes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changes"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"severity":{"type":"string","title":"Severity"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","timestamp","actor","actor_type","action","entity_type","entity_id","module","changes","ip_address","user_agent","request_id","severity","created_at"],"title":"AuditEntryResponse"},"AuditListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuditEntryResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"AuditListResponse"},"AuditStatsResponse":{"properties":{"counts":{"items":{"$ref":"#/components/schemas/ActionCount"},"type":"array","title":"Counts"},"total":{"type":"integer","title":"Total"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["counts","total"],"title":"AuditStatsResponse"},"AuthorType":{"type":"string","enum":["agent","customer","system"],"title":"AuthorType"},"BGPNeighborRequest":{"properties":{"device":{"type":"string","title":"Device","description":"Hostname or mgmt IP of registered device"},"neighbor_ip":{"type":"string","title":"Neighbor Ip","examples":["10.0.0.2"]},"peer_as":{"type":"integer","title":"Peer As"},"local_as":{"type":"integer","title":"Local As"},"description":{"type":"string","title":"Description"}},"type":"object","required":["device","neighbor_ip","peer_as","local_as","description"],"title":"BGPNeighborRequest"},"BIConnectionCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"platform":{"$ref":"#/components/schemas/BIPlatform"},"connection_type":{"$ref":"#/components/schemas/ConnectionType"},"config":{"type":"string","title":"Config","description":"JSON with platform-specific config. PowerBI: {\"workspace_id\": \"...\", \"report_id\": \"...\", \"embed_url\": \"...\"}. Tableau: {\"server\": \"...\", \"site\": \"...\", \"workbook\": \"...\"}. Metabase: {\"url\": \"...\", \"dashboard_id\": 42}"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","platform","connection_type","config"],"title":"BIConnectionCreate"},"BIConnectionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BIConnectionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"BIConnectionListResponse"},"BIConnectionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"platform":{"type":"string","title":"Platform"},"connection_type":{"type":"string","title":"Connection Type"},"config":{"type":"string","title":"Config"},"is_active":{"type":"boolean","title":"Is Active"},"last_synced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Synced At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","name","platform","connection_type","config","is_active","last_synced_at","created_at"],"title":"BIConnectionResponse"},"BIConnectionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"platform":{"anyOf":[{"$ref":"#/components/schemas/BIPlatform"},{"type":"null"}]},"connection_type":{"anyOf":[{"$ref":"#/components/schemas/ConnectionType"},{"type":"null"}]},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"BIConnectionUpdate"},"BIPlatform":{"type":"string","enum":["powerbi","tableau","metabase","grafana","superset","custom"],"title":"BIPlatform"},"BalanceBucketOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"subscriber_account_id":{"type":"integer","title":"Subscriber Account Id"},"bucket_type":{"type":"string","title":"Bucket Type"},"balance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance"},"initial_balance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Initial Balance"},"unit":{"type":"string","title":"Unit"},"source":{"type":"string","title":"Source"},"expiry_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiry Date"},"is_active":{"type":"boolean","title":"Is Active"},"priority":{"type":"integer","title":"Priority"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","subscriber_account_id","bucket_type","balance","initial_balance","unit","source","is_active","priority","created_at","updated_at"],"title":"BalanceBucketOut"},"BalanceSummary":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"account_type":{"type":"string","title":"Account Type"},"currency":{"type":"string","title":"Currency"},"monetary_balance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Monetary Balance","default":"0"},"voice_remaining_seconds":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Voice Remaining Seconds","default":"0"},"data_remaining_bytes":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Data Remaining Bytes","default":"0"},"sms_remaining":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Sms Remaining","default":"0"},"buckets":{"items":{"$ref":"#/components/schemas/BalanceBucketOut"},"type":"array","title":"Buckets","default":[]}},"type":"object","required":["customer_id","account_type","currency"],"title":"BalanceSummary"},"BatchPredictionRequest":{"properties":{"entity_type":{"$ref":"#/components/schemas/TargetEntity"},"entity_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Entity Ids"},"prediction_type":{"$ref":"#/components/schemas/PredictionType"}},"type":"object","required":["entity_type","entity_ids","prediction_type"],"title":"BatchPredictionRequest"},"BatchPredictionResponse":{"properties":{"predictions":{"items":{"$ref":"#/components/schemas/PredictionResponse"},"type":"array","title":"Predictions"},"total":{"type":"integer","title":"Total"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["predictions","total"],"title":"BatchPredictionResponse"},"BillableItemListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BillableItemOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"BillableItemListResponse"},"BillableItemOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"charged_item_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Charged Item Id"},"aggregation_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aggregation Key"},"description":{"type":"string","title":"Description"},"quantity":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"unit_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Unit Price"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"currency":{"type":"string","title":"Currency"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"status":{"type":"string","title":"Status"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","description","quantity","unit","unit_price","amount","tax_amount","total_amount","currency","status","created_at"],"title":"BillableItemOut"},"BillingCycleCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"cycle_type":{"$ref":"#/components/schemas/CycleType","default":"monthly"},"anchor_day":{"type":"integer","maximum":28.0,"minimum":1.0,"title":"Anchor Day","default":1},"next_bill_date":{"type":"string","format":"date-time","title":"Next Bill Date"}},"type":"object","required":["customer_id","next_bill_date"],"title":"BillingCycleCreate"},"BillingCycleListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BillingCycleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"BillingCycleListResponse"},"BillingCycleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"cycle_type":{"type":"string","title":"Cycle Type"},"anchor_day":{"type":"integer","title":"Anchor Day"},"next_bill_date":{"type":"string","format":"date-time","title":"Next Bill Date"},"last_billed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Billed At"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","cycle_type","anchor_day","next_bill_date","last_billed_at","status","created_at"],"title":"BillingCycleResponse"},"BulkCustomerError":{"properties":{"index":{"type":"integer","title":"Index"},"error":{"type":"string","title":"Error"}},"type":"object","required":["index","error"],"title":"BulkCustomerError"},"BulkCustomerImportResponse":{"properties":{"created":{"type":"integer","title":"Created","default":0},"failed":{"type":"integer","title":"Failed","default":0},"errors":{"items":{"$ref":"#/components/schemas/BulkCustomerError"},"type":"array","title":"Errors","default":[]}},"type":"object","title":"BulkCustomerImportResponse"},"BulkSIMAssignRequest":{"properties":{"enterprise_account_id":{"type":"integer","title":"Enterprise Account Id"},"iccids":{"items":{"type":"string"},"type":"array","maxItems":500,"minItems":1,"title":"Iccids"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"cost_center":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cost Center"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"}},"type":"object","required":["enterprise_account_id","iccids"],"title":"BulkSIMAssignRequest","description":"Assign multiple SIMs to an enterprise account in one call."},"BulkSIMAssignResponse":{"properties":{"enterprise_account_id":{"type":"integer","title":"Enterprise Account Id"},"assigned":{"type":"integer","title":"Assigned"},"failed":{"type":"integer","title":"Failed"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["enterprise_account_id","assigned","failed","errors"],"title":"BulkSIMAssignResponse"},"BulkSendRequest":{"properties":{"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id"},"channel":{"$ref":"#/components/schemas/Channel"},"recipients":{"items":{"type":"string"},"type":"array","maxItems":1000,"minItems":1,"title":"Recipients"},"subject":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Body"},"priority":{"$ref":"#/components/schemas/Priority","default":"normal"},"variables":{"additionalProperties":{"type":"string"},"type":"object","title":"Variables"},"reference_type":{"anyOf":[{"$ref":"#/components/schemas/sigcore__core__notifications__schemas__ReferenceType"},{"type":"null"}]},"reference_id":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Reference Id"}},"type":"object","required":["channel","recipients"],"title":"BulkSendRequest"},"BulkSendResponse":{"properties":{"queued":{"type":"integer","title":"Queued"},"notifications":{"items":{"$ref":"#/components/schemas/NotificationResponse"},"type":"array","title":"Notifications"}},"type":"object","required":["queued","notifications"],"title":"BulkSendResponse"},"CPEProvisionByVendorRequest":{"properties":{"vendor":{"type":"string","title":"Vendor"},"device_ip":{"type":"string","title":"Device Ip"},"customer_id":{"type":"string","title":"Customer Id"},"speed_down_kbps":{"type":"integer","title":"Speed Down Kbps"},"speed_up_kbps":{"type":"integer","title":"Speed Up Kbps"},"vlan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vlan Id"}},"type":"object","required":["vendor","device_ip","customer_id","speed_down_kbps","speed_up_kbps"],"title":"CPEProvisionByVendorRequest","description":"Legacy — provision by vendor + IP (no registry lookup)."},"CPEProvisionRequest":{"properties":{"device":{"type":"string","title":"Device","description":"Hostname or mgmt IP of registered device"},"customer_id":{"type":"string","title":"Customer Id"},"speed_down_kbps":{"type":"integer","title":"Speed Down Kbps"},"speed_up_kbps":{"type":"integer","title":"Speed Up Kbps"},"vlan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vlan Id"}},"type":"object","required":["device","customer_id","speed_down_kbps","speed_up_kbps"],"title":"CPEProvisionRequest"},"CPEStatusResponse":{"properties":{"device":{"type":"string","title":"Device"},"vendor":{"type":"string","title":"Vendor"},"mgmt_ip":{"type":"string","title":"Mgmt Ip"},"status":{"type":"string","title":"Status"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"type":"object","required":["device","vendor","mgmt_ip","status","details"],"title":"CPEStatusResponse"},"CallDirection":{"type":"string","enum":["outgoing","incoming"],"title":"CallDirection"},"CallStatsSummary":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"total_calls":{"type":"integer","title":"Total Calls","default":0},"total_minutes":{"type":"number","title":"Total Minutes","default":0},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_direction":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Direction"},"total_charged":{"type":"number","title":"Total Charged","default":0},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"}},"type":"object","required":["customer_id"],"title":"CallStatsSummary","description":"Call statistics summary for a customer."},"CallType":{"type":"string","enum":["local","national","international","roaming","emergency"],"title":"CallType"},"CarrierCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug","examples":["airtel-in"]},"carrier_type":{"$ref":"#/components/schemas/CarrierType"},"countries":{"type":"string","title":"Countries","examples":["IN,KE,UG,RW,NG"]},"peering_asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Peering Asn"},"peering_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peering Ip"},"sip_trunk_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Trunk Ip"},"diameter_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diameter Host"},"cdr_sftp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cdr Sftp Host"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Endpoint"},"wholesale_currency":{"type":"string","title":"Wholesale Currency","default":"USD"},"voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate Per Min"},"sms_rate_per_msg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sms Rate Per Msg"},"data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Data Rate Per Mb"},"transit_rate_per_mbps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Rate Per Mbps"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","slug","carrier_type","countries"],"title":"CarrierCreate"},"CarrierResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"carrier_type":{"type":"string","title":"Carrier Type"},"countries":{"type":"string","title":"Countries"},"status":{"type":"string","title":"Status"},"peering_asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Peering Asn"},"peering_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peering Ip"},"sip_trunk_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Trunk Ip"},"diameter_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diameter Host"},"cdr_sftp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cdr Sftp Host"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Endpoint"},"wholesale_currency":{"type":"string","title":"Wholesale Currency"},"voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate Per Min"},"sms_rate_per_msg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sms Rate Per Msg"},"data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Data Rate Per Mb"},"transit_rate_per_mbps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Rate Per Mbps"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","slug","carrier_type","countries","status","peering_asn","peering_ip","sip_trunk_ip","diameter_host","cdr_sftp_host","api_endpoint","wholesale_currency","voice_rate_per_min","sms_rate_per_msg","data_rate_per_mb","transit_rate_per_mbps","notes","created_at"],"title":"CarrierResponse"},"CarrierType":{"type":"string","enum":["mno","mvno_host","transit","ixp","wholesale"],"title":"CarrierType"},"CarrierUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"carrier_type":{"anyOf":[{"$ref":"#/components/schemas/CarrierType"},{"type":"null"}]},"countries":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Countries"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"peering_asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Peering Asn"},"peering_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peering Ip"},"sip_trunk_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Trunk Ip"},"diameter_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Diameter Host"},"cdr_sftp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cdr Sftp Host"},"api_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Endpoint"},"wholesale_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wholesale Currency"},"voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate Per Min"},"sms_rate_per_msg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sms Rate Per Msg"},"data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Data Rate Per Mb"},"transit_rate_per_mbps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Transit Rate Per Mbps"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"CarrierUpdate"},"CasePriority":{"type":"string","enum":["low","medium","high","critical"],"title":"CasePriority"},"CaseStatus":{"type":"string","enum":["open","in_progress","payment_promised","payment_received","escalated","suspended","closed","written_off"],"title":"CaseStatus"},"Category":{"type":"string","enum":["billing","provisioning","support","marketing","system","security"],"title":"Category"},"CdrBulkCreate":{"properties":{"records":{"items":{"$ref":"#/components/schemas/CdrCreate"},"type":"array","title":"Records"}},"type":"object","required":["records"],"title":"CdrBulkCreate","description":"Bulk ingest a batch of CDRs."},"CdrBulkIngest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/CdrIngest"},"type":"array","title":"Records"}},"type":"object","required":["records"],"title":"CdrBulkIngest","description":"Bulk ingest a batch of CDRs."},"CdrCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"calling_number":{"type":"string","maxLength":20,"title":"Calling Number"},"called_number":{"type":"string","maxLength":20,"title":"Called Number"},"call_start":{"type":"string","format":"date-time","title":"Call Start"},"call_end":{"type":"string","format":"date-time","title":"Call End"},"duration_seconds":{"type":"integer","minimum":0.0,"title":"Duration Seconds"},"call_type":{"$ref":"#/components/schemas/CallType","default":"local"},"direction":{"$ref":"#/components/schemas/CallDirection","default":"outgoing"},"termination_cause":{"$ref":"#/components/schemas/TerminationCause","default":"normal"},"cell_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Cell Id"},"trunk_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Trunk Id"},"source":{"$ref":"#/components/schemas/CdrSource","default":"api"},"raw_cdr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Cdr"}},"type":"object","required":["customer_id","calling_number","called_number","call_start","call_end","duration_seconds"],"title":"CdrCreate","description":"Ingest a single Call Detail Record."},"CdrIngest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"calling_number":{"type":"string","maxLength":20,"title":"Calling Number"},"called_number":{"type":"string","maxLength":20,"title":"Called Number"},"call_start":{"type":"string","format":"date-time","title":"Call Start"},"call_end":{"type":"string","format":"date-time","title":"Call End"},"duration_seconds":{"type":"integer","minimum":0.0,"title":"Duration Seconds"},"call_type":{"$ref":"#/components/schemas/CallType","default":"local"},"direction":{"$ref":"#/components/schemas/CallDirection","default":"outgoing"},"termination_cause":{"$ref":"#/components/schemas/TerminationCause","default":"normal"},"cell_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Cell Id"},"trunk_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Trunk Id"},"source":{"$ref":"#/components/schemas/CdrSource","default":"api"},"raw_cdr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Cdr"}},"type":"object","required":["customer_id","calling_number","called_number","call_start","call_end","duration_seconds"],"title":"CdrIngest","description":"Ingest a single Call Detail Record via mediation."},"CdrSource":{"type":"string","enum":["msc","cdr_file","api","simulator"],"title":"CdrSource"},"ChangePlanRequest":{"properties":{"new_plan_id":{"type":"integer","title":"New Plan Id"}},"type":"object","required":["new_plan_id"],"title":"ChangePlanRequest","description":"Request to upgrade/downgrade a subscription to a different plan."},"Channel":{"type":"string","enum":["sms","email","push","ussd","webhook"],"title":"Channel"},"ChargeBatchRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChargeRequest"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ChargeBatchRequest","description":"Request to charge multiple items."},"ChargeRequest":{"properties":{"chargeable_item_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chargeable Item Id"},"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"charge_type":{"type":"string","pattern":"^(usage|recurring|one_time|adjustment|refund)$","title":"Charge Type","default":"usage"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Quantity"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"tax_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Tax Amount"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["customer_id","amount"],"title":"ChargeRequest","description":"Request to charge a single chargeable item.\n\nchargeable_item_id is optional: real-time charging (Diameter Ro/Rf,\nonline charging) authorizes and debits without a pre-existing\nchargeable_item row. Batch/offline mediation paths populate it."},"ChargeableItemListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChargeableItemResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"ChargeableItemListResponse","description":"Paginated list of chargeable items."},"ChargeableItemResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"event_type":{"type":"string","title":"Event Type"},"event_timestamp":{"type":"string","format":"date-time","title":"Event Timestamp"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"a_party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"A Party"},"b_party":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"B Party"},"destination_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination Zone"},"source_record_type":{"type":"string","title":"Source Record Type"},"source_record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Record Id"},"mediation_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mediation Job Id"},"status":{"type":"string","title":"Status"},"rate_plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Plan Id"},"rated_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rated Amount"},"rated_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rated Currency"},"included_in_allowance":{"type":"boolean","title":"Included In Allowance"},"charged_item_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Charged Item Id"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","event_type","event_timestamp","quantity","unit","a_party","b_party","destination_zone","source_record_type","source_record_id","mediation_job_id","status","rate_plan_id","rated_amount","rated_currency","included_in_allowance","charged_item_id","error_message","created_at"],"title":"ChargeableItemResponse","description":"Full chargeable item with all fields."},"ChargedItemListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChargedItemOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"ChargedItemListResponse"},"ChargedItemOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"subscriber_account_id":{"type":"integer","title":"Subscriber Account Id"},"chargeable_item_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chargeable Item Id"},"charge_type":{"type":"string","title":"Charge Type"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"currency":{"type":"string","title":"Currency"},"tax_amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Tax Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"balance_bucket_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance Bucket Id"},"included_in_allowance":{"type":"boolean","title":"Included In Allowance"},"allowance_counter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allowance Counter Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","subscriber_account_id","charge_type","amount","currency","total_amount","included_in_allowance","status","created_at"],"title":"ChargedItemOut"},"ChargingChainResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"usage_summary":{"$ref":"#/components/schemas/UsageSummary"},"rated_charges":{"items":{"$ref":"#/components/schemas/RatedChargeOut"},"type":"array","title":"Rated Charges"},"total_unbilled":{"type":"number","title":"Total Unbilled"},"total_billed":{"type":"number","title":"Total Billed"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["customer_id","usage_summary","rated_charges","total_unbilled","total_billed","currency"],"title":"ChargingChainResponse"},"ChargingTransactionOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"subscriber_account_id":{"type":"integer","title":"Subscriber Account Id"},"transaction_type":{"type":"string","title":"Transaction Type"},"balance_bucket_id":{"type":"integer","title":"Balance Bucket Id"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"balance_before":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance Before"},"balance_after":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance After"},"reference_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reference Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","subscriber_account_id","transaction_type","balance_bucket_id","amount","balance_before","balance_after","created_at"],"title":"ChargingTransactionOut"},"ChatRequest":{"properties":{"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"ChatRequest"},"ChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"intent":{"type":"string","title":"Intent"},"suggestions":{"items":{"type":"string"},"type":"array","title":"Suggestions","default":[]}},"type":"object","required":["reply","intent"],"title":"ChatResponse"},"ChurnPredictionRequest":{"properties":{"customer_id":{"type":"string","maxLength":100,"title":"Customer Id","examples":["cust-001"]}},"type":"object","required":["customer_id"],"title":"ChurnPredictionRequest"},"CollectionActionCreate":{"properties":{"action_type":{"$ref":"#/components/schemas/ActionType"},"performed_by":{"type":"string","maxLength":120,"title":"Performed By"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"result":{"$ref":"#/components/schemas/ActionResult"},"next_action_type":{"anyOf":[{"$ref":"#/components/schemas/ActionType"},{"type":"null"}]},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"}},"type":"object","required":["action_type","performed_by","result"],"title":"CollectionActionCreate"},"CollectionActionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"case_id":{"type":"integer","title":"Case Id"},"action_type":{"type":"string","title":"Action Type"},"action_date":{"type":"string","format":"date-time","title":"Action Date"},"performed_by":{"type":"string","title":"Performed By"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"result":{"type":"string","title":"Result"},"next_action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action Type"},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","case_id","action_type","action_date","performed_by","notes","result","next_action_type","next_action_date","created_at"],"title":"CollectionActionResponse"},"CollectionCaseCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"invoice_id":{"type":"integer","title":"Invoice Id"},"total_outstanding":{"type":"number","title":"Total Outstanding"},"currency":{"type":"string","title":"Currency","default":"USD"},"days_overdue":{"type":"integer","title":"Days Overdue","default":0},"priority":{"$ref":"#/components/schemas/CasePriority","default":"medium"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"}},"type":"object","required":["customer_id","invoice_id","total_outstanding"],"title":"CollectionCaseCreate"},"CollectionCaseDetail":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"case_number":{"type":"string","title":"Case Number"},"invoice_id":{"type":"integer","title":"Invoice Id"},"status":{"$ref":"#/components/schemas/CaseStatus"},"priority":{"$ref":"#/components/schemas/CasePriority"},"total_outstanding":{"type":"number","title":"Total Outstanding"},"currency":{"type":"string","title":"Currency"},"days_overdue":{"type":"integer","title":"Days Overdue"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"escalation_level":{"type":"integer","title":"Escalation Level"},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"actions":{"items":{"$ref":"#/components/schemas/CollectionActionResponse"},"type":"array","title":"Actions","default":[]}},"type":"object","required":["id","tenant_id","customer_id","case_number","invoice_id","status","priority","total_outstanding","currency","days_overdue","assigned_to","escalation_level","next_action_date","resolution_notes","opened_at","closed_at","created_at","updated_at"],"title":"CollectionCaseDetail"},"CollectionCaseResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"case_number":{"type":"string","title":"Case Number"},"invoice_id":{"type":"integer","title":"Invoice Id"},"status":{"$ref":"#/components/schemas/CaseStatus"},"priority":{"$ref":"#/components/schemas/CasePriority"},"total_outstanding":{"type":"number","title":"Total Outstanding"},"currency":{"type":"string","title":"Currency"},"days_overdue":{"type":"integer","title":"Days Overdue"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"escalation_level":{"type":"integer","title":"Escalation Level"},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","case_number","invoice_id","status","priority","total_outstanding","currency","days_overdue","assigned_to","escalation_level","next_action_date","resolution_notes","opened_at","closed_at","created_at","updated_at"],"title":"CollectionCaseResponse"},"CollectionCaseStatusUpdate":{"properties":{"status":{"$ref":"#/components/schemas/CaseStatus"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"}},"type":"object","required":["status"],"title":"CollectionCaseStatusUpdate"},"CollectionCaseUpdate":{"properties":{"priority":{"anyOf":[{"$ref":"#/components/schemas/CasePriority"},{"type":"null"}]},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"next_action_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Action Date"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"}},"type":"object","title":"CollectionCaseUpdate"},"CommentCreate":{"properties":{"author":{"type":"string","maxLength":200,"minLength":1,"title":"Author"},"author_type":{"$ref":"#/components/schemas/AuthorType","default":"agent"},"body":{"type":"string","minLength":1,"title":"Body"},"is_internal":{"type":"boolean","title":"Is Internal","default":false},"attachments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachments"}},"type":"object","required":["author","body"],"title":"CommentCreate"},"CommentListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CommentResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"CommentListResponse"},"CommentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"ticket_id":{"type":"integer","title":"Ticket Id"},"author":{"type":"string","title":"Author"},"author_type":{"type":"string","title":"Author Type"},"body":{"type":"string","title":"Body"},"is_internal":{"type":"boolean","title":"Is Internal"},"attachments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachments"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","ticket_id","author","author_type","body","is_internal","attachments","created_at"],"title":"CommentResponse"},"CompleteTransactionRequest":{"properties":{"payment_method":{"$ref":"#/components/schemas/PaymentMethod","default":"cash"},"payment_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"}},"type":"object","title":"CompleteTransactionRequest"},"ConnectionType":{"type":"string","enum":["embed","api","jdbc","odbc"],"title":"ConnectionType"},"ContactCreate":{"properties":{"contact_type":{"type":"string","maxLength":20,"title":"Contact Type"},"name":{"type":"string","maxLength":200,"title":"Name"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"title":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Title"},"is_primary":{"type":"boolean","title":"Is Primary","default":false}},"type":"object","required":["contact_type","name"],"title":"ContactCreate"},"ContactResponse":{"properties":{"id":{"type":"integer","title":"Id"},"contact_type":{"type":"string","title":"Contact Type"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"is_primary":{"type":"boolean","title":"Is Primary"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","contact_type","name","email","phone","title","is_primary","created_at"],"title":"ContactResponse"},"CreditNoteCreate":{"properties":{"original_invoice_id":{"type":"integer","title":"Original Invoice Id"},"reason":{"type":"string","maxLength":500,"minLength":5,"title":"Reason"},"lines":{"items":{"$ref":"#/components/schemas/InvoiceLineCreate"},"type":"array","minItems":1,"title":"Lines"}},"type":"object","required":["original_invoice_id","reason","lines"],"title":"CreditNoteCreate"},"CustomerStatusChange":{"properties":{"status":{"$ref":"#/components/schemas/LifecycleStatus"},"reason":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reason"}},"type":"object","required":["status"],"title":"CustomerStatusChange"},"CustomerType":{"type":"string","enum":["individual","enterprise","government","ngo"],"title":"CustomerType"},"CustomerUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"secondary_phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Secondary Phone"},"country":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"address_line1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line1"},"address_line2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line2"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"segment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Limit"},"payment_terms_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Terms Days"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"tax_exempt":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tax Exempt"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"CustomerUpdate"},"CycleType":{"type":"string","enum":["monthly","quarterly","annual"],"title":"CycleType"},"DailySummaryByOperator":{"properties":{"operator":{"type":"string","title":"Operator"},"transaction_count":{"type":"integer","title":"Transaction Count"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"}},"type":"object","required":["operator","transaction_count","total_amount"],"title":"DailySummaryByOperator"},"DailySummaryByPaymentMethod":{"properties":{"payment_method":{"type":"string","title":"Payment Method"},"transaction_count":{"type":"integer","title":"Transaction Count"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"}},"type":"object","required":["payment_method","transaction_count","total_amount"],"title":"DailySummaryByPaymentMethod"},"DailySummaryByTerminal":{"properties":{"terminal_id":{"type":"integer","title":"Terminal Id"},"terminal_code":{"type":"string","title":"Terminal Code"},"terminal_name":{"type":"string","title":"Terminal Name"},"transaction_count":{"type":"integer","title":"Transaction Count"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"}},"type":"object","required":["terminal_id","terminal_code","terminal_name","transaction_count","total_amount"],"title":"DailySummaryByTerminal"},"DailySummaryResponse":{"properties":{"date":{"type":"string","title":"Date"},"tenant_id":{"type":"integer","title":"Tenant Id"},"total_transactions":{"type":"integer","title":"Total Transactions"},"total_revenue":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Revenue"},"by_terminal":{"items":{"$ref":"#/components/schemas/DailySummaryByTerminal"},"type":"array","title":"By Terminal"},"by_payment_method":{"items":{"$ref":"#/components/schemas/DailySummaryByPaymentMethod"},"type":"array","title":"By Payment Method"},"by_operator":{"items":{"$ref":"#/components/schemas/DailySummaryByOperator"},"type":"array","title":"By Operator"}},"type":"object","required":["date","tenant_id","total_transactions","total_revenue","by_terminal","by_payment_method","by_operator"],"title":"DailySummaryResponse"},"DashboardCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"slug":{"type":"string","maxLength":50,"pattern":"^[a-z0-9][a-z0-9_-]*$","title":"Slug"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"layout":{"type":"string","title":"Layout","description":"JSON array of widget definitions","default":"[]"},"is_default":{"type":"boolean","title":"Is Default","default":false},"created_by":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Created By"}},"type":"object","required":["name","slug"],"title":"DashboardCreate"},"DashboardDataResponse":{"properties":{"dashboard_id":{"type":"integer","title":"Dashboard Id"},"dashboard_name":{"type":"string","title":"Dashboard Name"},"widgets":{"items":{"$ref":"#/components/schemas/WidgetData"},"type":"array","title":"Widgets"}},"type":"object","required":["dashboard_id","dashboard_name","widgets"],"title":"DashboardDataResponse"},"DashboardListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DashboardResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"DashboardListResponse"},"DashboardResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"layout":{"type":"string","title":"Layout"},"is_default":{"type":"boolean","title":"Is Default"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","name","slug","description","layout","is_default","created_by","created_at","updated_at"],"title":"DashboardResponse"},"DashboardStats":{"properties":{"total_outstanding":{"type":"number","title":"Total Outstanding"},"total_cases":{"type":"integer","title":"Total Cases"},"cases_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Cases By Status"},"aging_buckets":{"items":{"$ref":"#/components/schemas/AgingBucket"},"type":"array","title":"Aging Buckets"}},"type":"object","required":["total_outstanding","total_cases","cases_by_status","aging_buckets"],"title":"DashboardStats"},"DashboardUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"layout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layout","description":"JSON array of widget definitions"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"DashboardUpdate"},"DataExportRequest":{"properties":{"tables":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Tables","description":"Table names to export, e.g. ['invoices', 'payments']"},"format":{"$ref":"#/components/schemas/OutputFormat","default":"csv"},"date_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"},"date_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},"type":"object","required":["tables"],"title":"DataExportRequest","description":"Request to export raw data tables for BI tool import."},"DataExportResponse":{"properties":{"table":{"type":"string","title":"Table"},"row_count":{"type":"integer","title":"Row Count"},"file_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Reference"},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data","description":"Inline data (small exports)"}},"type":"object","required":["table","row_count"],"title":"DataExportResponse"},"DataSessionIngest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"source":{"$ref":"#/components/schemas/DataSessionSource","default":"api"},"source_device":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Source Device"},"usage_type":{"type":"string","maxLength":30,"title":"Usage Type","default":"data"},"bytes_in":{"type":"integer","minimum":0.0,"title":"Bytes In","default":0},"bytes_out":{"type":"integer","minimum":0.0,"title":"Bytes Out","default":0},"session_time_sec":{"type":"integer","minimum":0.0,"title":"Session Time Sec","default":0},"voice_minutes":{"type":"integer","minimum":0.0,"title":"Voice Minutes","default":0},"sms_count":{"type":"integer","minimum":0.0,"title":"Sms Count","default":0},"custom_quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Custom Quantity"},"custom_unit":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Custom Unit"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"}},"type":"object","required":["customer_id","period_start","period_end"],"title":"DataSessionIngest","description":"Ingest a single data session via mediation."},"DataSessionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"source":{"type":"string","title":"Source"},"source_device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Device"},"usage_type":{"type":"string","title":"Usage Type"},"bytes_in":{"type":"integer","title":"Bytes In"},"bytes_out":{"type":"integer","title":"Bytes Out"},"session_time_sec":{"type":"integer","title":"Session Time Sec"},"voice_minutes":{"type":"integer","title":"Voice Minutes"},"sms_count":{"type":"integer","title":"Sms Count"},"custom_quantity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Quantity"},"custom_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Unit"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"rated":{"type":"boolean","title":"Rated"},"mediation_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mediation Job Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","subscription_id","source","source_device","usage_type","bytes_in","bytes_out","session_time_sec","voice_minutes","sms_count","custom_quantity","custom_unit","period_start","period_end","rated","mediation_job_id","created_at"],"title":"DataSessionResponse","description":"Full data session with all fields."},"DataSessionSource":{"type":"string","enum":["radius","cdr","api","manual","netconf"],"title":"DataSessionSource"},"DemandForecastRequest":{"properties":{"target_id":{"type":"string","maxLength":100,"title":"Target Id","description":"Commodity ID or plan ID to forecast demand for","examples":["plan-basic-100"]}},"type":"object","required":["target_id"],"title":"DemandForecastRequest"},"DeviceBindingMode":{"type":"string","enum":["first_device_wins","first_n_wins","unrestricted"],"title":"DeviceBindingMode","description":"How a pass binds to device MAC addresses."},"DeviceRegister":{"properties":{"hostname":{"type":"string","title":"Hostname","examples":["jnpr-kgl-core-01"]},"mgmt_ip":{"type":"string","title":"Mgmt Ip","examples":["10.0.0.1"]},"vendor":{"$ref":"#/components/schemas/Vendor"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","examples":["vMX","MX204","SRX345"]},"site":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site","examples":["Kigali-DC1"]},"country":{"type":"string","title":"Country","default":"RW"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"port":{"type":"integer","title":"Port","default":830},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["hostname","mgmt_ip","vendor","username","password"],"title":"DeviceRegister"},"DeviceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"hostname":{"type":"string","title":"Hostname"},"mgmt_ip":{"type":"string","title":"Mgmt Ip"},"vendor":{"$ref":"#/components/schemas/Vendor"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"site":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site"},"country":{"type":"string","title":"Country"},"port":{"type":"integer","title":"Port"},"status":{"$ref":"#/components/schemas/DeviceStatus"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_contacted":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Contacted"}},"type":"object","required":["id","hostname","mgmt_ip","vendor","model","site","country","port","status","notes","created_at","last_contacted"],"title":"DeviceResponse"},"DeviceStatus":{"type":"string","enum":["active","maintenance","decommissioned"],"title":"DeviceStatus"},"DeviceUpdate":{"properties":{"hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"mgmt_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mgmt Ip"},"vendor":{"anyOf":[{"$ref":"#/components/schemas/Vendor"},{"type":"null"}]},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"site":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"status":{"anyOf":[{"$ref":"#/components/schemas/DeviceStatus"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"DeviceUpdate"},"DisplayMetadataItem":{"properties":{"id":{"type":"integer","title":"Id"},"scope":{"type":"string","title":"Scope"},"code":{"type":"string","title":"Code"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","scope","code","created_at","updated_at"],"title":"DisplayMetadataItem"},"DisplayMetadataItemUpsert":{"properties":{"code":{"type":"string","maxLength":60,"title":"Code"},"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"},"color":{"anyOf":[{"type":"string","maxLength":7},{"type":"null"}],"title":"Color"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code"],"title":"DisplayMetadataItemUpsert"},"DisplayMetadataUpsert":{"properties":{"scope":{"type":"string","maxLength":40,"title":"Scope"},"items":{"items":{"$ref":"#/components/schemas/DisplayMetadataItemUpsert"},"type":"array","title":"Items"}},"type":"object","required":["scope","items"],"title":"DisplayMetadataUpsert","description":"Bulk-upsert payload: clients send the entire scope at once."},"DocumentType":{"type":"string","enum":["national_id","passport","drivers_license","proof_of_address","business_registration","tax_certificate","articles_of_incorporation","board_resolution","authorized_signatory_id","operator_license","utility_bill","bank_statement","other"],"title":"DocumentType"},"DunningPolicyCreate":{"properties":{"name":{"type":"string","maxLength":120,"title":"Name"},"is_default":{"type":"boolean","title":"Is Default","default":false},"steps":{"items":{"$ref":"#/components/schemas/DunningStepSchema"},"type":"array","title":"Steps"}},"type":"object","required":["name","steps"],"title":"DunningPolicyCreate"},"DunningPolicyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"is_default":{"type":"boolean","title":"Is Default"},"steps":{"type":"string","title":"Steps"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","name","is_default","steps","created_at"],"title":"DunningPolicyResponse"},"DunningPolicyUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"},"steps":{"anyOf":[{"items":{"$ref":"#/components/schemas/DunningStepSchema"},"type":"array"},{"type":"null"}],"title":"Steps"}},"type":"object","title":"DunningPolicyUpdate"},"DunningStepSchema":{"properties":{"day":{"type":"integer","title":"Day"},"action":{"$ref":"#/components/schemas/ActionType"},"template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"},"level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Level"}},"type":"object","required":["day","action"],"title":"DunningStepSchema"},"EmbedConfigResponse":{"properties":{"connection_id":{"type":"integer","title":"Connection Id"},"platform":{"type":"string","title":"Platform"},"embed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embed Url"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["connection_id","platform","config","is_active"],"title":"EmbedConfigResponse","description":"Resolved embed configuration for a BI connection."},"EnterpriseAccountCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"account_name":{"type":"string","maxLength":200,"title":"Account Name"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"max_sims":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Max Sims","default":100},"billing_mode":{"type":"string","title":"Billing Mode","default":"consolidated"},"volume_discount_pct":{"anyOf":[{"type":"number","maximum":50.0,"minimum":0.0},{"type":"null"}],"title":"Volume Discount Pct"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["customer_id","account_name"],"title":"EnterpriseAccountCreate"},"EnterpriseAccountResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"account_name":{"type":"string","title":"Account Name"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"max_sims":{"type":"integer","title":"Max Sims"},"active_sims":{"type":"integer","title":"Active Sims"},"billing_mode":{"type":"string","title":"Billing Mode"},"volume_discount_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume Discount Pct"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","account_name","plan_id","max_sims","active_sims","billing_mode","volume_discount_pct","status","created_at"],"title":"EnterpriseAccountResponse"},"EnterpriseSIMResponse":{"properties":{"id":{"type":"integer","title":"Id"},"iccid":{"type":"string","title":"Iccid"},"imsi":{"type":"string","title":"Imsi"},"msisdn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msisdn"},"status":{"type":"string","title":"Status"},"employee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Name"},"employee_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Id"},"cost_center":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cost Center"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"}},"type":"object","required":["id","iccid","imsi","msisdn","status","employee_name","employee_id","cost_center","department","activated_at"],"title":"EnterpriseSIMResponse"},"EnterpriseUserCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":"viewer"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"can_manage_sims":{"type":"boolean","title":"Can Manage Sims","default":false},"can_view_billing":{"type":"boolean","title":"Can View Billing","default":true},"can_create_users":{"type":"boolean","title":"Can Create Users","default":false}},"type":"object","required":["customer_id","email","password","name"],"title":"EnterpriseUserCreate"},"EnterpriseUserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"can_manage_sims":{"type":"boolean","title":"Can Manage Sims"},"can_view_billing":{"type":"boolean","title":"Can View Billing"},"can_create_users":{"type":"boolean","title":"Can Create Users"},"is_active":{"type":"boolean","title":"Is Active"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","email","name","role","department","can_manage_sims","can_view_billing","can_create_users","is_active","created_by","created_at"],"title":"EnterpriseUserResponse"},"EntitlementCancel":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"EntitlementCancel"},"EntitlementCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"service_code":{"type":"string","maxLength":40,"title":"Service Code"},"quantity":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity","default":"1"},"price_override":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Override"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"start_date":{"type":"string","format":"date-time","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"recurrence":{"type":"string","maxLength":20,"title":"Recurrence","default":"one_time"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"ordered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ordered By"}},"type":"object","required":["customer_id","service_code","start_date"],"title":"EntitlementCreate"},"EntitlementListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EntitlementResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"EntitlementListResponse"},"EntitlementResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"service_code":{"type":"string","title":"Service Code"},"quantity":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Quantity"},"price_override":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price Override"},"currency":{"type":"string","title":"Currency"},"start_date":{"type":"string","format":"date-time","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"recurrence":{"type":"string","title":"Recurrence"},"status":{"type":"string","title":"Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"ordered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ordered By"},"ordered_at":{"type":"string","format":"date-time","title":"Ordered At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","subscription_id","service_code","quantity","price_override","currency","start_date","end_date","recurrence","status","notes","ordered_by","ordered_at","cancelled_at","created_at","updated_at"],"title":"EntitlementResponse"},"ExportBillableItemsRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"}},"type":"object","required":["customer_id","period_start","period_end"],"title":"ExportBillableItemsRequest"},"ExportFormat":{"type":"string","enum":["csv","json"],"title":"ExportFormat"},"FailRequest":{"properties":{"error":{"type":"string","title":"Error"}},"type":"object","required":["error"],"title":"FailRequest"},"FaqCategoryCount":{"properties":{"category":{"type":"string","title":"Category"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["category","count"],"title":"FaqCategoryCount"},"FaqCreate":{"properties":{"category":{"type":"string","title":"Category"},"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"},"tags":{"type":"string","title":"Tags","default":""},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_published":{"type":"boolean","title":"Is Published","default":true}},"type":"object","required":["category","question","answer"],"title":"FaqCreate"},"FaqResponse":{"properties":{"id":{"type":"integer","title":"Id"},"category":{"type":"string","title":"Category"},"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"},"tags":{"type":"string","title":"Tags"},"sort_order":{"type":"integer","title":"Sort Order"},"is_published":{"type":"boolean","title":"Is Published"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","category","question","answer","tags","sort_order","is_published","created_at","updated_at"],"title":"FaqResponse"},"FaqUpdate":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Answer"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"is_published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Published"}},"type":"object","title":"FaqUpdate"},"GatewayBalanceResponse":{"properties":{"balance":{"type":"number","title":"Balance"},"currency":{"type":"string","title":"Currency"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["balance","currency"],"title":"GatewayBalanceResponse"},"GatewayConfigCreate":{"properties":{"gateway_type":{"type":"string","title":"Gateway Type"},"use_platform":{"type":"boolean","title":"Use Platform","default":true},"provider":{"type":"string","title":"Provider","default":""},"config":{"additionalProperties":true,"type":"object","title":"Config","default":{}}},"type":"object","required":["gateway_type"],"title":"GatewayConfigCreate"},"GatewayInitiateRequest":{"properties":{"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"method":{"$ref":"#/components/schemas/GatewayMethod"},"phone_number":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone Number"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"description":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Description"}},"type":"object","required":["amount","customer_id","method"],"title":"GatewayInitiateRequest"},"GatewayInitiateResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"provider":{"type":"string","title":"Provider"},"provider_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Reference"},"status":{"type":"string","title":"Status"},"payment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Id"},"payment_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Number"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"}},"type":"object","required":["success","provider","provider_reference","status"],"title":"GatewayInitiateResponse"},"GatewayMethod":{"type":"string","enum":["momo","stripe","cash"],"title":"GatewayMethod"},"GatewayWebhookResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"provider":{"type":"string","title":"Provider"},"provider_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Reference"},"status":{"type":"string","title":"Status"},"payment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Id"}},"type":"object","required":["success","provider","provider_reference","status"],"title":"GatewayWebhookResponse"},"GenerateInvoiceRequest":{"properties":{"customer_id":{"type":"string","title":"Customer Id"}},"type":"object","required":["customer_id"],"title":"GenerateInvoiceRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InsightListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InsightResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"InsightListResponse"},"InsightMarkActioned":{"properties":{"insight_ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Insight Ids"}},"type":"object","required":["insight_ids"],"title":"InsightMarkActioned"},"InsightMarkRead":{"properties":{"insight_ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Insight Ids"}},"type":"object","required":["insight_ids"],"title":"InsightMarkRead"},"InsightResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"insight_type":{"type":"string","title":"Insight Type"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"severity":{"type":"string","title":"Severity"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"is_read":{"type":"boolean","title":"Is Read"},"is_actioned":{"type":"boolean","title":"Is Actioned"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","insight_type","title","description","severity","entity_type","entity_id","data","is_read","is_actioned","created_at"],"title":"InsightResponse"},"InsightType":{"type":"string","enum":["trend","anomaly","recommendation","alert","forecast"],"title":"InsightType"},"IntegrationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"integration_type":{"type":"string","title":"Integration Type"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","integration_type","created_at","updated_at"],"title":"IntegrationResponse"},"IntegrationUpsert":{"properties":{"integration_type":{"type":"string","maxLength":40,"title":"Integration Type"},"display_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Display Name"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["integration_type"],"title":"IntegrationUpsert"},"InterfaceConfigRequest":{"properties":{"device":{"type":"string","title":"Device","description":"Hostname or mgmt IP of registered device"},"interface":{"type":"string","title":"Interface","examples":["ge-0/0/0"]},"description":{"type":"string","title":"Description"},"vlan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vlan Id"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"}},"type":"object","required":["device","interface","description"],"title":"InterfaceConfigRequest"},"InterfaceStatsRequest":{"properties":{"device":{"type":"string","title":"Device","description":"Hostname or mgmt IP of registered device"},"interface":{"type":"string","title":"Interface"}},"type":"object","required":["device","interface"],"title":"InterfaceStatsRequest"},"InterfaceStatsResponse":{"properties":{"interface":{"type":"string","title":"Interface"},"admin_status":{"type":"string","title":"Admin Status"},"oper_status":{"type":"string","title":"Oper Status"},"input_bytes":{"type":"integer","title":"Input Bytes"},"output_bytes":{"type":"integer","title":"Output Bytes"},"input_packets":{"type":"integer","title":"Input Packets","default":0},"output_packets":{"type":"integer","title":"Output Packets","default":0},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["interface","admin_status","oper_status","input_bytes","output_bytes"],"title":"InterfaceStatsResponse"},"InvoiceCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"invoice_type":{"$ref":"#/components/schemas/InvoiceType","default":"standard"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"tax_id":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Tax Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"payment_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Instructions"},"billing_address_snapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address Snapshot"},"related_invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Related Invoice Id"},"lines":{"items":{"$ref":"#/components/schemas/InvoiceLineCreate"},"type":"array","title":"Lines"}},"type":"object","required":["customer_id","period_start","period_end"],"title":"InvoiceCreate"},"InvoiceDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"invoice_number":{"type":"string","title":"Invoice Number"},"invoice_type":{"type":"string","title":"Invoice Type"},"status":{"type":"string","title":"Status"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Subtotal"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"discount_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"amount_paid":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount Paid"},"balance_due":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance Due"},"currency":{"type":"string","title":"Currency"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"payment_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Instructions"},"billing_address_snapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address Snapshot"},"related_invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Related Invoice Id"},"void_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Reason"},"source":{"type":"string","title":"Source","default":"sigtel"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"lines":{"items":{"$ref":"#/components/schemas/InvoiceLineResponse"},"type":"array","title":"Lines","default":[]},"tax_breakdown":{"items":{"$ref":"#/components/schemas/TaxBreakdownItem"},"type":"array","title":"Tax Breakdown","default":[]}},"type":"object","required":["id","tenant_id","customer_id","invoice_number","invoice_type","status","period_start","period_end","subtotal","tax_amount","discount_amount","total_amount","amount_paid","balance_due","currency","due_date","paid_at","tax_id","notes","payment_instructions","billing_address_snapshot","related_invoice_id","void_reason","created_at","updated_at"],"title":"InvoiceDetailResponse"},"InvoiceFromChargesResponse":{"properties":{"id":{"type":"integer","title":"Id"},"invoice_number":{"type":"string","title":"Invoice Number"},"customer_id":{"type":"string","title":"Customer Id"},"line_items":{"type":"integer","title":"Line Items"},"subtotal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Subtotal"},"tax":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tax"},"tax_breakdown":{"anyOf":[{"items":{"$ref":"#/components/schemas/TaxBreakdownItem"},"type":"array"},{"type":"null"}],"title":"Tax Breakdown"},"total":{"type":"number","title":"Total"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","invoice_number","customer_id","line_items","total","currency","status"],"title":"InvoiceFromChargesResponse"},"InvoiceLineCreate":{"properties":{"description":{"type":"string","maxLength":300,"title":"Description"},"category":{"type":"string","maxLength":30,"title":"Category","default":"other"},"quantity":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity","default":"1"},"unit":{"$ref":"#/components/schemas/LineUnit","default":"unit"},"unit_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Unit Price","default":"0"},"discount_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Discount Percent","default":"0"},"tax_rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Tax Rate Percent","default":"0"},"reference_type":{"anyOf":[{"$ref":"#/components/schemas/sigcore__bss__billing__schemas__ReferenceType"},{"type":"null"}]},"reference_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reference Id"}},"type":"object","required":["description"],"title":"InvoiceLineCreate"},"InvoiceLineResponse":{"properties":{"id":{"type":"integer","title":"Id"},"line_number":{"type":"integer","title":"Line Number"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category","default":"other"},"quantity":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"unit_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Unit Price"},"discount_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Percent"},"tax_rate_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Rate Percent"},"line_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Line Total"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total"},"reference_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reference Id"},"tier_breakdown":{"items":{"$ref":"#/components/schemas/TierBreakdownItem"},"type":"array","title":"Tier Breakdown"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","line_number","description","quantity","unit","unit_price","discount_percent","tax_rate_percent","line_total","tax_amount","total","reference_type","reference_id","created_at"],"title":"InvoiceLineResponse"},"InvoiceListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvoiceResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"InvoiceListResponse"},"InvoiceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"invoice_number":{"type":"string","title":"Invoice Number"},"invoice_type":{"type":"string","title":"Invoice Type"},"status":{"type":"string","title":"Status"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Subtotal"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"discount_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"amount_paid":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount Paid"},"balance_due":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance Due"},"currency":{"type":"string","title":"Currency"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"payment_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Instructions"},"billing_address_snapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address Snapshot"},"related_invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Related Invoice Id"},"void_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Void Reason"},"source":{"type":"string","title":"Source","default":"sigtel"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","invoice_number","invoice_type","status","period_start","period_end","subtotal","tax_amount","discount_amount","total_amount","amount_paid","balance_due","currency","due_date","paid_at","tax_id","notes","payment_instructions","billing_address_snapshot","related_invoice_id","void_reason","created_at","updated_at"],"title":"InvoiceResponse"},"InvoiceType":{"type":"string","enum":["standard","credit_note","debit_note","proforma"],"title":"InvoiceType"},"IssueInvoiceRequest":{"properties":{"payment_terms_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Payment Terms Days","default":30}},"type":"object","title":"IssueInvoiceRequest"},"KPIResponse":{"properties":{"total_customers":{"type":"integer","title":"Total Customers","default":0},"new_customers_this_month":{"type":"integer","title":"New Customers This Month","default":0},"active_subscriptions":{"type":"integer","title":"Active Subscriptions","default":0},"churn_rate":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Churn Rate","default":"0.0000"},"monthly_revenue":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Monthly Revenue","default":"0.0000"},"outstanding_invoices":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Outstanding Invoices","default":"0.0000"},"computed_at":{"type":"string","format":"date-time","title":"Computed At"}},"type":"object","required":["computed_at"],"title":"KPIResponse"},"KYCComplianceResponse":{"properties":{"compliant":{"type":"boolean","title":"Compliant"},"policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy"},"enforcement":{"type":"string","title":"Enforcement","default":"none"},"required_documents":{"items":{"type":"string"},"type":"array","title":"Required Documents","default":[]},"submitted_documents":{"items":{"type":"string"},"type":"array","title":"Submitted Documents","default":[]},"verified_documents":{"items":{"type":"string"},"type":"array","title":"Verified Documents","default":[]},"missing_documents":{"items":{"type":"string"},"type":"array","title":"Missing Documents","default":[]},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["compliant"],"title":"KYCComplianceResponse"},"KYCDocumentCreate":{"properties":{"document_type":{"$ref":"#/components/schemas/DocumentType"},"document_number":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Document Number"},"issuing_country":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Issuing Country"},"issue_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issue Date"},"expiry_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiry Date"},"file_reference":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"File Reference"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["document_type"],"title":"KYCDocumentCreate"},"KYCDocumentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"document_type":{"type":"string","title":"Document Type"},"document_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Number"},"issuing_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issuing Country"},"issue_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issue Date"},"expiry_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiry Date"},"status":{"type":"string","title":"Status"},"verified_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified By"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"file_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Reference"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","document_type","document_number","issuing_country","issue_date","expiry_date","status","verified_by","verified_at","file_reference","notes","created_at"],"title":"KYCDocumentResponse"},"KYCPolicyCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"},"customer_type":{"type":"string","pattern":"^(consumer|enterprise|wholesale)$","title":"Customer Type"},"required_documents":{"items":{"type":"string"},"type":"array","title":"Required Documents"},"min_documents":{"type":"integer","minimum":1.0,"title":"Min Documents","default":1},"auto_verify":{"type":"boolean","title":"Auto Verify","default":false},"enforcement":{"type":"string","pattern":"^(block|warn|none)$","title":"Enforcement","default":"block"},"applies_to":{"type":"string","pattern":"^(all|broadband|mobile|sim_only)$","title":"Applies To","default":"all"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","country","customer_type"],"title":"KYCPolicyCreate"},"KYCPolicyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"country":{"type":"string","title":"Country"},"customer_type":{"type":"string","title":"Customer Type"},"required_documents":{"items":{"type":"string"},"type":"array","title":"Required Documents"},"min_documents":{"type":"integer","title":"Min Documents"},"auto_verify":{"type":"boolean","title":"Auto Verify"},"enforcement":{"type":"string","title":"Enforcement"},"applies_to":{"type":"string","title":"Applies To"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","country","customer_type","required_documents","min_documents","auto_verify","enforcement","applies_to","notes","is_active","created_at"],"title":"KYCPolicyResponse"},"KYCVerifyRequest":{"properties":{"verified_by":{"type":"string","maxLength":100,"title":"Verified By"},"status":{"type":"string","pattern":"^(verified|rejected)$","title":"Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["verified_by","status"],"title":"KYCVerifyRequest"},"LifecycleStatus":{"type":"string","enum":["prospect","onboarding","active","suspended","terminated","churned"],"title":"LifecycleStatus"},"LineItemCreate":{"properties":{"item_type":{"$ref":"#/components/schemas/LineItemType","default":"product"},"item_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Item Code"},"description":{"type":"string","maxLength":300,"title":"Description"},"quantity":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity","default":"1"},"unit_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Unit Price"},"discount_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Discount Percent","default":"0"},"tax_rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Tax Rate Percent","default":"0"},"reference_type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Reference Id"}},"type":"object","required":["description","unit_price"],"title":"LineItemCreate"},"LineItemResponse":{"properties":{"id":{"type":"integer","title":"Id"},"line_number":{"type":"integer","title":"Line Number"},"item_type":{"type":"string","title":"Item Type"},"item_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Code"},"description":{"type":"string","title":"Description"},"quantity":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Quantity"},"unit_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Unit Price"},"discount_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Percent"},"tax_rate_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Rate Percent"},"line_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Line Total"},"reference_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","line_number","item_type","item_code","description","quantity","unit_price","discount_percent","tax_rate_percent","line_total","reference_type","reference_id","created_at"],"title":"LineItemResponse"},"LineItemType":{"type":"string","enum":["product","service","sim_card","voucher","topup","subscription","custom"],"title":"LineItemType"},"LineUnit":{"type":"string","enum":["month","hour","one_time","MB","GB","min","msg","Mbps","Mbps_burst","device_day","site","day","session","visit","unit"],"title":"LineUnit"},"LowStockAlert":{"properties":{"id":{"type":"integer","title":"Id"},"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"in_stock":{"type":"integer","title":"In Stock"},"low_stock_threshold":{"type":"integer","title":"Low Stock Threshold"}},"type":"object","required":["id","sku","name","in_stock","low_stock_threshold"],"title":"LowStockAlert"},"ManualChargeRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"service_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Service Code"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"plan_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Plan Name"},"charge_type":{"type":"string","title":"Charge Type","default":"one_time"},"quantity":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity","default":"1"},"unit":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Unit"}},"type":"object","required":["customer_id"],"title":"ManualChargeRequest","description":"Inject a one-time charge.\n\nTwo ways to call:\n  A) catalog-driven: pass `service_code` (and optional `quantity`); the\n     service will look up name/description/unit/unit_price from the\n     pro-services catalog. This is the recommended path — keeps line\n     items consistent across invoices.\n  B) free-form: pass description+amount directly (fallback for ad-hoc)."},"MarkDeliveredRequest":{"properties":{"provider_message_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Provider Message Id"}},"type":"object","title":"MarkDeliveredRequest"},"MarkFailedRequest":{"properties":{"failure_reason":{"type":"string","maxLength":500,"title":"Failure Reason"}},"type":"object","required":["failure_reason"],"title":"MarkFailedRequest"},"MediationJobResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"source":{"type":"string","title":"Source"},"source_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source File"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"},"status":{"type":"string","title":"Status"},"records_total":{"type":"integer","title":"Records Total"},"records_processed":{"type":"integer","title":"Records Processed"},"records_failed":{"type":"integer","title":"Records Failed"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","source","source_file","format","status","records_total","records_processed","records_failed","error_message","started_at","completed_at","created_at"],"title":"MediationJobResponse","description":"Mediation job detail."},"MediationStats":{"properties":{"jobs_total":{"type":"integer","title":"Jobs Total","default":0},"jobs_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Jobs By Status"},"items_total":{"type":"integer","title":"Items Total","default":0},"items_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Items By Status"},"items_by_event_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"Items By Event Type"}},"type":"object","title":"MediationStats","description":"Summary of mediation jobs and chargeable items by status."},"MethodType":{"type":"string","enum":["bank_transfer","mobile_money","credit_card","debit_card","cash","cheque","crypto","prepaid_balance","other"],"title":"MethodType"},"MetricCategory":{"type":"string","enum":["customers","revenue","operations","network","marketplace"],"title":"MetricCategory"},"MetricCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name","examples":["total_customers"]},"category":{"$ref":"#/components/schemas/MetricCategory"},"value":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,11}|(?=[\\d.]{1,16}0*$)\\d{0,11}\\.\\d{0,4}0*$)"}],"title":"Value"},"previous_value":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,11}|(?=[\\d.]{1,16}0*$)\\d{0,11}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Previous Value"},"unit":{"$ref":"#/components/schemas/MetricUnit"},"currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Currency","examples":["USD"]},"period":{"$ref":"#/components/schemas/MetricPeriod"}},"type":"object","required":["name","category","value","unit","period"],"title":"MetricCreate"},"MetricHistoryResponse":{"properties":{"metric_name":{"type":"string","title":"Metric Name"},"snapshots":{"items":{"$ref":"#/components/schemas/SnapshotResponse"},"type":"array","title":"Snapshots"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["metric_name","snapshots","total"],"title":"MetricHistoryResponse"},"MetricListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MetricWithTrend"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"MetricListResponse"},"MetricPeriod":{"type":"string","enum":["realtime","daily","weekly","monthly","quarterly","annual"],"title":"MetricPeriod"},"MetricUnit":{"type":"string","enum":["count","currency","percent","bytes","minutes"],"title":"MetricUnit"},"MetricUpdate":{"properties":{"value":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,11}|(?=[\\d.]{1,16}0*$)\\d{0,11}\\.\\d{0,4}0*$)"}],"title":"Value"},"currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Currency"},"period":{"anyOf":[{"$ref":"#/components/schemas/MetricPeriod"},{"type":"null"}]}},"type":"object","required":["value"],"title":"MetricUpdate"},"MetricWithTrend":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"value":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Value"},"previous_value":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Previous Value"},"unit":{"type":"string","title":"Unit"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"period":{"type":"string","title":"Period"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"trend_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trend Percent","description":"Percentage change vs previous value"},"trend_direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trend Direction","description":"up, down, or flat"}},"type":"object","required":["id","tenant_id","name","category","value","previous_value","unit","currency","period","recorded_at","created_at"],"title":"MetricWithTrend"},"MobileSubscriberResponse":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"sim_id":{"type":"integer","title":"Sim Id"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"status":{"type":"string","title":"Status"},"provisioned_in_hss":{"type":"string","title":"Provisioned In Hss"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","customer_id","sim_id","plan_id","status","provisioned_in_hss","created_at"],"title":"MobileSubscriberResponse"},"ModelStatus":{"type":"string","enum":["draft","training","active","deprecated"],"title":"ModelStatus"},"ModelType":{"type":"string","enum":["churn_prediction","demand_forecast","anomaly_detection","recommendation","classification","regression"],"title":"ModelType"},"NotificationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotificationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"NotificationListResponse"},"NotificationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id"},"channel":{"type":"string","title":"Channel"},"recipient":{"type":"string","title":"Recipient"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"type":"string","title":"Body"},"status":{"type":"string","title":"Status"},"priority":{"type":"string","title":"Priority"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"failed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Failed At"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"retry_count":{"type":"integer","title":"Retry Count"},"max_retries":{"type":"integer","title":"Max Retries"},"reference_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Id"},"provider_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Message Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","template_id","channel","recipient","subject","body","status","priority","sent_at","delivered_at","failed_at","failure_reason","retry_count","max_retries","reference_type","reference_id","provider_message_id","created_at"],"title":"NotificationResponse"},"OutboxEvent":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"event_type":{"type":"string","title":"Event Type"},"aggregate_type":{"type":"string","title":"Aggregate Type"},"aggregate_id":{"type":"string","title":"Aggregate Id"},"payload_json":{"type":"string","title":"Payload Json"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"dispatch_attempts":{"type":"integer","title":"Dispatch Attempts"}},"type":"object","required":["id","tenant_id","event_type","aggregate_type","aggregate_id","payload_json","status","created_at","dispatch_attempts"],"title":"OutboxEvent"},"OutboxListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OutboxEvent"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"OutboxListResponse"},"OutputFormat":{"type":"string","enum":["json","csv","pdf","xlsx"],"title":"OutputFormat"},"PayInvoiceRequest":{"properties":{"invoice_id":{"type":"integer","title":"Invoice Id"},"provider":{"type":"string","maxLength":20,"title":"Provider","default":"momo"}},"type":"object","required":["invoice_id"],"title":"PayInvoiceRequest"},"PayInvoiceResponse":{"properties":{"status":{"type":"string","title":"Status"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"payment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Id"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"}},"type":"object","required":["status"],"title":"PayInvoiceResponse"},"PaymentCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"payment_method_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Method Id"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"payment_type":{"$ref":"#/components/schemas/PaymentType"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"provider_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Provider Reference"},"provider_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Response"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Created By"}},"type":"object","required":["customer_id","payment_type","amount"],"title":"PaymentCreate"},"PaymentMethod":{"type":"string","enum":["cash","card","mobile_money","prepaid_balance","mixed"],"title":"PaymentMethod"},"PaymentMethodCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"method_type":{"$ref":"#/components/schemas/MethodType"},"provider":{"$ref":"#/components/schemas/Provider"},"account_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Account Reference"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["customer_id","method_type","provider"],"title":"PaymentMethodCreate"},"PaymentMethodResponse":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"method_type":{"type":"string","title":"Method Type"},"provider":{"type":"string","title":"Provider"},"account_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Reference"},"is_default":{"type":"boolean","title":"Is Default"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","customer_id","method_type","provider","account_reference","is_default","is_active","created_at"],"title":"PaymentMethodResponse"},"PaymentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"payment_number":{"type":"string","title":"Payment Number"},"payment_method_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Method Id"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"payment_type":{"type":"string","title":"Payment Type"},"status":{"type":"string","title":"Status"},"amount":{"type":"number","title":"Amount"},"currency":{"type":"string","title":"Currency"},"provider_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Reference"},"provider_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Response"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","customer_id","payment_number","payment_method_id","invoice_id","payment_type","status","amount","currency","provider_reference","provider_response","failure_reason","processed_at","notes","created_by","created_at"],"title":"PaymentResponse"},"PaymentStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"payment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Id"}},"type":"object","required":["status"],"title":"PaymentStatusResponse"},"PaymentType":{"type":"string","enum":["invoice_payment","prepaid_topup","refund","credit","write_off"],"title":"PaymentType"},"PlanCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"plan_type":{"type":"string","maxLength":50,"title":"Plan Type"},"features":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Features","description":"JSON string of key-value feature pairs, e.g. '{\"speed_down_kbps\": 50000, \"data_cap_mb\": 5120}'"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"},"data_cap_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Cap Mb"},"voice_minutes_included":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Voice Minutes Included"},"sms_included":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sms Included"},"international_calls_enabled":{"type":"boolean","title":"International Calls Enabled","default":false},"international_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"International Rate Per Min"},"overage_voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Voice Rate Per Min"},"overage_sms_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Sms Rate"},"overage_data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Data Rate Per Mb"},"price_monthly":{"type":"number","minimum":0.0,"title":"Price Monthly","description":"Monthly price (backward compat)"},"price_amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Price Amount","description":"Price per billing interval"},"price_currency":{"type":"string","maxLength":3,"title":"Price Currency","default":"USD"},"billing_interval":{"type":"string","title":"Billing Interval","default":"monthly"},"setup_fee":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Setup Fee"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"trial_days":{"type":"integer","minimum":0.0,"title":"Trial Days","default":0},"parent_plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Plan Id"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"}},"type":"object","required":["name","plan_type","price_monthly"],"title":"PlanCreate","description":"Create a new service plan."},"PlanResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plan_type":{"type":"string","title":"Plan Type"},"features":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Features"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"},"data_cap_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Cap Mb"},"voice_minutes_included":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Voice Minutes Included"},"sms_included":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sms Included"},"international_calls_enabled":{"type":"boolean","title":"International Calls Enabled","default":false},"international_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"International Rate Per Min"},"overage_voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Voice Rate Per Min"},"overage_sms_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Sms Rate"},"overage_data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Data Rate Per Mb"},"price_monthly":{"type":"number","title":"Price Monthly"},"price_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Amount"},"price_currency":{"type":"string","title":"Price Currency"},"billing_interval":{"type":"string","title":"Billing Interval"},"setup_fee":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Setup Fee"},"currency":{"type":"string","title":"Currency"},"trial_days":{"type":"integer","title":"Trial Days"},"status":{"type":"string","title":"Status"},"version":{"type":"integer","title":"Version"},"parent_plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Plan Id"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","name","description","plan_type","features","speed_down_kbps","speed_up_kbps","data_cap_mb","voice_minutes_included","sms_included","price_monthly","price_amount","price_currency","billing_interval","setup_fee","currency","trial_days","status","version","parent_plan_id","effective_from","effective_to","created_at","updated_at"],"title":"PlanResponse","description":"Service plan response."},"PlanUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"plan_type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Plan Type"},"features":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Features"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"},"data_cap_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Cap Mb"},"overage_voice_rate_per_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Voice Rate Per Min"},"overage_sms_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Sms Rate"},"overage_data_rate_per_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overage Data Rate Per Mb"},"price_monthly":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Price Monthly"},"price_amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Price Amount"},"price_currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Price Currency"},"billing_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Interval"},"setup_fee":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Setup Fee"},"currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Currency"},"trial_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Trial Days"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"}},"type":"object","title":"PlanUpdate","description":"Update an existing service plan (partial)."},"PlanVisibilityResponse":{"properties":{"id":{"type":"integer","title":"Id"},"partner_id":{"type":"integer","title":"Partner Id"},"plan_id":{"type":"integer","title":"Plan Id"},"wholesale_price":{"type":"number","title":"Wholesale Price"},"currency":{"type":"string","title":"Currency"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","partner_id","plan_id","wholesale_price","currency","is_active"],"title":"PlanVisibilityResponse"},"PlanVisibilityUpsert":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"},"wholesale_price":{"type":"number","title":"Wholesale Price"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["plan_id","wholesale_price","currency"],"title":"PlanVisibilityUpsert"},"PredefinedReport":{"type":"string","enum":["monthly_revenue_by_customer","outstanding_invoices","subscription_summary","usage_summary","payment_summary","collection_aging","tax_summary"],"title":"PredefinedReport"},"PredefinedReportResponse":{"properties":{"report_name":{"type":"string","title":"Report Name"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"row_count":{"type":"integer","title":"Row Count"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"}},"type":"object","required":["report_name","generated_at","row_count","data"],"title":"PredefinedReportResponse"},"PredictionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PredictionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"PredictionListResponse"},"PredictionModelCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name","examples":["churn_predictor"]},"model_type":{"$ref":"#/components/schemas/ModelType"},"target_entity":{"$ref":"#/components/schemas/TargetEntity"},"status":{"$ref":"#/components/schemas/ModelStatus","default":"draft"},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config","description":"JSON model configuration (thresholds, features, parameters)","examples":["{\"threshold\": 0.7, \"features\": [\"days_since_payment\", \"ticket_count\"]}"]},"accuracy":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"},{"type":"null"}],"title":"Accuracy"},"training_data_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Training Data Count"}},"type":"object","required":["name","model_type","target_entity"],"title":"PredictionModelCreate"},"PredictionModelListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PredictionModelResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"PredictionModelListResponse"},"PredictionModelResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"model_type":{"type":"string","title":"Model Type"},"target_entity":{"type":"string","title":"Target Entity"},"status":{"type":"string","title":"Status"},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config"},"accuracy":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Accuracy"},"last_trained_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Trained At"},"training_data_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Training Data Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","name","model_type","target_entity","status","config","accuracy","last_trained_at","training_data_count","created_at","updated_at"],"title":"PredictionModelResponse"},"PredictionModelUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"model_type":{"anyOf":[{"$ref":"#/components/schemas/ModelType"},{"type":"null"}]},"target_entity":{"anyOf":[{"$ref":"#/components/schemas/TargetEntity"},{"type":"null"}]},"status":{"anyOf":[{"$ref":"#/components/schemas/ModelStatus"},{"type":"null"}]},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config"},"accuracy":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"},{"type":"null"}],"title":"Accuracy"},"training_data_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Training Data Count"}},"type":"object","title":"PredictionModelUpdate"},"PredictionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"model_id":{"type":"integer","title":"Model Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"prediction_type":{"type":"string","title":"Prediction Type"},"score":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Score"},"label":{"type":"string","title":"Label"},"confidence":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Confidence"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","model_id","entity_type","entity_id","prediction_type","score","label","confidence","explanation","expires_at","created_at"],"title":"PredictionResponse"},"PredictionType":{"type":"string","enum":["churn_risk","demand_level","anomaly_score","recommendation","forecast"],"title":"PredictionType"},"PreferenceBulkUpdate":{"properties":{"preferences":{"items":{"$ref":"#/components/schemas/PreferenceUpdate"},"type":"array","minItems":1,"title":"Preferences"}},"type":"object","required":["preferences"],"title":"PreferenceBulkUpdate"},"PreferenceChannel":{"type":"string","enum":["sms","email","push"],"title":"PreferenceChannel","description":"Channels that support customer opt-in/out preferences."},"PreferenceListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PreferenceResponse"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"PreferenceListResponse"},"PreferenceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"channel":{"type":"string","title":"Channel"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["id","tenant_id","customer_id","channel","enabled"],"title":"PreferenceResponse"},"PreferenceUpdate":{"properties":{"channel":{"$ref":"#/components/schemas/PreferenceChannel"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["channel","enabled"],"title":"PreferenceUpdate"},"PrepaidBalanceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"balance":{"type":"number","title":"Balance"},"currency":{"type":"string","title":"Currency"},"last_topup_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Topup At"},"last_deduction_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Deduction At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","customer_id","balance","currency","last_topup_at","last_deduction_at","updated_at"],"title":"PrepaidBalanceResponse"},"PrepaidDeductRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"description":{"type":"string","maxLength":300,"title":"Description"},"reference_type":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Reference Type"},"reference_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Reference Id"}},"type":"object","required":["customer_id","amount","description"],"title":"PrepaidDeductRequest"},"PrepaidPackageCreate":{"properties":{"code":{"type":"string","maxLength":40,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"price":{"type":"number","minimum":0.0,"title":"Price"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"time_budget_seconds":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Time Budget Seconds"},"data_budget_bytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Data Budget Bytes"},"validity_days":{"type":"integer","exclusiveMinimum":0.0,"title":"Validity Days","default":30},"validity_clock_anchor":{"$ref":"#/components/schemas/ValidityClockAnchor","default":"at_purchase"},"device_limit":{"type":"integer","exclusiveMinimum":0.0,"title":"Device Limit","default":1},"device_binding_mode":{"$ref":"#/components/schemas/DeviceBindingMode","default":"first_device_wins"},"concurrent_session_limit":{"type":"integer","exclusiveMinimum":0.0,"title":"Concurrent Session Limit","default":1},"bandwidth_down_kbps":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Bandwidth Up Kbps"},"auto_disconnect_on_exhaust":{"type":"boolean","title":"Auto Disconnect On Exhaust","default":true},"is_stackable":{"type":"boolean","title":"Is Stackable","default":true},"is_refundable":{"type":"boolean","title":"Is Refundable","default":false},"is_transferable":{"type":"boolean","title":"Is Transferable","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["code","name","price"],"title":"PrepaidPackageCreate"},"PrepaidPackageOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"number","title":"Price"},"currency":{"type":"string","title":"Currency"},"time_budget_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Budget Seconds"},"data_budget_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Budget Bytes"},"validity_days":{"type":"integer","title":"Validity Days"},"validity_clock_anchor":{"type":"string","title":"Validity Clock Anchor"},"device_limit":{"type":"integer","title":"Device Limit"},"device_binding_mode":{"type":"string","title":"Device Binding Mode"},"concurrent_session_limit":{"type":"integer","title":"Concurrent Session Limit"},"bandwidth_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Up Kbps"},"auto_disconnect_on_exhaust":{"type":"boolean","title":"Auto Disconnect On Exhaust"},"is_stackable":{"type":"boolean","title":"Is Stackable"},"is_refundable":{"type":"boolean","title":"Is Refundable"},"is_transferable":{"type":"boolean","title":"Is Transferable"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","code","name","description","price","currency","time_budget_seconds","data_budget_bytes","validity_days","validity_clock_anchor","device_limit","device_binding_mode","concurrent_session_limit","bandwidth_down_kbps","bandwidth_up_kbps","auto_disconnect_on_exhaust","is_stackable","is_refundable","is_transferable","is_active","created_at","updated_at"],"title":"PrepaidPackageOut"},"PrepaidPackageUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Price"},"currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Currency"},"time_budget_seconds":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Time Budget Seconds"},"data_budget_bytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Data Budget Bytes"},"validity_days":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Validity Days"},"validity_clock_anchor":{"anyOf":[{"$ref":"#/components/schemas/ValidityClockAnchor"},{"type":"null"}]},"device_limit":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Device Limit"},"device_binding_mode":{"anyOf":[{"$ref":"#/components/schemas/DeviceBindingMode"},{"type":"null"}]},"concurrent_session_limit":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Concurrent Session Limit"},"bandwidth_down_kbps":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Bandwidth Up Kbps"},"auto_disconnect_on_exhaust":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Disconnect On Exhaust"},"is_stackable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Stackable"},"is_refundable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Refundable"},"is_transferable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Transferable"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"PrepaidPackageUpdate"},"PrepaidPassAuthRequest":{"properties":{"pass_code":{"type":"string","maxLength":40,"title":"Pass Code"},"password":{"type":"string","maxLength":40,"title":"Password"},"mac_address":{"anyOf":[{"type":"string","maxLength":17},{"type":"null"}],"title":"Mac Address"},"nas_identifier":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Nas Identifier"}},"type":"object","required":["pass_code","password"],"title":"PrepaidPassAuthRequest","description":"Captive-portal / RADIUS authentication request."},"PrepaidPassAuthResponse":{"properties":{"accepted":{"type":"boolean","title":"Accepted"},"pass_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pass Id"},"time_remaining_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Remaining Seconds"},"data_remaining_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Remaining Bytes"},"session_timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Timeout Seconds"},"bandwidth_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Up Kbps"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["accepted"],"title":"PrepaidPassAuthResponse","description":"Captive-portal auth response. RADIUS adapter translates this into\nRFC 2865 Access-Accept / Access-Reject + attributes."},"PrepaidPassDeviceOut":{"properties":{"mac_address":{"type":"string","title":"Mac Address"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"}},"type":"object","required":["mac_address","first_seen_at","last_seen_at"],"title":"PrepaidPassDeviceOut"},"PrepaidPassIssue":{"properties":{"package_code":{"type":"string","maxLength":40,"title":"Package Code"},"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"pass_code":{"anyOf":[{"type":"string","maxLength":40,"minLength":4},{"type":"null"}],"title":"Pass Code"},"password":{"anyOf":[{"type":"string","maxLength":40,"minLength":6},{"type":"null"}],"title":"Password"}},"type":"object","required":["package_code"],"title":"PrepaidPassIssue","description":"Buy / mint a new pass from a catalog package."},"PrepaidPassIssueResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"package_id":{"type":"integer","title":"Package Id"},"pass_code":{"type":"string","title":"Pass Code"},"status":{"type":"string","title":"Status"},"time_budget_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Budget Seconds"},"data_budget_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Budget Bytes"},"validity_days":{"type":"integer","title":"Validity Days"},"validity_clock_anchor":{"type":"string","title":"Validity Clock Anchor"},"device_limit":{"type":"integer","title":"Device Limit"},"device_binding_mode":{"type":"string","title":"Device Binding Mode"},"bandwidth_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Up Kbps"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"first_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Used At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"time_used_seconds":{"type":"integer","title":"Time Used Seconds"},"data_used_bytes":{"type":"integer","title":"Data Used Bytes"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"devices":{"items":{"$ref":"#/components/schemas/PrepaidPassDeviceOut"},"type":"array","title":"Devices","default":[]},"password":{"type":"string","title":"Password"}},"type":"object","required":["id","tenant_id","package_id","pass_code","status","time_budget_seconds","data_budget_bytes","validity_days","validity_clock_anchor","device_limit","device_binding_mode","bandwidth_down_kbps","bandwidth_up_kbps","issued_at","first_used_at","expires_at","time_used_seconds","data_used_bytes","customer_id","password"],"title":"PrepaidPassIssueResponse","description":"Returned at issuance only — includes the plaintext password.\nThe password is never returned again on subsequent reads."},"PrepaidPassOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"package_id":{"type":"integer","title":"Package Id"},"pass_code":{"type":"string","title":"Pass Code"},"status":{"type":"string","title":"Status"},"time_budget_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Budget Seconds"},"data_budget_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Budget Bytes"},"validity_days":{"type":"integer","title":"Validity Days"},"validity_clock_anchor":{"type":"string","title":"Validity Clock Anchor"},"device_limit":{"type":"integer","title":"Device Limit"},"device_binding_mode":{"type":"string","title":"Device Binding Mode"},"bandwidth_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Down Kbps"},"bandwidth_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bandwidth Up Kbps"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"first_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Used At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"time_used_seconds":{"type":"integer","title":"Time Used Seconds"},"data_used_bytes":{"type":"integer","title":"Data Used Bytes"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"devices":{"items":{"$ref":"#/components/schemas/PrepaidPassDeviceOut"},"type":"array","title":"Devices","default":[]}},"type":"object","required":["id","tenant_id","package_id","pass_code","status","time_budget_seconds","data_budget_bytes","validity_days","validity_clock_anchor","device_limit","device_binding_mode","bandwidth_down_kbps","bandwidth_up_kbps","issued_at","first_used_at","expires_at","time_used_seconds","data_used_bytes","customer_id"],"title":"PrepaidPassOut"},"PrepaidPassUsageReport":{"properties":{"pass_code":{"type":"string","maxLength":40,"title":"Pass Code"},"mac_address":{"anyOf":[{"type":"string","maxLength":17},{"type":"null"}],"title":"Mac Address"},"session_time_seconds":{"type":"integer","minimum":0.0,"title":"Session Time Seconds","default":0},"bytes_in":{"type":"integer","minimum":0.0,"title":"Bytes In","default":0},"bytes_out":{"type":"integer","minimum":0.0,"title":"Bytes Out","default":0},"nas_identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nas Identifier"}},"type":"object","required":["pass_code"],"title":"PrepaidPassUsageReport","description":"RADIUS Accounting Interim-Update / Stop reports consumption.\nService decrements the pass's budget and may flip status to exhausted."},"PrepaidTopupRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"payment_method_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Method Id"},"provider_reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Provider Reference"},"description":{"type":"string","maxLength":300,"title":"Description","default":"Prepaid top-up"},"created_by":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Created By"}},"type":"object","required":["customer_id","amount"],"title":"PrepaidTopupRequest"},"PricingShape":{"type":"string","enum":["flat","quantity"],"title":"PricingShape","description":"Does the rate depend on consumed quantity at all?\n\nflat     — no; charge = rate, full stop (subscription fee, one-off dispatch)\nquantity — yes; engine reads usage quantity and applies rate_curve"},"Priority":{"type":"string","enum":["low","normal","high","critical"],"title":"Priority"},"ProServiceCreate":{"properties":{"service_code":{"type":"string","maxLength":50,"minLength":2,"pattern":"^[A-Z0-9_]+$","title":"Service Code"},"name":{"type":"string","maxLength":120,"minLength":2,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"type":"string","title":"Category","default":"professional_services"},"unit":{"type":"string","maxLength":30,"title":"Unit","default":"one_time"},"unit_price":{"type":"number","exclusiveMinimum":0.0,"title":"Unit Price"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["service_code","name","unit_price"],"title":"ProServiceCreate"},"ProServiceOut":{"properties":{"id":{"type":"integer","title":"Id"},"service_code":{"type":"string","title":"Service Code"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"type":"string","title":"Category"},"unit":{"type":"string","title":"Unit"},"unit_price":{"type":"number","title":"Unit Price"},"currency":{"type":"string","title":"Currency"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","service_code","name","category","unit","unit_price","currency","is_active","created_at"],"title":"ProServiceOut"},"ProServiceUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"unit_price":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Unit Price"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ProServiceUpdate"},"ProductCategory":{"type":"string","enum":["hardware","accessory","voucher","sim","subscription","consumable","service","other"],"title":"ProductCategory"},"ProductCreate":{"properties":{"sku":{"type":"string","maxLength":50,"title":"Sku"},"name":{"type":"string","maxLength":200,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"category":{"$ref":"#/components/schemas/ProductCategory","default":"other"},"unit_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Unit Price"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"tax_rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Tax Rate Percent","default":"0"},"in_stock":{"type":"integer","minimum":0.0,"title":"In Stock","default":0},"low_stock_threshold":{"type":"integer","minimum":0.0,"title":"Low Stock Threshold","default":5},"barcode":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Barcode"}},"type":"object","required":["sku","name","unit_price"],"title":"ProductCreate"},"ProductListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProductResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"ProductListResponse"},"ProductResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"type":"string","title":"Category"},"unit_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Unit Price"},"currency":{"type":"string","title":"Currency"},"tax_rate_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Rate Percent"},"in_stock":{"type":"integer","title":"In Stock"},"low_stock_threshold":{"type":"integer","title":"Low Stock Threshold"},"is_active":{"type":"boolean","title":"Is Active"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","sku","name","description","category","unit_price","currency","tax_rate_percent","in_stock","low_stock_threshold","is_active","barcode","created_at","updated_at"],"title":"ProductResponse"},"ProductUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"$ref":"#/components/schemas/ProductCategory"},{"type":"null"}]},"unit_price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Unit Price"},"currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Currency"},"tax_rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Tax Rate Percent"},"low_stock_threshold":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Low Stock Threshold"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"barcode":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Barcode"}},"type":"object","title":"ProductUpdate"},"Provider":{"type":"string","enum":["momo_mtn","mpesa","airtel_money","orange_money","upi","razorpay","paytm","phonepe","stripe","paypal","square","adyen","ach","wire","zelle","bank","cash","cheque","other"],"title":"Provider"},"QueryType":{"type":"string","enum":["sql","aggregation","predefined"],"title":"QueryType"},"QuickSIMSale":{"properties":{"terminal_id":{"type":"integer","title":"Terminal Id"},"operator":{"type":"string","maxLength":200,"title":"Operator"},"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"sim_code":{"type":"string","maxLength":50,"title":"Sim Code"},"description":{"type":"string","maxLength":300,"title":"Description","default":"SIM card activation"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod","default":"cash"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"}},"type":"object","required":["terminal_id","operator","sim_code","amount"],"title":"QuickSIMSale"},"QuickTopup":{"properties":{"terminal_id":{"type":"integer","title":"Terminal Id"},"operator":{"type":"string","maxLength":200,"title":"Operator"},"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod","default":"cash"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"}},"type":"object","required":["terminal_id","operator","customer_id","amount"],"title":"QuickTopup"},"QuickVoucherSale":{"properties":{"terminal_id":{"type":"integer","title":"Terminal Id"},"operator":{"type":"string","maxLength":200,"title":"Operator"},"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"voucher_code":{"type":"string","maxLength":50,"title":"Voucher Code"},"description":{"type":"string","maxLength":300,"title":"Description","default":"Voucher sale"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod","default":"cash"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"}},"type":"object","required":["terminal_id","operator","voucher_code","amount"],"title":"QuickVoucherSale"},"RadiusAcctRequest":{"properties":{"username":{"type":"string","title":"Username"},"session_id":{"type":"string","title":"Session Id"},"nas_ip":{"type":"string","title":"Nas Ip"},"acct_status_type":{"type":"string","title":"Acct Status Type"},"bytes_in":{"type":"integer","title":"Bytes In","default":0},"bytes_out":{"type":"integer","title":"Bytes Out","default":0},"session_time":{"type":"integer","title":"Session Time","default":0}},"type":"object","required":["username","session_id","nas_ip","acct_status_type"],"title":"RadiusAcctRequest","description":"Incoming accounting request from FreeRADIUS rest module."},"RadiusAuthRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"nas_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nas Ip"}},"type":"object","required":["username","password"],"title":"RadiusAuthRequest","description":"Incoming auth request from FreeRADIUS rest module."},"RadiusAuthResponse":{"properties":{"control":{"additionalProperties":{"type":"string"},"type":"object","title":"Control","default":{}},"reply":{"additionalProperties":{"type":"string"},"type":"object","title":"Reply","default":{}}},"type":"object","title":"RadiusAuthResponse"},"RadiusProfileCreate":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"nas_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nas Ip"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"}},"type":"object","required":["customer_id","username","password"],"title":"RadiusProfileCreate"},"RadiusProfileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"type":"string","title":"Customer Id"},"username":{"type":"string","title":"Username"},"nas_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nas Ip"},"speed_down_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Down Kbps"},"speed_up_kbps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Speed Up Kbps"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","customer_id","username","nas_ip","speed_down_kbps","speed_up_kbps","status","created_at"],"title":"RadiusProfileResponse"},"RateCurve":{"type":"string","enum":["linear","tiered","threshold"],"title":"RateCurve","description":"How a quantity is priced. Only meaningful when pricing_shape='quantity'.\n\nlinear    — charge = rate × quantity\ntiered    — stepped bands, see TierRule[]\nthreshold — free up to N, then per-unit above, see ThresholdRule"},"RateCustomerRequest":{"properties":{"customer_id":{"type":"string","title":"Customer Id"}},"type":"object","required":["customer_id"],"title":"RateCustomerRequest"},"RatePlanCreate":{"properties":{"name":{"type":"string","maxLength":120,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"service_code":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Service Code"},"category":{"type":"string","maxLength":30,"title":"Category","default":"other"},"pricing_shape":{"$ref":"#/components/schemas/PricingShape"},"rate_curve":{"anyOf":[{"$ref":"#/components/schemas/RateCurve"},{"type":"null"}]},"unit":{"$ref":"#/components/schemas/UsageUnit"},"rate":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Rate","default":"0"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/TierRule-Input"},"type":"array"},{"type":"null"}],"title":"Tiers"},"threshold":{"anyOf":[{"$ref":"#/components/schemas/ThresholdRule-Input"},{"type":"null"}]},"time_of_day_rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/TimeRule-Input"},"type":"array"},{"type":"null"}],"title":"Time Of Day Rules"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","pricing_shape","unit"],"title":"RatePlanCreate"},"RatePlanOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"service_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Code"},"category":{"type":"string","title":"Category","default":"other"},"pricing_shape":{"type":"string","title":"Pricing Shape"},"rate_curve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rate Curve"},"unit":{"type":"string","title":"Unit"},"rate":{"type":"number","title":"Rate"},"currency":{"type":"string","title":"Currency"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/TierRule-Output"},"type":"array"},{"type":"null"}],"title":"Tiers"},"threshold":{"anyOf":[{"$ref":"#/components/schemas/ThresholdRule-Output"},{"type":"null"}]},"time_of_day_rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/TimeRule-Output"},"type":"array"},{"type":"null"}],"title":"Time Of Day Rules"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","name","description","plan_id","pricing_shape","unit","rate","currency","is_active","created_at"],"title":"RatePlanOut"},"RatePlanUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"service_code":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Service Code"},"category":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Category"},"pricing_shape":{"anyOf":[{"$ref":"#/components/schemas/PricingShape"},{"type":"null"}]},"rate_curve":{"anyOf":[{"$ref":"#/components/schemas/RateCurve"},{"type":"null"}]},"unit":{"anyOf":[{"$ref":"#/components/schemas/UsageUnit"},{"type":"null"}]},"rate":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Rate"},"currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Currency"},"tiers":{"anyOf":[{"items":{"$ref":"#/components/schemas/TierRule-Input"},"type":"array"},{"type":"null"}],"title":"Tiers"},"threshold":{"anyOf":[{"$ref":"#/components/schemas/ThresholdRule-Input"},{"type":"null"}]},"time_of_day_rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/TimeRule-Input"},"type":"array"},{"type":"null"}],"title":"Time Of Day Rules"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"RatePlanUpdate"},"RatedChargeOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"usage_record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Record Id"},"rate_plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Plan Id"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"plan_name":{"type":"string","title":"Plan Name"},"pricing_shape":{"type":"string","title":"Pricing Shape"},"rate_curve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rate Curve"},"category":{"type":"string","title":"Category","default":"other"},"description":{"type":"string","title":"Description"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"rate":{"type":"number","title":"Rate"},"amount":{"type":"number","title":"Amount"},"currency":{"type":"string","title":"Currency"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"status":{"type":"string","title":"Status"},"extra_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Data"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","usage_record_id","rate_plan_id","plan_id","plan_name","pricing_shape","description","quantity","unit","rate","amount","currency","invoice_id","status","extra_data","created_at"],"title":"RatedChargeOut"},"RatingResultResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"plan_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Name"},"usage_records_rated":{"type":"integer","title":"Usage Records Rated"},"charges":{"items":{"$ref":"#/components/schemas/RatedChargeOut"},"type":"array","title":"Charges"},"total":{"type":"number","title":"Total"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["customer_id","usage_records_rated","charges","total","currency"],"title":"RatingResultResponse"},"RecommendationRequest":{"properties":{"customer_id":{"type":"string","maxLength":100,"title":"Customer Id","examples":["cust-001"]}},"type":"object","required":["customer_id"],"title":"RecommendationRequest"},"RecordPaymentRequest":{"properties":{"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"reference":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Reference"}},"type":"object","required":["amount"],"title":"RecordPaymentRequest"},"RefundCreate":{"properties":{"payment_id":{"type":"integer","title":"Payment Id"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"created_by":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Created By"}},"type":"object","required":["payment_id","amount"],"title":"RefundCreate"},"RefundRequest":{"properties":{"line_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Line Ids","description":"Specific line IDs to refund. None = full refund."},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"operator":{"type":"string","maxLength":200,"title":"Operator"}},"type":"object","required":["reason","operator"],"title":"RefundRequest"},"RelatedEntityType":{"type":"string","enum":["subscription","invoice","device","sim"],"title":"RelatedEntityType"},"ReportCategory":{"type":"string","enum":["financial","operational","regulatory","custom"],"title":"ReportCategory"},"ReportDefinitionCreate":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"slug":{"type":"string","maxLength":50,"title":"Slug"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"category":{"$ref":"#/components/schemas/ReportCategory"},"query_type":{"$ref":"#/components/schemas/QueryType"},"query_config":{"type":"string","title":"Query Config","description":"JSON defining data extraction. Aggregation: {\"source\": \"invoices\", \"filters\": {...}, \"group_by\": \"...\", \"aggregate\": \"sum:total_amount\", \"date_range\": \"this_month\"}. Predefined: {\"report\": \"monthly_revenue_by_customer\"}. SQL (admin): {\"sql\": \"SELECT ...\"}"},"output_format":{"$ref":"#/components/schemas/OutputFormat","default":"json"},"schedule":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Schedule","description":"Cron expression, e.g. \"0 6 1 * *\" (1st of month at 6 AM)"},"recipients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipients","description":"JSON array of email addresses, e.g. [\"a@b.com\"]"},"is_active":{"type":"boolean","title":"Is Active","default":true},"created_by":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Created By"}},"type":"object","required":["name","slug","category","query_type","query_config"],"title":"ReportDefinitionCreate"},"ReportDefinitionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReportDefinitionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"ReportDefinitionListResponse"},"ReportDefinitionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"type":"string","title":"Category"},"query_type":{"type":"string","title":"Query Type"},"query_config":{"type":"string","title":"Query Config"},"output_format":{"type":"string","title":"Output Format"},"schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule"},"recipients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipients"},"is_active":{"type":"boolean","title":"Is Active"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","name","slug","description","category","query_type","query_config","output_format","schedule","recipients","is_active","last_run_at","created_by","created_at","updated_at"],"title":"ReportDefinitionResponse"},"ReportDefinitionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Slug"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"$ref":"#/components/schemas/ReportCategory"},{"type":"null"}]},"query_type":{"anyOf":[{"$ref":"#/components/schemas/QueryType"},{"type":"null"}]},"query_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query Config"},"output_format":{"anyOf":[{"$ref":"#/components/schemas/OutputFormat"},{"type":"null"}]},"schedule":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Schedule"},"recipients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipients"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ReportDefinitionUpdate"},"ReportRunListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReportRunResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"ReportRunListResponse"},"ReportRunResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"report_id":{"type":"integer","title":"Report Id"},"run_number":{"type":"integer","title":"Run Number"},"status":{"type":"string","title":"Status"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"file_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Reference"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"parameters":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameters"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","report_id","run_number","status","started_at","completed_at","row_count","file_reference","error_message","parameters","created_at"],"title":"ReportRunResponse"},"ResetBillingRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"drop_usage":{"type":"boolean","title":"Drop Usage","description":"Also delete usage_records for the customer","default":false}},"type":"object","required":["customer_id"],"title":"ResetBillingRequest"},"RunReportRequest":{"properties":{"parameters":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameters","description":"Optional JSON of runtime parameters to override query_config defaults"},"output_format":{"anyOf":[{"$ref":"#/components/schemas/OutputFormat"},{"type":"null"}],"description":"Override the report's default output format for this run"}},"type":"object","title":"RunReportRequest","description":"Parameters for an on-demand report execution."},"SIMActivateRequest":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"msisdn":{"type":"string","maxLength":15,"title":"Msisdn"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"}},"type":"object","required":["customer_id","msisdn"],"title":"SIMActivateRequest"},"SIMCardCreate":{"properties":{"iccid":{"type":"string","maxLength":22,"title":"Iccid"},"imsi":{"type":"string","maxLength":15,"title":"Imsi"},"msisdn":{"anyOf":[{"type":"string","maxLength":15},{"type":"null"}],"title":"Msisdn"},"pin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pin"},"puk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Puk"}},"type":"object","required":["iccid","imsi"],"title":"SIMCardCreate"},"SIMCardResponse":{"properties":{"id":{"type":"integer","title":"Id"},"iccid":{"type":"string","title":"Iccid"},"imsi":{"type":"string","title":"Imsi"},"msisdn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Msisdn"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"status":{"$ref":"#/components/schemas/SIMStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"}},"type":"object","required":["id","iccid","imsi","msisdn","customer_id","status","created_at","activated_at"],"title":"SIMCardResponse"},"SIMStatus":{"type":"string","enum":["available","assigned","active","suspended","ported_out","deactivated"],"title":"SIMStatus"},"SLAPolicyCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"priority_rules":{"type":"string","title":"Priority Rules","description":"JSON object mapping priority to response/resolution hours. Example: {\"critical\": {\"response_hours\": 1, \"resolution_hours\": 4}}"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["name","priority_rules"],"title":"SLAPolicyCreate"},"SLAPolicyListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SLAPolicyResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"SLAPolicyListResponse"},"SLAPolicyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"priority_rules":{"type":"string","title":"Priority Rules"},"is_default":{"type":"boolean","title":"Is Default"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","name","priority_rules","is_default","created_at"],"title":"SLAPolicyResponse"},"SLAPolicyUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"priority_rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority Rules"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"SLAPolicyUpdate"},"SeedRequest":{"properties":{"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"}},"type":"object","required":["country"],"title":"SeedRequest"},"SeedResponse":{"properties":{"country":{"type":"string","title":"Country"},"rules_created":{"type":"integer","title":"Rules Created"},"rules":{"items":{"$ref":"#/components/schemas/TaxRuleResponse"},"type":"array","title":"Rules"}},"type":"object","required":["country","rules_created","rules"],"title":"SeedResponse"},"SendNotificationRequest":{"properties":{"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id"},"channel":{"$ref":"#/components/schemas/Channel"},"recipient":{"type":"string","maxLength":300,"title":"Recipient"},"subject":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Body"},"priority":{"$ref":"#/components/schemas/Priority","default":"normal"},"variables":{"additionalProperties":{"type":"string"},"type":"object","title":"Variables"},"reference_type":{"anyOf":[{"$ref":"#/components/schemas/sigcore__core__notifications__schemas__ReferenceType"},{"type":"null"}]},"reference_id":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Reference Id"}},"type":"object","required":["channel","recipient"],"title":"SendNotificationRequest"},"SettlementResponse":{"properties":{"id":{"type":"integer","title":"Id"},"partner_id":{"type":"integer","title":"Partner Id"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"total_revenue":{"type":"number","title":"Total Revenue"},"share_pct":{"type":"number","title":"Share Pct"},"commission_amount":{"type":"number","title":"Commission Amount"},"currency":{"type":"string","title":"Currency"},"invoice_count":{"type":"integer","title":"Invoice Count"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","partner_id","period_start","period_end","total_revenue","share_pct","commission_amount","currency","invoice_count","status"],"title":"SettlementResponse"},"SimulatorRequest":{"properties":{"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id","description":"Specific customer, or null for all customers"},"count":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Count","description":"Records per customer","default":5},"source":{"type":"string","title":"Source","description":"radius, cdr, netconf, api","default":"radius"},"source_device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Device","description":"Device hostname"},"data_mb_min":{"type":"integer","minimum":0.0,"title":"Data Mb Min","default":50},"data_mb_max":{"type":"integer","minimum":0.0,"title":"Data Mb Max","default":2000},"voice_min_min":{"type":"integer","minimum":0.0,"title":"Voice Min Min","default":0},"voice_min_max":{"type":"integer","minimum":0.0,"title":"Voice Min Max","default":60},"sms_min":{"type":"integer","minimum":0.0,"title":"Sms Min","default":0},"sms_max":{"type":"integer","minimum":0.0,"title":"Sms Max","default":20},"session_sec_min":{"type":"integer","minimum":0.0,"title":"Session Sec Min","default":300},"session_sec_max":{"type":"integer","minimum":0.0,"title":"Session Sec Max","default":7200}},"type":"object","title":"SimulatorRequest","description":"Generate realistic usage records for demo/testing."},"SmsBulkCreate":{"properties":{"records":{"items":{"$ref":"#/components/schemas/SmsRecordCreate"},"type":"array","title":"Records"}},"type":"object","required":["records"],"title":"SmsBulkCreate","description":"Bulk ingest a batch of SMS records."},"SmsBulkIngest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/SmsIngest"},"type":"array","title":"Records"}},"type":"object","required":["records"],"title":"SmsBulkIngest","description":"Bulk ingest a batch of SMS records."},"SmsDeliveryStatus":{"type":"string","enum":["delivered","failed","pending","expired"],"title":"SmsDeliveryStatus"},"SmsDirection":{"type":"string","enum":["outgoing","incoming"],"title":"SmsDirection"},"SmsIngest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"sender_number":{"type":"string","maxLength":20,"title":"Sender Number"},"recipient_number":{"type":"string","maxLength":20,"title":"Recipient Number"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"direction":{"$ref":"#/components/schemas/SmsDirection","default":"outgoing"},"message_type":{"$ref":"#/components/schemas/SmsMessageType","default":"mo"},"delivery_status":{"$ref":"#/components/schemas/SmsDeliveryStatus","default":"delivered"},"smsc_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Smsc Id"},"source":{"$ref":"#/components/schemas/SmsSource","default":"api"}},"type":"object","required":["customer_id","sender_number","recipient_number","timestamp"],"title":"SmsIngest","description":"Ingest a single SMS record via mediation."},"SmsMessageType":{"type":"string","enum":["mo","mt"],"title":"SmsMessageType"},"SmsRecordCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"sender_number":{"type":"string","maxLength":20,"title":"Sender Number"},"recipient_number":{"type":"string","maxLength":20,"title":"Recipient Number"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"direction":{"$ref":"#/components/schemas/SmsDirection","default":"outgoing"},"message_type":{"$ref":"#/components/schemas/SmsMessageType","default":"mo"},"delivery_status":{"$ref":"#/components/schemas/SmsDeliveryStatus","default":"delivered"},"smsc_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Smsc Id"},"source":{"$ref":"#/components/schemas/SmsSource","default":"api"}},"type":"object","required":["customer_id","sender_number","recipient_number","timestamp"],"title":"SmsRecordCreate","description":"Ingest a single SMS record."},"SmsSource":{"type":"string","enum":["smsc","cdr_file","api","simulator"],"title":"SmsSource"},"SmsStatsSummary":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"total_sms":{"type":"integer","title":"Total Sms","default":0},"by_direction":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Direction"},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"total_charged":{"type":"number","title":"Total Charged","default":0},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"}},"type":"object","required":["customer_id"],"title":"SmsStatsSummary","description":"SMS statistics summary for a customer."},"SnapshotResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"metric_name":{"type":"string","title":"Metric Name"},"value":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Value"},"period":{"type":"string","title":"Period"},"snapshot_date":{"type":"string","format":"date-time","title":"Snapshot Date"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","metric_name","value","period","snapshot_date","created_at"],"title":"SnapshotResponse"},"StockAdjustRequest":{"properties":{"quantity":{"type":"integer","title":"Quantity","description":"Positive to add, negative to deduct."},"reason":{"type":"string","maxLength":200,"title":"Reason","default":"manual adjustment"}},"type":"object","required":["quantity"],"title":"StockAdjustRequest"},"SubscriberAccountCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"account_type":{"type":"string","pattern":"^(prepaid|postpaid|hybrid)$","title":"Account Type","default":"prepaid"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Credit Limit"}},"type":"object","required":["customer_id"],"title":"SubscriberAccountCreate"},"SubscriberAccountOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"account_type":{"type":"string","title":"Account Type"},"status":{"type":"string","title":"Status"},"credit_limit":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Credit Limit"},"currency":{"type":"string","title":"Currency"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","account_type","status","currency","created_at","updated_at"],"title":"SubscriberAccountOut"},"SubscriberAccountWithBalances":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"account_type":{"type":"string","title":"Account Type"},"status":{"type":"string","title":"Status"},"credit_limit":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Credit Limit"},"currency":{"type":"string","title":"Currency"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"balance_buckets":{"items":{"$ref":"#/components/schemas/BalanceBucketOut"},"type":"array","title":"Balance Buckets","default":[]},"allowance_counters":{"items":{"$ref":"#/components/schemas/AllowanceCounterOut"},"type":"array","title":"Allowance Counters","default":[]}},"type":"object","required":["id","tenant_id","customer_id","account_type","status","currency","created_at","updated_at"],"title":"SubscriberAccountWithBalances"},"SubscriptionDeviceCreate":{"properties":{"label":{"type":"string","maxLength":120,"title":"Label"},"imei":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Imei"},"iccid":{"anyOf":[{"type":"string","maxLength":22},{"type":"null"}],"title":"Iccid"},"imsi":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Imsi"},"mac":{"anyOf":[{"type":"string","maxLength":17},{"type":"null"}],"title":"Mac"},"serial":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Serial"},"device_type":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Device Type"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["label"],"title":"SubscriptionDeviceCreate","description":"Create a device under a subscription. At least one identifier\n(imei/iccid/imsi/mac/serial) should be set, but none is individually\nrequired so partial bootstrap is possible."},"SubscriptionDeviceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"subscription_id":{"type":"integer","title":"Subscription Id"},"label":{"type":"string","title":"Label"},"imei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imei"},"iccid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iccid"},"imsi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imsi"},"mac":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mac"},"serial":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial"},"device_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Type"},"status":{"type":"string","title":"Status"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"},"deactivated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deactivated At"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","subscription_id","label","imei","iccid","imsi","mac","serial","device_type","status","activated_at","deactivated_at","latitude","longitude","notes","created_at","updated_at"],"title":"SubscriptionDeviceResponse"},"SubscriptionDeviceUpdate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"},"imei":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Imei"},"iccid":{"anyOf":[{"type":"string","maxLength":22},{"type":"null"}],"title":"Iccid"},"imsi":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Imsi"},"mac":{"anyOf":[{"type":"string","maxLength":17},{"type":"null"}],"title":"Mac"},"serial":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Serial"},"device_type":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Device Type"},"status":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Status"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"SubscriptionDeviceUpdate","description":"Patch fields on a device. All fields optional."},"SubscriptionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"plan_id":{"type":"integer","title":"Plan Id"},"status":{"type":"string","title":"Status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason"},"activated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activated At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"terminated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Terminated At"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"trial_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial End"},"auto_renew":{"type":"boolean","title":"Auto Renew"},"quantity":{"type":"integer","title":"Quantity"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","plan_id","status","status_reason","activated_at","suspended_at","terminated_at","current_period_start","current_period_end","trial_end","auto_renew","quantity","created_at","updated_at"],"title":"SubscriptionResponse","description":"Full subscription response."},"SubscriptionStatusChange":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Reason"}},"type":"object","title":"SubscriptionStatusChange","description":"Change subscription status."},"TargetEntity":{"type":"string","enum":["customer","subscription","device","listing","transaction"],"title":"TargetEntity"},"TaxApplied":{"properties":{"name":{"type":"string","title":"Name"},"tax_type":{"type":"string","title":"Tax Type"},"rate":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Rate"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"}},"type":"object","required":["name","tax_type","rate","amount"],"title":"TaxApplied"},"TaxBreakdownItem":{"properties":{"name":{"type":"string","title":"Name"},"rate":{"type":"number","title":"Rate"},"amount":{"type":"number","title":"Amount"}},"type":"object","required":["name","rate","amount"],"title":"TaxBreakdownItem"},"TaxCalculationRequest":{"properties":{"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"line_items":{"items":{"$ref":"#/components/schemas/TaxLineItem"},"type":"array","minItems":1,"title":"Line Items"},"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"}},"type":"object","required":["country","line_items"],"title":"TaxCalculationRequest"},"TaxCalculationResponse":{"properties":{"lines":{"items":{"$ref":"#/components/schemas/TaxLineResult"},"type":"array","title":"Lines"},"tax_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Total"},"grand_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Grand Total"}},"type":"object","required":["lines","tax_total","grand_total"],"title":"TaxCalculationResponse"},"TaxExemptionCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"tax_rule_id":{"type":"integer","title":"Tax Rule Id"},"reason":{"type":"string","maxLength":200,"title":"Reason"},"exemption_certificate":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Exemption Certificate"},"valid_from":{"type":"string","format":"date-time","title":"Valid From"},"valid_to":{"type":"string","format":"date-time","title":"Valid To"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["customer_id","tax_rule_id","reason","valid_from","valid_to"],"title":"TaxExemptionCreate"},"TaxExemptionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TaxExemptionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TaxExemptionListResponse"},"TaxExemptionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"tax_rule_id":{"type":"integer","title":"Tax Rule Id"},"reason":{"type":"string","title":"Reason"},"exemption_certificate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exemption Certificate"},"valid_from":{"type":"string","format":"date-time","title":"Valid From"},"valid_to":{"type":"string","format":"date-time","title":"Valid To"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","tax_rule_id","reason","exemption_certificate","valid_from","valid_to","is_active","created_at"],"title":"TaxExemptionResponse"},"TaxLineItem":{"properties":{"amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"category":{"type":"string","maxLength":20,"title":"Category","default":"all"}},"type":"object","required":["amount"],"title":"TaxLineItem"},"TaxLineResult":{"properties":{"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"category":{"type":"string","title":"Category"},"taxes":{"items":{"$ref":"#/components/schemas/TaxApplied"},"type":"array","title":"Taxes"},"tax_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Total"},"total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total"}},"type":"object","required":["amount","category","taxes","tax_total","total"],"title":"TaxLineResult"},"TaxRuleCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"tax_type":{"$ref":"#/components/schemas/TaxType"},"rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Rate Percent"},"applies_to":{"$ref":"#/components/schemas/AppliesTo","default":"all"},"is_compound":{"type":"boolean","title":"Is Compound","default":false},"is_inclusive":{"type":"boolean","title":"Is Inclusive","default":false},"priority":{"type":"integer","minimum":0.0,"title":"Priority","default":0},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"is_active":{"type":"boolean","title":"Is Active","default":true},"compliance_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Compliance Code"}},"type":"object","required":["name","country","tax_type","rate_percent"],"title":"TaxRuleCreate"},"TaxRuleListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TaxRuleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TaxRuleListResponse"},"TaxRuleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"country":{"type":"string","title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"tax_type":{"type":"string","title":"Tax Type"},"rate_percent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Rate Percent"},"applies_to":{"type":"string","title":"Applies To"},"is_compound":{"type":"boolean","title":"Is Compound"},"is_inclusive":{"type":"boolean","title":"Is Inclusive"},"priority":{"type":"integer","title":"Priority"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"is_active":{"type":"boolean","title":"Is Active"},"compliance_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliance Code"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","name","country","region","tax_type","rate_percent","applies_to","is_compound","is_inclusive","priority","effective_from","effective_to","is_active","compliance_code","created_at","updated_at"],"title":"TaxRuleResponse"},"TaxRuleUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"rate_percent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Rate Percent"},"applies_to":{"anyOf":[{"$ref":"#/components/schemas/AppliesTo"},{"type":"null"}]},"is_compound":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Compound"},"is_inclusive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Inclusive"},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"compliance_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Compliance Code"}},"type":"object","title":"TaxRuleUpdate"},"TaxSummaryEntry":{"properties":{"tax_type":{"type":"string","title":"Tax Type"},"name":{"type":"string","title":"Name"},"country":{"type":"string","title":"Country"},"total_collected":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Collected"},"rule_count":{"type":"integer","title":"Rule Count"}},"type":"object","required":["tax_type","name","country","total_collected","rule_count"],"title":"TaxSummaryEntry"},"TaxSummaryResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/TaxSummaryEntry"},"type":"array","title":"Entries"}},"type":"object","required":["entries"],"title":"TaxSummaryResponse"},"TaxType":{"type":"string","enum":["vat","gst","sales_tax","withholding","excise","telecom_tax","universal_service_fund","regulatory_fee"],"title":"TaxType"},"TemplateCreate":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"slug":{"type":"string","maxLength":200,"title":"Slug"},"channel":{"$ref":"#/components/schemas/Channel"},"subject":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subject"},"body":{"type":"string","minLength":1,"title":"Body"},"language":{"type":"string","maxLength":5,"title":"Language","default":"en"},"category":{"$ref":"#/components/schemas/Category"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","slug","channel","body","category"],"title":"TemplateCreate"},"TemplateListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TemplateResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TemplateListResponse"},"TemplateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"channel":{"type":"string","title":"Channel"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"type":"string","title":"Body"},"language":{"type":"string","title":"Language"},"category":{"type":"string","title":"Category"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","name","slug","channel","subject","body","language","category","is_active","created_at"],"title":"TemplateResponse"},"TemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Slug"},"channel":{"anyOf":[{"$ref":"#/components/schemas/Channel"},{"type":"null"}]},"subject":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Body"},"language":{"anyOf":[{"type":"string","maxLength":5},{"type":"null"}],"title":"Language"},"category":{"anyOf":[{"$ref":"#/components/schemas/Category"},{"type":"null"}]},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"TemplateUpdate"},"TenantConfigUpdate":{"properties":{"vendors_enabled":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Vendors Enabled"},"modules_enabled":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Modules Enabled"},"countries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Countries"},"customer_id_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id Prefix"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"billing_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Email"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Name"},"bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Account"},"invoice_footer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Footer"},"invoice_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Terms"}},"type":"object","title":"TenantConfigUpdate"},"TenantCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"country_primary":{"type":"string","title":"Country Primary","default":"RW"},"countries":{"type":"string","title":"Countries","default":"RW"},"customer_id_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id Prefix"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"billing_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Email"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Name"},"bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Account"},"invoice_footer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Footer"},"invoice_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Terms"}},"type":"object","required":["name","slug","email","password"],"title":"TenantCreate"},"TenantLogin":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"TenantLogin"},"TenantResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"email":{"type":"string","title":"Email"},"country_primary":{"type":"string","title":"Country Primary"},"countries":{"type":"string","title":"Countries"},"vendors_enabled":{"type":"string","title":"Vendors Enabled"},"modules_enabled":{"type":"string","title":"Modules Enabled"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","name","slug","email","country_primary","countries","vendors_enabled","modules_enabled","is_active"],"title":"TenantResponse"},"TerminalCreate":{"properties":{"name":{"type":"string","maxLength":100,"title":"Name"},"location_name":{"type":"string","maxLength":200,"title":"Location Name"},"location_address":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Location Address"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"operator_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Operator Name"}},"type":"object","required":["name","location_name","country"],"title":"TerminalCreate"},"TerminalListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TerminalResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TerminalListResponse"},"TerminalResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"terminal_code":{"type":"string","title":"Terminal Code"},"name":{"type":"string","title":"Name"},"location_name":{"type":"string","title":"Location Name"},"location_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Address"},"country":{"type":"string","title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"operator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator Name"},"status":{"type":"string","title":"Status"},"last_transaction_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Transaction At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","terminal_code","name","location_name","location_address","country","region","operator_name","status","last_transaction_at","created_at"],"title":"TerminalResponse"},"TerminalStatus":{"type":"string","enum":["active","inactive","maintenance"],"title":"TerminalStatus"},"TerminalUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"location_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Location Name"},"location_address":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Location Address"},"country":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"status":{"anyOf":[{"$ref":"#/components/schemas/TerminalStatus"},{"type":"null"}]}},"type":"object","title":"TerminalUpdate"},"TerminationCause":{"type":"string","enum":["normal","busy","no_answer","network_failure","user_hangup"],"title":"TerminationCause"},"ThresholdRule-Input":{"properties":{"free_to":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Free To"},"overage_rate":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Overage Rate"}},"type":"object","required":["free_to","overage_rate"],"title":"ThresholdRule","description":"Threshold curve payload: free up to `free_to`, then `overage_rate` per unit.\n\nReplaces the old practice of hijacking the `tiers` column with a degenerate\ntwo-tier payload to express thresholds."},"ThresholdRule-Output":{"properties":{"free_to":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Free To"},"overage_rate":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Overage Rate"}},"type":"object","required":["free_to","overage_rate"],"title":"ThresholdRule","description":"Threshold curve payload: free up to `free_to`, then `overage_rate` per unit.\n\nReplaces the old practice of hijacking the `tiers` column with a degenerate\ntwo-tier payload to express thresholds."},"TicketAssign":{"properties":{"assigned_to":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Assigned To"},"assigned_team":{"anyOf":[{"$ref":"#/components/schemas/TicketTeam"},{"type":"null"}]}},"type":"object","title":"TicketAssign"},"TicketCategory":{"type":"string","enum":["billing","technical","provisioning","general","complaint","feature_request"],"title":"TicketCategory"},"TicketCreate":{"properties":{"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"subject":{"type":"string","maxLength":300,"minLength":1,"title":"Subject"},"description":{"type":"string","minLength":1,"title":"Description"},"category":{"$ref":"#/components/schemas/TicketCategory","default":"general"},"priority":{"$ref":"#/components/schemas/TicketPriority","default":"medium"},"source":{"$ref":"#/components/schemas/TicketSource","default":"portal"},"assigned_to":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Assigned To"},"assigned_team":{"anyOf":[{"$ref":"#/components/schemas/TicketTeam"},{"type":"null"}]},"related_entity_type":{"anyOf":[{"$ref":"#/components/schemas/RelatedEntityType"},{"type":"null"}]},"related_entity_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Related Entity Id"},"tags":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Tags"},"created_by":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Created By"}},"type":"object","required":["subject","description"],"title":"TicketCreate"},"TicketDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"subject":{"type":"string","title":"Subject"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category"},"priority":{"type":"string","title":"Priority"},"status":{"type":"string","title":"Status"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"assigned_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Team"},"source":{"type":"string","title":"Source"},"sla_due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sla Due At"},"sla_breached":{"type":"boolean","title":"Sla Breached"},"first_response_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Response At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"},"related_entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Entity Type"},"related_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Entity Id"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"comments":{"items":{"$ref":"#/components/schemas/CommentResponse"},"type":"array","title":"Comments","default":[]}},"type":"object","required":["id","tenant_id","customer_id","ticket_number","subject","description","category","priority","status","assigned_to","assigned_team","source","sla_due_at","sla_breached","first_response_at","resolved_at","closed_at","resolution_notes","related_entity_type","related_entity_id","tags","created_by","created_at","updated_at"],"title":"TicketDetailResponse"},"TicketListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TicketResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TicketListResponse"},"TicketPriority":{"type":"string","enum":["low","medium","high","critical"],"title":"TicketPriority"},"TicketResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"subject":{"type":"string","title":"Subject"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category"},"priority":{"type":"string","title":"Priority"},"status":{"type":"string","title":"Status"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"},"assigned_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned Team"},"source":{"type":"string","title":"Source"},"sla_due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sla Due At"},"sla_breached":{"type":"boolean","title":"Sla Breached"},"first_response_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Response At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"},"related_entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Entity Type"},"related_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Related Entity Id"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","customer_id","ticket_number","subject","description","category","priority","status","assigned_to","assigned_team","source","sla_due_at","sla_breached","first_response_at","resolved_at","closed_at","resolution_notes","related_entity_type","related_entity_id","tags","created_by","created_at","updated_at"],"title":"TicketResponse"},"TicketSource":{"type":"string","enum":["portal","phone","email","chat","api","system"],"title":"TicketSource"},"TicketStats":{"properties":{"open_count":{"type":"integer","title":"Open Count"},"assigned_count":{"type":"integer","title":"Assigned Count"},"in_progress_count":{"type":"integer","title":"In Progress Count"},"waiting_customer_count":{"type":"integer","title":"Waiting Customer Count"},"waiting_internal_count":{"type":"integer","title":"Waiting Internal Count"},"resolved_count":{"type":"integer","title":"Resolved Count"},"closed_count":{"type":"integer","title":"Closed Count"},"reopened_count":{"type":"integer","title":"Reopened Count"},"total_count":{"type":"integer","title":"Total Count"},"sla_breached_count":{"type":"integer","title":"Sla Breached Count"},"avg_resolution_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Resolution Hours"},"sla_compliance_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sla Compliance Rate"}},"type":"object","required":["open_count","assigned_count","in_progress_count","waiting_customer_count","waiting_internal_count","resolved_count","closed_count","reopened_count","total_count","sla_breached_count","avg_resolution_hours","sla_compliance_rate"],"title":"TicketStats"},"TicketStatus":{"type":"string","enum":["open","assigned","in_progress","waiting_customer","waiting_internal","resolved","closed","reopened"],"title":"TicketStatus"},"TicketStatusChange":{"properties":{"status":{"$ref":"#/components/schemas/TicketStatus"},"resolution_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Notes"}},"type":"object","required":["status"],"title":"TicketStatusChange"},"TicketTeam":{"type":"string","enum":["support","billing","network","provisioning"],"title":"TicketTeam"},"TicketUpdate":{"properties":{"subject":{"anyOf":[{"type":"string","maxLength":300,"minLength":1},{"type":"null"}],"title":"Subject"},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"$ref":"#/components/schemas/TicketCategory"},{"type":"null"}]},"priority":{"anyOf":[{"$ref":"#/components/schemas/TicketPriority"},{"type":"null"}]},"related_entity_type":{"anyOf":[{"$ref":"#/components/schemas/RelatedEntityType"},{"type":"null"}]},"related_entity_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Related Entity Id"},"tags":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Tags"}},"type":"object","title":"TicketUpdate"},"TierBreakdownItem":{"properties":{"label":{"type":"string","title":"Label"},"from":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"From"},"to":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"To"},"rate":{"type":"number","title":"Rate"},"qty":{"type":"number","title":"Qty"},"charge":{"type":"number","title":"Charge"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},"type":"object","required":["label","rate","qty","charge"],"title":"TierBreakdownItem","description":"One tier band that contributed to a tiered-pricing invoice line."},"TierRule-Input":{"properties":{"from":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"From"},"to":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"To"},"rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Rate"},"label":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Label"}},"type":"object","required":["from","to","rate"],"title":"TierRule","description":"A single tier band for tiered pricing.\n\n`label` is optional — when present it's what the invoice line shows\ninstead of the engine's generic \"{qty} {unit} @ {rate}\" wording. So a\nvoice-tier band with label='Tier 1' on a 3,120-minute bill renders as\n\"Tier 1: 1,000 min @ $0.08\" rather than \"1000.00 min @ 0.0800\"."},"TierRule-Output":{"properties":{"from":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"From"},"to":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"To"},"rate":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Rate"},"label":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Label"}},"type":"object","required":["from","to","rate"],"title":"TierRule","description":"A single tier band for tiered pricing.\n\n`label` is optional — when present it's what the invoice line shows\ninstead of the engine's generic \"{qty} {unit} @ {rate}\" wording. So a\nvoice-tier band with label='Tier 1' on a 3,120-minute bill renders as\n\"Tier 1: 1,000 min @ $0.08\" rather than \"1000.00 min @ 0.0800\"."},"TimeRule-Input":{"properties":{"start":{"type":"string","title":"Start","description":"HH:MM format"},"end":{"type":"string","title":"End","description":"HH:MM format"},"multiplier":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Multiplier"}},"type":"object","required":["start","end","multiplier"],"title":"TimeRule","description":"A time-of-day multiplier window. Composes with any rate_curve."},"TimeRule-Output":{"properties":{"start":{"type":"string","title":"Start","description":"HH:MM format"},"end":{"type":"string","title":"End","description":"HH:MM format"},"multiplier":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Multiplier"}},"type":"object","required":["start","end","multiplier"],"title":"TimeRule","description":"A time-of-day multiplier window. Composes with any rate_curve."},"TopupRequest":{"properties":{"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"source":{"type":"string","pattern":"^(topup|bonus|transfer|adjustment|momo|airtel_money|mpesa|stripe|paypal|bank_transfer|voucher|cash)$","title":"Source","default":"topup"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"}},"type":"object","required":["amount"],"title":"TopupRequest"},"TransactionCreate":{"properties":{"terminal_id":{"type":"integer","title":"Terminal Id"},"customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Customer Id"},"transaction_type":{"$ref":"#/components/schemas/TransactionType","default":"sale"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD"},"operator":{"type":"string","maxLength":200,"title":"Operator"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"lines":{"items":{"$ref":"#/components/schemas/LineItemCreate"},"type":"array","title":"Lines"}},"type":"object","required":["terminal_id","operator"],"title":"TransactionCreate"},"TransactionDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"terminal_id":{"type":"integer","title":"Terminal Id"},"transaction_number":{"type":"string","title":"Transaction Number"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"transaction_type":{"type":"string","title":"Transaction Type"},"status":{"type":"string","title":"Status"},"subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Subtotal"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"discount_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"currency":{"type":"string","title":"Currency"},"payment_method":{"type":"string","title":"Payment Method"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"},"change_given":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Change Given"},"operator":{"type":"string","title":"Operator"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"voided_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voided Reason"},"receipt_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Number"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"lines":{"items":{"$ref":"#/components/schemas/LineItemResponse"},"type":"array","title":"Lines","default":[]}},"type":"object","required":["id","tenant_id","terminal_id","transaction_number","customer_id","transaction_type","status","subtotal","tax_amount","discount_amount","total_amount","currency","payment_method","payment_reference","amount_tendered","change_given","operator","notes","voided_reason","receipt_number","created_at"],"title":"TransactionDetailResponse"},"TransactionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"terminal_id":{"type":"integer","title":"Terminal Id"},"transaction_number":{"type":"string","title":"Transaction Number"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"transaction_type":{"type":"string","title":"Transaction Type"},"status":{"type":"string","title":"Status"},"subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Subtotal"},"tax_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Tax Amount"},"discount_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Discount Amount"},"total_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Amount"},"currency":{"type":"string","title":"Currency"},"payment_method":{"type":"string","title":"Payment Method"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"},"amount_tendered":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Tendered"},"change_given":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Change Given"},"operator":{"type":"string","title":"Operator"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"voided_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voided Reason"},"receipt_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Number"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","terminal_id","transaction_number","customer_id","transaction_type","status","subtotal","tax_amount","discount_amount","total_amount","currency","payment_method","payment_reference","amount_tendered","change_given","operator","notes","voided_reason","receipt_number","created_at"],"title":"TransactionResponse"},"TransactionType":{"type":"string","enum":["sale","refund","exchange","void","topup","sim_activation","voucher_sale"],"title":"TransactionType"},"UsageRecordCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"device_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Device Id"},"source":{"$ref":"#/components/schemas/UsageSource","default":"api"},"source_device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Device"},"usage_type":{"$ref":"#/components/schemas/UsageType","default":"data"},"service_code":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Service Code"},"bytes_in":{"type":"integer","minimum":0.0,"title":"Bytes In","default":0},"bytes_out":{"type":"integer","minimum":0.0,"title":"Bytes Out","default":0},"session_time_sec":{"type":"integer","minimum":0.0,"title":"Session Time Sec","default":0},"voice_minutes":{"type":"integer","minimum":0.0,"title":"Voice Minutes","default":0},"sms_count":{"type":"integer","minimum":0.0,"title":"Sms Count","default":0},"custom_quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Custom Quantity"},"custom_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Unit"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["customer_id"],"title":"UsageRecordCreate"},"UsageRecordOut":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"subscription_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Id"},"device_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Device Id"},"source":{"type":"string","title":"Source"},"source_device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Device"},"usage_type":{"type":"string","title":"Usage Type"},"service_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Code"},"bytes_in":{"type":"integer","title":"Bytes In"},"bytes_out":{"type":"integer","title":"Bytes Out"},"session_time_sec":{"type":"integer","title":"Session Time Sec"},"voice_minutes":{"type":"integer","title":"Voice Minutes"},"sms_count":{"type":"integer","title":"Sms Count"},"custom_quantity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Custom Quantity"},"custom_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Unit"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"rated":{"type":"boolean","title":"Rated"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","subscription_id","source","source_device","usage_type","bytes_in","bytes_out","session_time_sec","voice_minutes","sms_count","custom_quantity","custom_unit","period_start","period_end","rated","created_at"],"title":"UsageRecordOut"},"UsageSource":{"type":"string","enum":["radius","cdr","api","manual","netconf"],"title":"UsageSource"},"UsageSummary":{"properties":{"total_bytes":{"type":"integer","title":"Total Bytes","default":0},"total_mb":{"type":"number","title":"Total Mb","default":0},"total_sessions":{"type":"integer","title":"Total Sessions","default":0},"total_voice_min":{"type":"integer","title":"Total Voice Min","default":0},"total_sms":{"type":"integer","title":"Total Sms","default":0},"total_custom_quantity":{"type":"number","title":"Total Custom Quantity","default":0},"custom_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Unit"},"records_count":{"type":"integer","title":"Records Count","default":0},"unrated_count":{"type":"integer","title":"Unrated Count","default":0}},"type":"object","title":"UsageSummary"},"UsageType":{"type":"string","enum":["data","voice","sms","transaction","session"],"title":"UsageType"},"UsageUnit":{"type":"string","enum":["MB","GB","min","msg","session","transaction","month","unit","Mbps","Mbps_burst","device_day"],"title":"UsageUnit"},"UserCreate":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":"P6"}},"type":"object","required":["email","password","name"],"title":"UserCreate"},"UserLogin":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","email","name","role","is_active","created_at"],"title":"UserResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValidityClockAnchor":{"type":"string","enum":["at_purchase","at_first_use"],"title":"ValidityClockAnchor","description":"When the validity_days countdown starts."},"Vendor":{"type":"string","enum":["juniper","cisco","nokia","huawei","arista","zte","cambium","mikrotik","ubiquiti","grandstream","tplink","dlink","radwin","baicells","mimosa","ceragon","fiberhome","calix","adtran","airspan","ipaccess","telrad","saf","dzs","commscope","altalabs","tejas","hfcl","cdot","vvdn","lekha","stl"],"title":"Vendor"},"VoidInvoiceRequest":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":5,"title":"Reason"}},"type":"object","required":["reason"],"title":"VoidInvoiceRequest"},"VoidTransactionRequest":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["reason"],"title":"VoidTransactionRequest"},"WebhookDeliveryOut":{"properties":{"id":{"type":"integer","title":"Id"},"subscription_id":{"type":"integer","title":"Subscription Id"},"event_id":{"type":"integer","title":"Event Id"},"status":{"type":"string","title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"response_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Status"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","subscription_id","event_id","status","attempts","created_at"],"title":"WebhookDeliveryOut"},"WebhookSubCreate":{"properties":{"name":{"type":"string","maxLength":80,"minLength":2,"pattern":"^[a-z0-9][a-z0-9_-]*$","title":"Name"},"url":{"type":"string","maxLength":500,"minLength":8,"title":"Url"},"event_types":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Event Types","description":"Comma-separated event_type filter; null/empty = all events"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","url"],"title":"WebhookSubCreate"},"WebhookSubIssued":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"event_types":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Types"},"is_active":{"type":"boolean","title":"Is Active"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_error_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Error At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"secret":{"type":"string","title":"Secret"}},"type":"object","required":["id","name","url","is_active","created_at","secret"],"title":"WebhookSubIssued","description":"Returned ONCE on creation — full secret shown, then never again."},"WebhookSubOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"event_types":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Types"},"is_active":{"type":"boolean","title":"Is Active"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_error_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Error At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","url","is_active","created_at"],"title":"WebhookSubOut"},"WebhookSubUpdate":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"event_types":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Types"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WebhookSubUpdate"},"WhoAmI":{"properties":{"tenant":{"type":"string","title":"Tenant"},"partner":{"type":"string","title":"Partner"},"partner_id":{"type":"integer","title":"Partner Id"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"key_label":{"type":"string","title":"Key Label"},"key_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Key Expires At"}},"type":"object","required":["tenant","partner","partner_id","scopes","key_label"],"title":"WhoAmI"},"WidgetData":{"properties":{"widget":{"type":"string","title":"Widget"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"metrics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Metrics"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Data"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["widget"],"title":"WidgetData"},"_ApplyEntitlementsRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"}},"type":"object","required":["customer_id","period_start","period_end"],"title":"_ApplyEntitlementsRequest"},"_DryRunRequest":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"voice_day_min":{"type":"integer","minimum":0.0,"title":"Voice Day Min","default":0},"voice_night_min":{"type":"integer","minimum":0.0,"title":"Voice Night Min","default":0},"sms_count":{"type":"integer","minimum":0.0,"title":"Sms Count","default":0},"data_gb":{"type":"number","minimum":0.0,"title":"Data Gb","default":0},"ip_mbps":{"type":"integer","minimum":0.0,"title":"Ip Mbps","default":0},"burst_mbps":{"type":"integer","minimum":0.0,"title":"Burst Mbps","default":0},"monitor_device_days":{"type":"integer","minimum":0.0,"title":"Monitor Device Days","default":0},"pro_service_codes":{"items":{"type":"string"},"type":"array","title":"Pro Service Codes"}},"type":"object","required":["customer_id"],"title":"_DryRunRequest"},"_EikamInitRunRequest":{"properties":{"external_run_id":{"type":"string","maxLength":120,"title":"External Run Id"},"integration_type":{"type":"string","maxLength":40,"title":"Integration Type","default":"eikam"},"cycle_start":{"type":"string","format":"date-time","title":"Cycle Start"},"cycle_end":{"type":"string","format":"date-time","title":"Cycle End"},"customers_in_scope":{"type":"integer","title":"Customers In Scope","default":0},"note":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Note"}},"type":"object","required":["external_run_id","cycle_start","cycle_end"],"title":"_EikamInitRunRequest","description":"Eikam (or any external orchestrator) registers a run it's about to\nprocess. Optional but recommended — lets Sigtel's Reports surface the\nrun as it executes, not just after invoices land."},"_RunStatusUpdate":{"properties":{"status":{"type":"string","maxLength":20,"title":"Status"},"last_error":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Last Error"}},"type":"object","required":["status"],"title":"_RunStatusUpdate","description":"External orchestrator updates a run's terminal status.\n\nAllowed transitions:\n  running → completed | failed | partial\nRe-issuing the same terminal status is a no-op."},"_ScenarioCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"voice_day_min":{"type":"integer","minimum":0.0,"title":"Voice Day Min","default":0},"voice_night_min":{"type":"integer","minimum":0.0,"title":"Voice Night Min","default":0},"sms_count":{"type":"integer","minimum":0.0,"title":"Sms Count","default":0},"data_gb":{"type":"number","minimum":0.0,"title":"Data Gb","default":0},"ip_mbps":{"type":"integer","minimum":0.0,"title":"Ip Mbps","default":0},"burst_mbps":{"type":"integer","minimum":0.0,"title":"Burst Mbps","default":0},"monitor_device_days":{"type":"integer","minimum":0.0,"title":"Monitor Device Days","default":0},"pro_service_codes":{"items":{"type":"string"},"type":"array","title":"Pro Service Codes"},"is_public":{"type":"boolean","title":"Is Public","default":true}},"type":"object","required":["name","customer_id"],"title":"_ScenarioCreate"},"_TriggerInvoicingRequest":{"properties":{"customer_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Customer Ids","description":"Specific customers to invoice. Omit to invoice every active customer."},"cycle_start":{"type":"string","format":"date-time","title":"Cycle Start"},"cycle_end":{"type":"string","format":"date-time","title":"Cycle End"},"note":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Note"}},"type":"object","required":["cycle_start","cycle_end"],"title":"_TriggerInvoicingRequest","description":"Operator-initiated invoicing run.\n\nPublishes invoicing.requested outbox events for the customers in scope.\nThe same event is published by the billing-cycle scheduler — this gives\noperators a way to fire it on demand (re-runs, ad-hoc periods, demos)."},"sigcore__bss__billing__router__PartnerCreate":{"properties":{"partner_name":{"type":"string","maxLength":200,"title":"Partner Name"},"partner_type":{"type":"string","title":"Partner Type","default":"reseller"},"partner_tenant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Partner Tenant Id"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"revenue_share_pct":{"type":"number","maximum":50.0,"minimum":0.0,"title":"Revenue Share Pct","default":10.0},"tier_rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier Rules"},"payout_method":{"type":"string","title":"Payout Method","default":"bank_transfer"},"payout_currency":{"type":"string","maxLength":3,"title":"Payout Currency","default":"USD"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["partner_name"],"title":"PartnerCreate"},"sigcore__bss__billing__router__PartnerResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"partner_name":{"type":"string","title":"Partner Name"},"partner_type":{"type":"string","title":"Partner Type"},"partner_tenant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Partner Tenant Id"},"revenue_share_pct":{"type":"number","title":"Revenue Share Pct"},"payout_method":{"type":"string","title":"Payout Method"},"payout_currency":{"type":"string","title":"Payout Currency"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","tenant_id","partner_name","partner_type","partner_tenant_id","revenue_share_pct","payout_method","payout_currency","is_active"],"title":"PartnerResponse"},"sigcore__bss__billing__schemas__ReferenceType":{"type":"string","enum":["rated_charge","subscription","one_time","adjustment"],"title":"ReferenceType"},"sigcore__bss__identity__schemas__CustomerCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"display_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Display Name"},"customer_type":{"$ref":"#/components/schemas/CustomerType","default":"individual"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"secondary_phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Secondary Phone"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country","default":"US"},"region":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"City"},"address_line1":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Address Line1"},"address_line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Address Line2"},"postal_code":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Postal Code"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"segment":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Segment"},"tags":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Tags"},"language":{"type":"string","maxLength":5,"title":"Language","default":"en"},"currency":{"type":"string","maxLength":3,"title":"Currency","default":"USD"},"timezone":{"type":"string","maxLength":50,"title":"Timezone","default":"UTC"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Limit"},"payment_terms_days":{"type":"integer","title":"Payment Terms Days","default":30},"tax_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Tax Id"},"tax_exempt":{"type":"boolean","title":"Tax Exempt","default":false},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"source":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Source"},"referred_by":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Referred By"},"opaque_customer_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Opaque Customer Id"}},"type":"object","required":["name"],"title":"CustomerCreate"},"sigcore__bss__identity__schemas__CustomerResponse":{"properties":{"opaque_customer_id":{"type":"string","title":"Opaque Customer Id"},"external_id":{"type":"string","title":"External Id"},"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"customer_type":{"type":"string","title":"Customer Type"},"status":{"type":"string","title":"Status"},"status_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Reason"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"secondary_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Phone"},"country":{"type":"string","title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"address_line1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line1"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"kyc_status":{"type":"string","title":"Kyc Status"},"segment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"language":{"type":"string","title":"Language"},"currency":{"type":"string","title":"Currency"},"timezone":{"type":"string","title":"Timezone"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Limit"},"payment_terms_days":{"type":"integer","title":"Payment Terms Days"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"tax_exempt":{"type":"boolean","title":"Tax Exempt"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["opaque_customer_id","external_id","name","display_name","customer_type","status","status_reason","email","phone","secondary_phone","country","region","city","address_line1","postal_code","kyc_status","segment","tags","language","currency","timezone","credit_limit","payment_terms_days","tax_id","tax_exempt","source","created_at","updated_at"],"title":"CustomerResponse"},"sigcore__bss__pos__schemas__TransactionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TransactionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TransactionListResponse"},"sigcore__core__ai__schemas__Severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"sigcore__core__audit__schemas__Severity":{"type":"string","enum":["info","warning","error","critical"],"title":"Severity"},"sigcore__core__notifications__schemas__ReferenceType":{"type":"string","enum":["invoice","payment","ticket","subscription","system"],"title":"ReferenceType"},"sigtel__bcarried__schemas__CustomerCreate":{"properties":{"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"customer_type":{"type":"string","title":"Customer Type","default":"individual"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"}},"type":"object","required":["name","country"],"title":"CustomerCreate"},"sigtel__bcarried__schemas__CustomerResponse":{"properties":{"opaque_customer_id":{"type":"string","title":"Opaque Customer Id"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"customer_type":{"type":"string","title":"Customer Type"},"status":{"type":"string","title":"Status"},"country":{"type":"string","title":"Country"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["opaque_customer_id","name","customer_type","status","country","created_at"],"title":"CustomerResponse"},"sigtel__bcarried__schemas__PartnerCreate":{"properties":{"slug":{"type":"string","maxLength":50,"minLength":2,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$","title":"Slug"},"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"contact_email":{"type":"string","title":"Contact Email"},"contact_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Name"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["slug","name","contact_email"],"title":"PartnerCreate"},"sigtel__bcarried__schemas__PartnerResponse":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"contact_email":{"type":"string","title":"Contact Email"},"contact_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Name"},"schema_name":{"type":"string","title":"Schema Name"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","slug","name","contact_email","schema_name","status","created_at"],"title":"PartnerResponse"},"sigtel__bcarried__schemas__SubscriptionCreate":{"properties":{"customer_id":{"type":"integer","title":"Customer Id"},"plan_id":{"type":"integer","title":"Plan Id"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"}},"type":"object","required":["customer_id","plan_id"],"title":"SubscriptionCreate"},"sigtel__bss__charging__schemas__TransactionListResponse":{"properties":{"transactions":{"items":{"$ref":"#/components/schemas/ChargingTransactionOut"},"type":"array","title":"Transactions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["transactions","total"],"title":"TransactionListResponse"},"sigtel__bss__mediation__schemas__CdrListResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"records":{"items":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__CdrResponse"},"type":"array","title":"Records"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["customer_id","records","total","page","page_size"],"title":"CdrListResponse","description":"Paginated call history."},"sigtel__bss__mediation__schemas__CdrResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"calling_number":{"type":"string","title":"Calling Number"},"called_number":{"type":"string","title":"Called Number"},"call_start":{"type":"string","format":"date-time","title":"Call Start"},"call_end":{"type":"string","format":"date-time","title":"Call End"},"duration_seconds":{"type":"integer","title":"Duration Seconds"},"call_type":{"type":"string","title":"Call Type"},"direction":{"type":"string","title":"Direction"},"termination_cause":{"type":"string","title":"Termination Cause"},"cell_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cell Id"},"trunk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trunk Id"},"rated":{"type":"boolean","title":"Rated"},"charge_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge Amount"},"charge_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charge Currency"},"included_in_plan":{"type":"boolean","title":"Included In Plan"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"source":{"type":"string","title":"Source"},"raw_cdr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Cdr"},"mediation_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mediation Job Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","calling_number","called_number","call_start","call_end","duration_seconds","call_type","direction","termination_cause","cell_id","trunk_id","rated","charge_amount","charge_currency","included_in_plan","invoice_id","source","raw_cdr","mediation_job_id","created_at"],"title":"CdrResponse","description":"Full CDR with all fields."},"sigtel__bss__mediation__schemas__SmsListResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"records":{"items":{"$ref":"#/components/schemas/sigtel__bss__mediation__schemas__SmsRecordResponse"},"type":"array","title":"Records"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["customer_id","records","total","page","page_size"],"title":"SmsListResponse","description":"Paginated SMS history."},"sigtel__bss__mediation__schemas__SmsRecordResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"sender_number":{"type":"string","title":"Sender Number"},"recipient_number":{"type":"string","title":"Recipient Number"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"direction":{"type":"string","title":"Direction"},"message_type":{"type":"string","title":"Message Type"},"delivery_status":{"type":"string","title":"Delivery Status"},"smsc_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smsc Id"},"rated":{"type":"boolean","title":"Rated"},"charge_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge Amount"},"charge_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charge Currency"},"included_in_plan":{"type":"boolean","title":"Included In Plan"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"source":{"type":"string","title":"Source"},"mediation_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mediation Job Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","sender_number","recipient_number","timestamp","direction","message_type","delivery_status","smsc_id","rated","charge_amount","charge_currency","included_in_plan","invoice_id","source","mediation_job_id","created_at"],"title":"SmsRecordResponse","description":"Full SMS record with all fields."},"sigtel__bss__provisioning__schemas__SubscriptionCreate":{"properties":{"customer_id":{"type":"string","maxLength":36,"title":"Customer Id"},"plan_id":{"type":"integer","title":"Plan Id"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity","default":1},"auto_renew":{"type":"boolean","title":"Auto Renew","default":true},"status_reason":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Status Reason"}},"type":"object","required":["customer_id","plan_id"],"title":"SubscriptionCreate","description":"Create a new subscription."},"sigtel__bss__rating__schemas__CdrListResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"records":{"items":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__CdrResponse"},"type":"array","title":"Records"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["customer_id","records","total","page","page_size"],"title":"CdrListResponse","description":"Paginated call history for a customer."},"sigtel__bss__rating__schemas__CdrResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"calling_number":{"type":"string","title":"Calling Number"},"called_number":{"type":"string","title":"Called Number"},"call_start":{"type":"string","format":"date-time","title":"Call Start"},"call_end":{"type":"string","format":"date-time","title":"Call End"},"duration_seconds":{"type":"integer","title":"Duration Seconds"},"call_type":{"type":"string","title":"Call Type"},"direction":{"type":"string","title":"Direction"},"termination_cause":{"type":"string","title":"Termination Cause"},"cell_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cell Id"},"trunk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trunk Id"},"rated":{"type":"boolean","title":"Rated"},"charge_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge Amount"},"charge_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charge Currency"},"included_in_plan":{"type":"boolean","title":"Included In Plan"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"source":{"type":"string","title":"Source"},"raw_cdr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Cdr"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","calling_number","called_number","call_start","call_end","duration_seconds","call_type","direction","termination_cause","cell_id","trunk_id","rated","charge_amount","charge_currency","included_in_plan","invoice_id","source","raw_cdr","created_at"],"title":"CdrResponse","description":"Full CDR with all fields."},"sigtel__bss__rating__schemas__SmsListResponse":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"records":{"items":{"$ref":"#/components/schemas/sigtel__bss__rating__schemas__SmsRecordResponse"},"type":"array","title":"Records"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["customer_id","records","total","page","page_size"],"title":"SmsListResponse","description":"Paginated SMS history for a customer."},"sigtel__bss__rating__schemas__SmsRecordResponse":{"properties":{"id":{"type":"integer","title":"Id"},"tenant_id":{"type":"integer","title":"Tenant Id"},"customer_id":{"type":"string","title":"Customer Id"},"sender_number":{"type":"string","title":"Sender Number"},"recipient_number":{"type":"string","title":"Recipient Number"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"direction":{"type":"string","title":"Direction"},"message_type":{"type":"string","title":"Message Type"},"delivery_status":{"type":"string","title":"Delivery Status"},"smsc_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smsc Id"},"rated":{"type":"boolean","title":"Rated"},"charge_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge Amount"},"charge_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charge Currency"},"included_in_plan":{"type":"boolean","title":"Included In Plan"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"source":{"type":"string","title":"Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","customer_id","sender_number","recipient_number","timestamp","direction","message_type","delivery_status","smsc_id","rated","charge_amount","charge_currency","included_in_plan","invoice_id","source","created_at"],"title":"SmsRecordResponse","description":"Full SMS record with all fields."}}}}