Module ocs_rest_res_product
This library module implements resource handling functions
for a REST server in the ocs application.
Copyright © 2016 - 2026 SigScale Global Inc.
This library module implements resource handling functions
for a REST server in the ocs application.
offer_status() = in_study | in_design | in_test | active | rejected | launched | retired | obsolete
pla_ref() = #pla_ref{id = string() | undefined | '_', href = string() | undefined | '_', name = string() | undefined | '_', class_type = string() | undefined | '_', base_type = string() | undefined | '_', schema = string() | undefined | '_', ref_type = string() | undefined | '_'}
product_price_type() = recurring | one_time | usage | tariff | pla_ref()
product_status() = created | pending_active | aborted | cancelled | active | suspended | pending_terminate | terminated
quantity() = #quantity{amount = integer(), units = atom() | string()}
range() = #range{lower = quantity(), upper = quantity()}
rate() = #rate{numerator = quantity(), denominator = quantity()}
recur_period() = hourly | daily | weekly | monthly | yearly
content_types_accepted() -> ContentTypes
Provides list of resource representations accepted.
content_types_provided() -> ContentTypes
Provides list of resource representations available.
add_offer(RequestBody) -> Result
- RequestBody = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to POST /productCatalogManagement/v2/productOffering.
Add a new Product Offering.
add_product(RequestBody) -> Result
- RequestBody = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to POST /productInventoryManagement/v2/product.
Add a new instance of a Product Offering subscription.
get_offer(ID) -> Result
- ID = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/productOffering/{id}.
Retrieve a Product Offering.
get_product(ID) -> Result
- ID = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productInventoryManagement/v2/product/{id}.
Retrieve a Product Inventory.
get_offers(Query, RequestHeaders) -> Result
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- RequestHeaders = [tuple()]
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/productOffering/.
Retrieve all Product Offerings.
To do
get_products(Query, RequestHeaders) -> Result
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- RequestHeaders = [tuple()]
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productInventoryManagement/v2/product/.
Retrieve all Product Inventories.
get_catalog(Id, Query) -> Result
- Id = string()
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /catalogManagement/v2/catalog/{id}.
Retrieve a catalog .
get_catalogs(Query) -> Result
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/catalog/.
Retrieve all catalogs .
get_category(Id, Query) -> Result
- Id = string()
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/category/{id}.
Retrieve a category.
get_categories(Query) -> Result
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/category/.
Retrieve all catalogs .
get_product_spec(Id, Query) -> Result
- Id = string()
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/productSpecification/{id}.
Retrieve a product specification.
get_product_specs(Query) -> Result
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /productCatalogManagement/v2/productSpecification/.
Retrieve all product specifications.
patch_offer(OfferId, Etag, RequestBody) -> Result
- OfferId = string()
- Etag = undefined | string()
- RequestBody = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to PATCH /productCatalogManagement/v2/productOffering/{id}.
Update a Product Offering using JSON patch method
RFC6902.
get_pla_spec(Id, Query) -> Result
- Id = string()
- Query = [{Key, Value}]
- Key = string()
- Value = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to GET /catalogManegment/v2/plaSpecification/{id}.
Retrieve a pricing logic algorithm specification.
patch_product(ProdId, Etag, RequestBody) -> Result
- ProdId = string()
- Etag = undefined | string()
- RequestBody = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to PATCH /productInventoryManagement/v2/product/{id}.
Update a Product Offering using JSON patch method
RFC6902.
delete_offer(Id) -> Result
- Id = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to DELETE /productCatalogManagement/v2/productOffering/{id}
request to remove a Product Offering.
delete_product(Id) -> Result
- Id = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to DELETE /productInventoryManagement/v2/product/{id}
request to remove a Product Invenotry.
sync_offer(RequestBody) -> Result
- RequestBody = string()
- Result = {ok, ResponseHeaders, ResponseBody} | {error, StatusCode} | {error, StatusCode, Problem}
- ResponseHeaders = [tuple()]
- ResponseBody = iolist()
- StatusCode = 400..599
- Problem = ocs_rest:problem()
Respond to POST /productCatalogManagement/v2/syncOffer.
Sync a Product Offering.
product_status(Status) -> Status
- Status = atom() | string()
CODEC for life cycle status of Product Offering.
product_spec(ID) -> Result
- ID = string()
- Result = {struct, [tuple()]} | {error, 404}
Get Product Specification by ID.
pla_spec(ID) -> Result
- ID = string()
- Result = {struct, [tuple()]} | {error, 404}
Get PLA specification by ID.
offer_status(Status) -> Status
- Status = atom() | string()
CODEC for life cycle status of Product instance.
price_type(Type) -> Type
- Type = string() | usage | recurring | one_time | tariff
CODEC for Price Type.
price_period(Period) -> Period
- Period = string() | hourly | daily | weekly | monthly | yearly
CODEC for Recurring Charge Period.
offer(Product) -> Product
- Product = #offer{name = string() | undefined | '_' | '$1' | '$3', description = string() | undefined | '_', start_date = pos_integer() | undefined | '_', end_date = pos_integer() | undefined | '_', status = offer_status() | '_' | undefined | '_', specification = string() | undefined | '_', bundle = [#bundled_po{name = string() | undefined, status = offer_status() | undefined, lower_limit = non_neg_integer() | undefined, upper_limit = non_neg_integer() | undefined, default = non_neg_integer() | undefined}] | '_', price = [#price{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined, char_value_use = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}], alteration = #alteration{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined} | undefined}] | '_', char_value_use = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}] | '_', last_modified = tuple() | undefined | '_'} | {struct, [tuple()]}
CODEC for Product Offering.
bundled_po(Bundled) -> Bundled
- Bundled = #bundled_po{name = string() | undefined, status = offer_status() | undefined, lower_limit = non_neg_integer() | undefined, upper_limit = non_neg_integer() | undefined, default = non_neg_integer() | undefined} | {struct, list()}
price(Price) -> Price
- Price = #price{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined, char_value_use = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}], alteration = #alteration{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined} | undefined} | {struct, list()}
CODEC for Product Offering Price.
alteration(Alteration) -> Alteration
- Alteration = #alteration{name = string() | undefined, description = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, type = product_price_type() | undefined, period = recur_period() | undefined, units = cents | octets | seconds | messages | undefined, size = integer() | undefined, amount = integer() | undefined, currency = string() | undefined} | {struct, [tuple()]}
CODEC for Product Offering Price Alteration.
char_value_uses(CharValueUses) -> CharValueUses
- CharValueUses = [#char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]}] | {array, [tuple()]}
CODEC for ProductSpecCharValueUses.
char_value_use(CharValueUse) -> CharValueUse
- CharValueUse = #char_value_use{name = string() | undefined, description = string() | undefined, type = string() | undefined, min = non_neg_integer() | undefined, max = pos_integer() | undefined, specification = '_' | string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, values = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}]} | {struct, [tuple()]}
CODEC for ProductSpecCharValueUse.
char_values(CharValues) -> CharValues
- CharValues = [#char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined}] | {array, [tuple()]}
CODEC for ProductSpecCharacteristicValues.
char_value(CharValue) -> CharValue
- CharValue = #char_value{default = boolean() | undefined, units = string() | undefined, start_date = pos_integer() | undefined, end_date = pos_integer() | undefined, value = quantity() | range() | rate() | term() | undefined, from = term() | undefined, to = term() | undefined, type = string() | undefined, interval = open | closed | closed_bottom | closed_top | undefined, regex = {CompiledRegEx::re:mp(), OriginalRegEx::string()} | undefined} | {struct, [tuple()]}
CODEC for ProductSpecCharacteristicValue.
product(Instance) -> Instance
- Instance = #product{id = string() | undefined | '_' | '$1', name = string() | undefined | '_' | '$2', start_date = pos_integer() | undefined | '_' | '$4', end_date = pos_integer() | undefined | '_' | '$5', status = product_status() | undefined | '_', product = string() | undefined | '_' | '$3', characteristics = [{Name::string(), Value::term()}] | '_', payment = [{Price::string(), DueDate::pos_integer()}] | '_', balance = [BucketRef::term()] | '_', service = [ServiceRef::binary()] | '_', last_modified = tuple() | undefined | '_'} | {struct, [tuple()]}
CODEC for Product Inventory.
instance_chars(Characteristics) -> Characteristics
- Characteristics = {array, list()} | [tuple()]
CODEC for Product Inventory characteristics.
pla_ref(Pla) -> Pla
- Pla = #pla_ref{id = string() | undefined | '_', href = string() | undefined | '_', name = string() | undefined | '_', class_type = string() | undefined | '_', base_type = string() | undefined | '_', schema = string() | undefined | '_', ref_type = string() | undefined | '_'} | {struct, [tuple()]}
CODEC for Product Offering Pricing Logic Algorithm.
Generated by EDoc