Add a Bundle to an Account
/accounts/{id}/bundle
Request
-
id(required): string
The ID of the service or account to add the bundle to.
- application/xml
- application/json
object-
creditLimitFlags: integer
(int32)
Flag to set credit limit options. Allowed Values: 1 (Override credit limit), 2 (Prorate based on credit limit), 64 (Enforce credit limit).
-
customizedChargeOffers: array
customizedChargeOffers
The list of customized charge offers in the bundle.
-
customizedDiscountOffers: array
customizedDiscountOffers
The list of customized discount offers.
-
effective: string
(date-time)
The date and time the bundle takes effect.
-
extension: object
extension
The extended attributes.
-
id(required): string
The ID.
-
name(required): string
The bundle's name.
-
notes: object
Notes
array-
Array of:
object CustomizedChargeOffers
The list of customized charge offers in the bundle.
array-
Array of:
object CustomizedDiscountOffers
The list of customized discount offers.
objectobject-
accountId(required): string
The ID of the account associated with the note.
-
amount: number
The amount associated with the note. It can be a payment amount, an adjustment amount, or so on.
-
billId: string
The ID of the bill associated with the note.
-
billUnitId: string
The ID of the bill unit associated with the note.
-
closedDate: string
(date-time)
The date and time the note was resolved.
-
comments: array
comments
The list of comments associated with the note.
-
count: integer
(int32)
The number of comments associated with the note.
-
domainId: integer
(int32)
The domain ID associated with the note.
-
effectiveDate: string
(date-time)
The date and time the comment was posted.
-
eventId: string
The ID of the event associated with the note.
-
extension: object
extension
The extended attributes.
-
header: string
The header associated with the note.
-
id: string
The ID.
-
itemId: string
The ID of the item associated with the note.
-
reasonId: integer
(int32)
The reason ID associated with the note. Possible values are stored in /config/reason_code_scope objects. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the reasons.locale file.
-
serviceId: string
The service ID associated with the note.
-
status: number
The note's status: not set (100), resolved (101), or unresolved (102). The default value is 102.
-
subType: integer
(int32)
The note's subtype. Possible values are stored in the /config/note_type object. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the note.locale file.
-
type: integer
(int32)
The note's type. Possible values are stored in the /config/note_type object. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the note.locale file.
object-
baseChargeOfferRef(required): object
ResourceRef
-
baseProductRef: object
ResourceRef
-
cycleAlignment: string
cycle alignment.
-
cycleChargeType: string
Cycle Charge type.
-
cycleDiscountOverride: number
The fixed amount of the cycle discount override.
-
cycleDiscountPercentOverride: number
The percentage amount of the cycle discount override.
-
cycleEnd: object
EndingType
-
cycleFeeOverride: number
The amount of the cycle fee override.
-
cycleFrequency: string
cycle frequency
-
cycleStart: object
StartingType
-
cycleUnit: string
cycle unit
-
description: string
The charge offer's description.
-
gracePeriodOffset: integer
(int32)
The number to offset the grace period by.
-
gracePeriodUnit: integer
(int32)
The unit for the grace period.
-
inAdvanceBillingFrequency: string
in advance billing frequency.
-
inAdvanceBillingUnit: string
in advance billing unit
-
name: string
The charge offer's name.
-
overriddenCharges: array
overriddenCharges
The overridden charges.
-
purchaseDiscountOverride: number
The fixed amount of the purchase discount override.
-
purchaseDiscountPercentOverride: number
The percentage amount of the purchase discount override.
-
purchaseEnd: object
EndingType
-
purchaseFeeOverride: number
The fixed amount of the purchase fee override.
-
purchaseStart: object
StartingType
-
quantity: integer
(int32)
The quantity purchased.
-
renewalMode: integer
(int32)
How to handle the charge offer's cycle alignment when its bundle is reactivated. Possible values are:
- 0: Cycle aligns with the original billing date or configured specific day of the month.
- 1: Cycle aligns with the reactivation date.
-
status: integer
(int32)
The charge offer's status. Can be one of the following:
- 0: Not set
- 1: Active
- 2: Inactive
- 3: Canceled
-
statusFlag: integer
(int32)
The status flag.
-
tieID: string
-
tieOfferRefs: array
tieOfferRefs
-
usageEnd: object
EndingType
-
usagePercentOverride: number
The percentage amount of the usage override.
-
usageStart: object
StartingType
-
validityAlignMode: string
The validity align mode for a product. Can be one of the following:
- base: Align the validity with baseProductRef passed in request
- any_base_earliest: Aligns the validity dates with the active base charge offer that expires first.
- any_base_latest: Aligns the validity dates with the active base charge offer that expires last.
- any_earliest: Aligns the validity dates with the active charge offer that expires first.
- any_latest: Aligns the validity dates with the active charge offer that expires last.
object-
id(required): string
The ID.
-
uri: string
The Uniform Resource Identifier (URI) associated with the resource.
object-
endDate: string
(date-time)
The date and time the cycle ends.
-
mode(required): string
The ending type mode for a product. Can be one of the following:
- absolute: The end date is a calendar day.
- relativeToStart: The end date is relative to the start date, such as a specified number of billing cycles, months, days, hours, minutes, or seconds after the start date.
- never: There is no set end date.
-
unitSettings(required): object
RelativeSettings
object-
mode(required): string
The starting type mode for a product. Can be one of the following:
- immediately: The start date is set to today. This mode can be used with the purchaseStart, cycleStart, and usageStart parameters.
- absolute: The start date is a calendar date. This mode can be used with the purchaseStart, cycleStart, and usageStart parameters.
- relativeToPurchase: The start date is relative to the purchase date, such as a specified number of billing cycles, months, days, hours, minutes, or seconds after activation. This mode can be used with the cycleStart and usageStart parameters.
- firstUsage: The start day is the day of the first recorded usage.
-
startDate: string
(date-time)
The date and time the cycle starts.
-
unitSettings(required): object
RelativeSettings
array-
Array of:
object overriddenCharges
The overridden charges.
object-
offset: integer
(int32)
The number of days, hours, minutes or so on after the cycle starts or ends.
-
units(required): string
The offset unit. Can be one of the following:
- seconds
- minutes
- hours
- days
- months
- cycles
object-
charges(required): array
charges
The charge details.
-
event(required): string
The event associated with the overridden charges.
array-
Array of:
object Charges
The charge details.
object-
charge(required): array
charge
The charges.
-
endDate: string
(date-time)
The date and time the charge's validity ends.
-
startDate(required): string
(date-time)
The date and time the charge's validity starts.
object-
amount(required): number
The charge amount.
-
priceTag(required): string
The charge's price tag.
-
type(required): string
The charge type.
object-
baseDiscountOfferRef(required): object
ResourceRef
-
cycleAlignment: string
cycle alignment.
-
cycleChargeType: string
Cycle Charge type.
-
cycleEnd: object
EndingType
-
cycleFrequency: string
cycle frequency
-
cycleStart: object
StartingType
-
cycleUnit: string
cycle unit
-
description: string
The discount offer's description.
-
inAdvanceBillingFrequency: string
in advance billing frequency.
-
inAdvanceBillingUnit: string
in advance billing unit
-
name: string
The discount offer's name.
-
overriddenCharges: array
overriddenCharges
The overridden charges.
-
purchaseEnd: object
EndingType
-
purchaseStart: object
StartingType
-
quantity(required): number
The discount's quantity.
-
status: integer
(int32)
The discount offer's status. Can be one of the following:
- 0: Not set
- 1: Active
- 2: Inactive
- 3: Canceled
-
statusFlag: integer
(int32)
The status flag.
-
tieCapability: integer
(int32)
-
tieID: string
-
tieOfferRefs: array
tieOfferRefs
-
usageEnd: object
EndingType
-
usageStart: object
StartingType
array-
Array of:
object overriddenCharges
The overridden charges.
array-
Array of:
object Comments
The list of comments associated with the note.
objectobject-
comment(required): string
The comment.
-
csrAccountId: string
The CSR's account ID.
-
csrFirstName: string
The CSR's first name.
-
csrLastName: string
The CSR's last name.
-
csrLoginId: string
The login ID associated with the CSR.
-
entryDate: string
(date-time)
The date and time the comment was entered by the CSR.
-
externalUser: string
The external user.
-
trackingId: string
The tracking ID.
object-
creditLimitFlags: integer
(int32)
Flag to set credit limit options. Allowed Values: 1 (Override credit limit), 2 (Prorate based on credit limit), 64 (Enforce credit limit).
-
customizedChargeOffers: array
customizedChargeOffers
The list of customized charge offers in the bundle.
-
customizedDiscountOffers: array
customizedDiscountOffers
The list of customized discount offers.
-
effective: string
(date-time)
The date and time the bundle takes effect.
-
extension: object
extension
The extended attributes.
-
id(required): string
The ID.
-
name(required): string
The bundle's name.
-
notes: object
Notes
array-
Array of:
object CustomizedChargeOffers
The list of customized charge offers in the bundle.
array-
Array of:
object CustomizedDiscountOffers
The list of customized discount offers.
objectobject-
accountId(required): string
The ID of the account associated with the note.
-
amount: number
The amount associated with the note. It can be a payment amount, an adjustment amount, or so on.
-
billId: string
The ID of the bill associated with the note.
-
billUnitId: string
The ID of the bill unit associated with the note.
-
closedDate: string
(date-time)
The date and time the note was resolved.
-
comments: array
comments
The list of comments associated with the note.
-
count: integer
(int32)
The number of comments associated with the note.
-
domainId: integer
(int32)
The domain ID associated with the note.
-
effectiveDate: string
(date-time)
The date and time the comment was posted.
-
eventId: string
The ID of the event associated with the note.
-
extension: object
extension
The extended attributes.
-
header: string
The header associated with the note.
-
id: string
The ID.
-
itemId: string
The ID of the item associated with the note.
-
reasonId: integer
(int32)
The reason ID associated with the note. Possible values are stored in /config/reason_code_scope objects. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the reasons.locale file.
-
serviceId: string
The service ID associated with the note.
-
status: number
The note's status: not set (100), resolved (101), or unresolved (102). The default value is 102.
-
subType: integer
(int32)
The note's subtype. Possible values are stored in the /config/note_type object. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the note.locale file.
-
type: integer
(int32)
The note's type. Possible values are stored in the /config/note_type object. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about how to customize these values using the note.locale file.
object-
baseChargeOfferRef(required): object
ResourceRef
-
baseProductRef: object
ResourceRef
-
cycleAlignment: string
cycle alignment.
-
cycleChargeType: string
Cycle Charge type.
-
cycleDiscountOverride: number
The fixed amount of the cycle discount override.
-
cycleDiscountPercentOverride: number
The percentage amount of the cycle discount override.
-
cycleEnd: object
EndingType
-
cycleFeeOverride: number
The amount of the cycle fee override.
-
cycleFrequency: string
cycle frequency
-
cycleStart: object
StartingType
-
cycleUnit: string
cycle unit
-
description: string
The charge offer's description.
-
gracePeriodOffset: integer
(int32)
The number to offset the grace period by.
-
gracePeriodUnit: integer
(int32)
The unit for the grace period.
-
inAdvanceBillingFrequency: string
in advance billing frequency.
-
inAdvanceBillingUnit: string
in advance billing unit
-
name: string
The charge offer's name.
-
overriddenCharges: array
overriddenCharges
The overridden charges.
-
purchaseDiscountOverride: number
The fixed amount of the purchase discount override.
-
purchaseDiscountPercentOverride: number
The percentage amount of the purchase discount override.
-
purchaseEnd: object
EndingType
-
purchaseFeeOverride: number
The fixed amount of the purchase fee override.
-
purchaseStart: object
StartingType
-
quantity: integer
(int32)
The quantity purchased.
-
renewalMode: integer
(int32)
How to handle the charge offer's cycle alignment when its bundle is reactivated. Possible values are:
- 0: Cycle aligns with the original billing date or configured specific day of the month.
- 1: Cycle aligns with the reactivation date.
-
status: integer
(int32)
The charge offer's status. Can be one of the following:
- 0: Not set
- 1: Active
- 2: Inactive
- 3: Canceled
-
statusFlag: integer
(int32)
The status flag.
-
tieID: string
-
tieOfferRefs: array
tieOfferRefs
-
usageEnd: object
EndingType
-
usagePercentOverride: number
The percentage amount of the usage override.
-
usageStart: object
StartingType
-
validityAlignMode: string
The validity align mode for a product. Can be one of the following:
- base: Align the validity with baseProductRef passed in request
- any_base_earliest: Aligns the validity dates with the active base charge offer that expires first.
- any_base_latest: Aligns the validity dates with the active base charge offer that expires last.
- any_earliest: Aligns the validity dates with the active charge offer that expires first.
- any_latest: Aligns the validity dates with the active charge offer that expires last.
object-
id(required): string
The ID.
-
uri: string
The Uniform Resource Identifier (URI) associated with the resource.
object-
endDate: string
(date-time)
The date and time the cycle ends.
-
mode(required): string
The ending type mode for a product. Can be one of the following:
- absolute: The end date is a calendar day.
- relativeToStart: The end date is relative to the start date, such as a specified number of billing cycles, months, days, hours, minutes, or seconds after the start date.
- never: There is no set end date.
-
unitSettings(required): object
RelativeSettings
object-
mode(required): string
The starting type mode for a product. Can be one of the following:
- immediately: The start date is set to today. This mode can be used with the purchaseStart, cycleStart, and usageStart parameters.
- absolute: The start date is a calendar date. This mode can be used with the purchaseStart, cycleStart, and usageStart parameters.
- relativeToPurchase: The start date is relative to the purchase date, such as a specified number of billing cycles, months, days, hours, minutes, or seconds after activation. This mode can be used with the cycleStart and usageStart parameters.
- firstUsage: The start day is the day of the first recorded usage.
-
startDate: string
(date-time)
The date and time the cycle starts.
-
unitSettings(required): object
RelativeSettings
array-
Array of:
object overriddenCharges
The overridden charges.
object-
offset: integer
(int32)
The number of days, hours, minutes or so on after the cycle starts or ends.
-
units(required): string
The offset unit. Can be one of the following:
- seconds
- minutes
- hours
- days
- months
- cycles
object-
charges(required): array
charges
The charge details.
-
event(required): string
The event associated with the overridden charges.
array-
Array of:
object Charges
The charge details.
object-
charge(required): array
charge
The charges.
-
endDate: string
(date-time)
The date and time the charge's validity ends.
-
startDate(required): string
(date-time)
The date and time the charge's validity starts.
object-
amount(required): number
The charge amount.
-
priceTag(required): string
The charge's price tag.
-
type(required): string
The charge type.
object-
baseDiscountOfferRef(required): object
ResourceRef
-
cycleAlignment: string
cycle alignment.
-
cycleChargeType: string
Cycle Charge type.
-
cycleEnd: object
EndingType
-
cycleFrequency: string
cycle frequency
-
cycleStart: object
StartingType
-
cycleUnit: string
cycle unit
-
description: string
The discount offer's description.
-
inAdvanceBillingFrequency: string
in advance billing frequency.
-
inAdvanceBillingUnit: string
in advance billing unit
-
name: string
The discount offer's name.
-
overriddenCharges: array
overriddenCharges
The overridden charges.
-
purchaseEnd: object
EndingType
-
purchaseStart: object
StartingType
-
quantity(required): number
The discount's quantity.
-
status: integer
(int32)
The discount offer's status. Can be one of the following:
- 0: Not set
- 1: Active
- 2: Inactive
- 3: Canceled
-
statusFlag: integer
(int32)
The status flag.
-
tieCapability: integer
(int32)
-
tieID: string
-
tieOfferRefs: array
tieOfferRefs
-
usageEnd: object
EndingType
-
usageStart: object
StartingType
array-
Array of:
object overriddenCharges
The overridden charges.
array-
Array of:
object Comments
The list of comments associated with the note.
objectobject-
comment(required): string
The comment.
-
csrAccountId: string
The CSR's account ID.
-
csrFirstName: string
The CSR's first name.
-
csrLastName: string
The CSR's last name.
-
csrLoginId: string
The login ID associated with the CSR.
-
entryDate: string
(date-time)
The date and time the comment was entered by the CSR.
-
externalUser: string
The external user.
-
trackingId: string
The tracking ID.
Response
204 Response
400 Response
500 Response
Examples
Example 1: Adding a Bundle to an Account
This example shows how to add a bundle to a specified service by submitting a POST request on the REST resource using cURL. For more information about cURL, see "Use cURL".
cURL Command
curl -X POST 'http://hostname:port/bcws/webresources/v1.0/accounts/0.0.0.1+-service-email+265928/bundle' -H 'content-type: application/json' -d @addBundle.json
where:
- hostname is the URL for the Billing Care REST server.
- port is the port for the Billing Care REST server.
- version is the version of the API you're using, such as v1.0.
- addBundle.json is the JSON file that specifies the bundle to add.
You could provide an account ID in the path instead of a service ID to add a bundle at the account level.
Example of Request Body
This example shows the contents of the addBundle.json file sent as the request body.
{
"id": "0.0.0.1+-deal+171251",
"name": "Deal with cycle forward product",
"customizedChargeOffers": [
{
"name": "Product with cycle forward event",
"description": "Product with cycle forward charge more than 1000",
"baseChargeOfferRef": {
"id": "0.0.0.1+-product+168179",
"uri": null
}
}
],
"customizedDiscountOffers": [],
"effective": null
}
Example of Response Body
If successful, the response code 204 is returned with no response body.
Example 2: Overriding a Product During Purchase
This example shows how to purchase a bundle and override its monthly recurring charge by submitting a POST request on the REST resource using cURL. For more information about cURL, see "Use cURL".
cURL Command
curl -X POST 'http://hostname:port/bcws/webresources/v1.0/accounts/0.0.0.1+-service-email+265928/bundle' -H 'content-type: application/json' -d @addBundle.json
where:
- hostname is the URL for the Billing Care REST server.
- port is the port for the Billing Care REST server.
- addBundle.json is the JSON file that specifies the bundle to add.
You could provide an account ID in the path instead of a service ID to add a bundle at the account level.
Example of Request Body
This example shows the contents of the addBundle.json file sent as the request body. PriceTagName is the name of the price tag associated with the override charge.
{
"id": "0.0.0.1+-deal+40683",
"name": "Deal with cycle forward product",
"customizedChargeOffers": [
"overriddenCharges": [
{
"event": "/event/billing/product/fee/cycle/cycle_forward_monthly",
"charges": [
{
"startDate": "2025-11-25",
"charge": [
{
"type": "amount",
"amount": 25,
"priceTag": "PriceTagName"
}
]
}
]
}
]
],
"customizedDiscountOffers": [],
"effective": null
}
Example of Response Body
If successful, the response code 204 is returned with no response body.