Methods
GET
Retrieve Single Feature
/backend/api/v1/features/ID - fetch feature with specified ID.
List Features
/backend/api/v1/features/ - list all features.
/backend/api/v1/customers/ID/features/ - list features belonging to customer with specified ID.
/backend/api/v1/customers/ID/features/?includeNumbers - list features belonging to customer with specified ID, including those on numbers owned by the customer.
/backend/api/v1/numbers/ID/features/ - list features belonging to number with specified ID.
Additional Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
CRMReference | string | No | Search for features by exact CRM reference |
dropped | flag | No | Show only dropped features |
active | flag | No | Show only active features |
featureType | string | No | Show features of the specified type |
droppedSince | datetime | No | Only include features dropped since |
reinstatedSince | datetime | No | Only include features reinstated since |
Search Example:
# Find feature by CRM reference
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/features?CRMReference=CRM-12345"
# Find only active features by CRM reference
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/features?CRMReference=CRM-12345&active=true"
# Search within a specific customer's features
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/customers/123/features?CRMReference=CRM-12345"
# Search within a specific number's features
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers/456/features?CRMReference=CRM-12345"
Search Notes:
- The
CRMReferenceparameter performs an exact match - Returns an array containing a single feature (or empty array if not found)
- CRM references are unique, so only one result is expected
- Can be used with customer-specific or number-specific endpoints
- Combining with filters like
activecan exclude dropped features - Optimised for performance using indexed fields
POST
/backend/api/v1/customers/ID/features/ - add a new feature to the specified customer, the newly-added feature will be returned.
/backend/api/v1/numbers/ID/features/ - add a new feature to the specified number, the newly-added feature will be returned.
PATCH
/backend/api/v1/features/ID - update feature with specified ID. The modified feature will be returned.
DELETE
/backend/api/v1/features/ID - delete feature with specified ID.
Actions
Available Actions
drop
Drop (deactivate) a feature. This action changes the feature’s status to dropped and records the drop date.
Parameters:
status(required) - The status name for the dropped feature (e.g., “Dropped”)dateDrop(required) - The date the feature was dropped (format: YYYY-MM-DD)dateBillTo(optional) - Override the calculated bill-to date. If not provided, the system calculates the appropriate date based on the feature type, drop date, and notice periodstatusReason(optional) - Text explanation for dropping the feature
Example:
curl -X POST https://example.com/backend/api/v1/features/123?action=drop \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "Dropped",
"dateDrop": "2025-01-24",
"statusReason": "Customer requested cancellation"
}'
reinstate
Reinstate a previously dropped feature, returning it to active status.
Parameters:
status(required) - The status name for the reinstated feature (e.g., “Active”)dateReinstate(required) - The date the feature is reinstated (format: YYYY-MM-DD)statusReason(optional) - Text explanation for reinstating the feature
Example:
curl -X POST https://example.com/backend/api/v1/features/123?action=reinstate \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "Active",
"dateReinstate": "2025-01-24"
}'
Response Format
Actions return the updated feature object in JSON format, using the same structure as GET requests.
Error Handling
If an action fails, the API will return an appropriate HTTP status code with error details:
{
"error": "Invalid Action",
"error_code": 400502,
"hint": "The action was not performed"
}
Common error codes:
400501- Action not recognised400502- Action failed to execute400503- Missing required parameters403xxx- Permission denied
Fields
| Field | Name | Type | Description |
|---|---|---|---|
| standardFeature | Standard Feature | Preset Value | Predefined feature template to apply standard pricing and settings to this feature |
| featureType | Feature Type | Preset Value | The type of service this feature represents, which will be shown on invoices if no description is given |
| featureCount | Feature Count | Number | The number of instances of this feature being provided, which will multiply charges and discount allowances |
| featureCountCommitted | Feature Committed Count | Number | The minimum number of features the customer should be billed for, even if actual feature count drops below this number |
| featureCountCommittedAuto | Feature Auto Committed Count | Preset Value | Automatic calculation method for committed count, either using initial or peak feature count |
| description | Description | Text | Description of the feature that will appear on invoices instead of the feature type if specified |
| site | Site | Text | Site location where this feature is being provided |
| campaign | Campaign | Text | Sales or marketing campaign associated with this feature |
| customerProducts | Customer Products | Preset Value(s) | Products associated with this feature for product-based reporting and filtering |
| internalUse | Internal Use | Text | Internal notes about this feature (not visible to customers) |
| CRMReference | CRM Reference | Text | External CRM system reference number for this feature |
| status | Feature Status | Preset Value | Status name representing the current state of this feature |
| statusChangedStamp | Status Changed Date | Date | Date when the feature status was most recently changed |
| statusReason | Status Reason | Preset Value | Reason for the current status (e.g., reason for dropping or reinstating) |
| soldDate | Sold Date | Date | Date when the feature was sold, which may differ from when billing begins |
| enteredDate | Entered Date | Date | Date when this feature was initially entered into the system |
| startDate | Start Date | Date | Date from which the feature is active and billing begins |
| endDate | End Date | Date | Date until which the feature is active (inclusive); leave blank for ongoing features |
| dueDate | Due Date | Date | Date from which the next recurring charge will be made |
| annualIncreaseReferenceDate | Annual Increase Reference Date | Date | Date when the next annual increase is due for this feature |
| annualIncreaseProfile | Annual Increase Profile | Preset Value | Annual increase profile name for this feature |
| cancellationNoticeGivenDate | Cancellation Notice Given | Date | Date when cancellation notice was received for this feature |
| renewalDate | Renewal Date | Date | Date when the feature is due for renewal (informational only, no billing effect) |
| minimumTermDate | Minimum Term Date | Date | Date until which the feature will be billed even if dropped before this date |
| committedTermDate | Committed Count Term Date | Date | Date until which the committed count applies for billing purposes |
| totalFeatureValue | Total Feature Value | Currency | Total value of the feature over its lifetime, used for tracking total value charged and remaining |
| instalments | Instalments | Number | Number of instalments over which the total feature value is split |
| connectionTransactionType | Transaction Type (One-Off) | Preset Value | Type of transaction for one-off charges, determining how they appear on invoices |
| connectionCharge | One-Off Charge | Currency | One-off charge applied on the start date of the feature |
| connectionTransactionCode | Transaction Code (One-Off) | Text | Code for one-off transactions that can be included in invoice reports for accounting |
| serviceTransactionType | Transaction Type (Recurring) | Preset Value | Type of transaction for recurring charges, determining how they appear on invoices |
| serviceCharge | Recurring Charge | Currency | Charge applied periodically according to the recurring charge interval |
| serviceChargeInterval | S/C Interval | Preset Value | Frequency of recurring charges and whether they are calendar-aligned or prorated |
| serviceTransactionCode | Transaction Code (Recurring) | Text | Code for recurring transactions that can be included in invoice reports for accounting |
| callsTransactionCode | Transaction Code (Calls) | Text | Code for call/usage transactions that can be included in invoice reports for accounting |
| VATRate | VAT Rate | Preset Value | VAT rate to apply to one-off and recurring charges; uses customer default if not specified |
| VATRateCalls | VAT Rate (Calls) | Preset Value | VAT rate to apply to call/usage charges; uses customer default if not specified |
| totalValueCharged | Total Value Charged | Currency | Total amount of value charged for this feature to date |
| totalValueRemaining | Total Value Remaining | Currency | Remaining value to be charged for this feature (total feature value - total value charged) |
| initialFeatureDiscountScheme | Initial Discount Scheme | Preset Value | Initial discount scheme to apply to this feature |
| initialFeatureDiscountSchemeEndDate | Initial Discount Scheme End Date | Date | Date when the initial discount scheme expires |
| ongoingFeatureDiscountScheme | Ongoing Discount Scheme | Preset Value | Ongoing discount scheme to apply after the initial discount scheme expires |
| ongoingFeatureDiscountSchemeEndDate | Ongoing Discount Scheme End Date | Date | Date when the ongoing discount scheme expires |
| fixedFeeTariff | Fixed Fee Tariff | Preset Value | Fixed fee tariff to apply to this feature, overriding customer or number defaults |
| inboundTariff | Inbound | Preset Value | Tariff to use for inbound calls, overriding customer/number defaults |
| nationalTariff | National | Preset Value | Tariff to use for national calls, overriding customer/number defaults |
| mobileTariff | Mobile | Preset Value | Tariff to use for mobile calls, overriding customer/number defaults |
| nongeographicTariff | Non-geographic | Preset Value | Tariff to use for non-geographic calls, overriding customer/number defaults |
| serviceNumbersTariff | Service Numbers | Preset Value | Tariff to use for service numbers, overriding customer/number defaults |
| internationalTariff | International | Preset Value | Tariff to use for international calls, overriding customer/number defaults |
| extendedInternationalTariff | Extended International | Preset Value | Tariff to use for extended international calls, overriding customer/number defaults |
| surchargesTariff | Surcharges | Preset Value | Tariff to use for surcharges, overriding customer/number defaults |
| bespokeTariff1 | Bespoke Tariff 1 | Preset Value | Tariff to use for bespoke tariff 1, overriding customer/number defaults |
| bespokeTariff2 | Bespoke Tariff 2 | Preset Value | Tariff to use for bespoke tariff 2, overriding customer/number defaults |
| discountPlanAllowancePoolName | Allowance Pool Name | Text | Name for the allowance pool to identify bundles of minutes or call allowances |
| discountPlanMultiplier1 | Discount Plan 1 Multiplier | Number | Multiplier for the first discount plan to control allowance amount |
| discountPlan1 | Discount Plan 1 | Preset Value | First discount plan to apply to this feature |
| discountPlanMultiplier2 | Discount Plan 2 Multiplier | Number | Multiplier for the second discount plan to control allowance amount |
| discountPlan2 | Discount Plan 2 | Preset Value | Second discount plan to apply to this feature |
| discountPlanMultiplier3 | Discount Plan 3 Multiplier | Number | Multiplier for the third discount plan to control allowance amount |
| discountPlan3 | Discount Plan 3 | Preset Value | Third discount plan to apply to this feature |
| discountPlanMultiplier4 | Discount Plan 4 Multiplier | Number | Multiplier for the fourth discount plan to control allowance amount |
| discountPlan4 | Discount Plan 4 | Preset Value | Fourth discount plan to apply to this feature |
| carrier | Feature Carrier | Preset Value | Carrier providing this service |
| carrierProduct | Carrier Product | Text | Product code used by the carrier for this service |
| carrierProductMatches | Carrier Product (Advanced Match) | Text | Advanced matching pattern for carrier product codes for reconciliation |
| carrierReference | Carrier Reference | Text | Reference number used by the carrier for this service |
| carrierReferenceMatches | Carrier Reference (Advanced Match) | Text | Advanced matching pattern for carrier reference numbers for reconciliation |
| connectionChargeCarrier | Carrier One-Off Charge | Currency | One-time wholesale cost charged by the carrier for this service |
| serviceChargeCarrier | Carrier Recurring Charge | Currency | Recurring wholesale cost charged by the carrier for this service |
| soldBy | Sold By | Preset Value | User who sold this feature |
| connectionChargeCommissionProfile | One-Off Commission Profile | Preset Value | Commission profile for one-off charges, defining commission rates and schedules |
| serviceChargeCommissionProfile | Recurring Commission Profile | Preset Value | Commission profile for recurring charges, defining commission rates and schedules |
| callChargeCommissionProfile | Call Commission Profile | Preset Value | Commission profile for call/usage charges, defining commission rates and schedules |
| commissionHolder | Commission Holder | Preset Value | Primary user who receives commission for this feature |
| connectionChargeCommission | One-Off Commission | Currency | Commission amount for one-off charges for the primary commission holder |
| connectionChargeCommissionType | One-Off Commission Type | Preset Value | Commission calculation method for one-off charges (fixed amount or percentage) |
| serviceChargeCommission | Recurring Commission | Currency | Commission amount for recurring charges for the primary commission holder |
| serviceChargeCommissionType | Recurring Commission Type | Preset Value | Commission calculation method for recurring charges (fixed amount or percentage) |
| commissionHolderID2 | Commission Holder 2 | Preset Value | Secondary user who receives commission for this feature |
| connectionChargeCommission2 | One-Off Commission 2 | Currency | Commission amount for one-off charges for the secondary commission holder |
| connectionChargeCommissionType2 | One-Off Commission Type 2 | Preset Value | Commission calculation method for one-off charges for secondary commission holder |
| serviceChargeCommission2 | Recurring Commission 2 | Currency | Commission amount for recurring charges for the secondary commission holder |
| serviceChargeCommissionType2 | Recurring Commission Type 2 | Preset Value | Commission calculation method for recurring charges for secondary commission holder |
| saleType | Sale Type | Preset Value | Type of sale for commission reporting (e.g., new sale, cross-sell, up-sell) |
| updatedDate | Change Effective From | Date | Date from which changes to feature charges should take effect |
| lastUpdatedDate | Last Change Effective From | Date | Date when the most recent change to this feature took effect |
| lastUpdatedReason | Last Change Reason | Text | Reason for the most recent change to this feature |
| renewalPeriodLength | Renewal Period Length | Number | Length of time between renewals of this feature |
| renewalPeriodLengthType | Renewal Period Length Type | Preset Value | Unit of time for the renewal period length (days, weeks, months, years) |
| minimumTermPeriodLength | Minimum Term Length | Number | Minimum contractual period for this feature |
| minimumTermPeriodLengthType | Minimum Term Length Type | Preset Value | Unit of time for the minimum term length (days, weeks, months, years) |
| committedTermPeriodLength | Committed Count Term Length | Number | Period for which the committed count applies |
| committedTermPeriodLengthType | Committed Count Term Length Type | Preset Value | Unit of time for the committed count term length (days, weeks, months, years) |
| noticePeriodLength | Notice Period Length | Number | Required notice period for cancellation of this feature |
| noticePeriodLengthType | Notice Period Length Type | Preset Value | Unit of time for the notice period length (days, weeks, months, years) |
| id | Feature ID | Text | The unique identifier for this feature |