Precios dinámicos
Como vendedor, revendedor o usuario que desea obtener precios de forma programática, es posible que desee obtener precios de forma dinámica para poder cotizar precios reales y hacer predicciones de costes sobre lo que va a costar un servicio o software. Para ello, puede aprovechar la API del Catálogo Global para obtener esos precios dinámicos. Para utilizar la API, debe disponer de la autenticación correcta.
Identificación de una oferta y disponibilidad regional
Con este ejemplo verá cómo identificar una oferta y las regiones que están disponibles. Para ello, realizará una llamada API a la CG para obtener una lista de todas las ofertas, filtrará los resultados para identificar la oferta deseada y realizará una llamada API para obtener las regiones en las que la oferta está disponible. Tenga en cuenta que identifica las regiones en las que está disponible un plan específico y no si un servicio está disponible en todas las regiones.
Para listar todas las ofertas, utilice el siguiente comando :
curl --request GET
--url `https://globalcatalog.cloud.ibm.com/api/v1?q=kind:service`
--header `accept: application/json`
En la respuesta, puede identificar el ID de servicio del grupo de Power Systems Virtual Server: ' abd259f0-9990-11e8-acc8-b9f54a8f1661.
Por lo tanto, puede ejecutar el siguiente comando para obtener los ID de plan para Power Systems Virtual Server Group.
curl -X 'GET'
--url 'https://globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/plan?_offset=0&_limit=50'
-H 'accept: application/json'
A continuación se muestra un ejemplo de respuesta para el comando que acaba de ejecutar. La matriz de recursos enumera todos los planes del servicio. Cada entrada de la matriz es un plan. El campo importante del objeto plan es el campo "
id ". En la siguiente respuesta, verá que " f165dd34-3a40-423b-9d95-e90a23f724dd " es el ID.
{
"offset": 0,
"limit": 50,
"count": 2,
"resource_count": 2,
"first": "https://globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/plan?languages=en-US%2Cen%3Bq%3D0.9",
"resources": [
{
"_id": "f165dd34-3a40-423b-9d95-e90a23f724dd",
"_rev": "5-3709538cdcff35d2917d56c3cafb1fac",
"active": true,
"catalog_crn": "crn:v1:bluemix:public:globalcatalog::::plan:f165dd34-3a40-423b-9d95-e90a23f724dd",
"children_url": "https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/%2A",
"complete": true,
"created": "2019-06-14T22:52:18.378Z",
"disabled": false,
"geo_tags": [
"che01",
"dal10",
"dal12",
"eu-de-1",
"eu-de-2",
"lon04",
"lon06",
"mad02",
"mad04",
"mon01",
"osa21",
"sao01",
"sao04",
"syd04",
"syd05",
"tok04",
"tor01",
"wdc06",
"wdc07",
"us-east",
"us-south"
],
"id": "f165dd34-3a40-423b-9d95-e90a23f724dd",
"images": {
"feature_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"medium_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"small_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg"
},
"kind": "plan",
"metadata": {
"compliance": [
"minisd"
],
"original_name": "power-virtual-server-project",
"other": {
"pricing_schema_url": "https://power-iaas.cloud.ibm.com/cost-estimator"
},
"plan": {
"allow_internal_users": true,
"async_provisioning_supported": true,
"async_unprovisioning_supported": true,
"bindable": false,
"reservable": false,
"service_check_enabled": false,
"single_scope_instance": "",
"test_check_interval": 0
},
"pricing": {
"metrics": null,
"origin": "pricing_catalog",
"starting_price": {},
"type": "Paid",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/pricing"
},
"rc_compatible": true,
"service": {
"async_provisioning_supported": true,
"async_unprovisioning_supported": true,
"bindable": false,
"custom_create_page_hybrid_enabled": false,
"extension": null,
"iam_compatible": true,
"parameters": [],
"plan_updateable": true,
"rc_provisionable": true,
"service_check_enabled": false,
"service_key_supported": false,
"state": "",
"test_check_interval": 0,
"type": "",
"unique_api_key": false,
"user_defined_service": null
},
"ui": {
"strings": {
"en": {
"bullets": [
{
"description": "Enables provisioning of Power Virtual Server LPARs in the chosen region."
}
]
}
}
}
},
"name": "power-virtual-server-group",
"overview_ui": {
"en": {
"description": "A Power Systems Virtual Server group for the specified IBM Cloud region.",
"display_name": "Power Systems Virtual Server Group",
"long_description": "A Power Systems Virtual Server group for the specified IBM Cloud region."
}
},
"parent_id": "abd259f0-9990-11e8-acc8-b9f54a8f1661",
"parent_url": "https://globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661",
"pricing_tags": [
"allow_internal_users",
"paid",
"paid_only"
],
"provider": {
"email": "pil@us.ibm.com",
"name": "IBM"
},
"tags": [
"apidocs_enabled",
"beryllium",
"freesia",
"ibm_created",
"rc_compatible"
],
"updated": "2024-03-15T13:14:09.574263813-04:00",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd?languages=en-US%2Cen%3Bq%3D0.9",
"visibility": {
"restrictions": "public"
}
},
{
"_id": "1112d6a9-71d6-4968-956b-eb3edbf0225b",
"_rev": "22-c4780dfb7c2ca400029754649383507e",
"active": true,
"catalog_crn": "crn:v1:bluemix:public:globalcatalog::::plan:1112d6a9-71d6-4968-956b-eb3edbf0225b",
"children_url": "https://globalcatalog.cloud.ibm.com/api/v1/1112d6a9-71d6-4968-956b-eb3edbf0225b/%2A",
"complete": true,
"created": "2024-02-14T11:00:24.476151306-05:00",
"disabled": false,
"geo_tags": [
"satcon_dal",
"satcon_fra",
"satcon_mad",
"satcon_osa",
"satcon_sao",
"satcon_syd",
"satcon_tok",
"satcon_tor",
"satcon_wdc"
],
"id": "1112d6a9-71d6-4968-956b-eb3edbf0225b",
"images": {
"feature_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"medium_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg",
"small_image": "https://cache.globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661/artifacts/cache/66c89a2644c2ac54745d6ab9ecf4da8e-public/IBM_Power_CloudCatalog%202.svg"
},
"kind": "plan",
"metadata": {
"compliance": [
"minisd"
],
"original_name": "power-virtual-server-private-group",
"plan": {
"allow_internal_users": true,
"async_provisioning_supported": false,
"async_unprovisioning_supported": false,
"bindable": false,
"reservable": false,
"service_check_enabled": false,
"single_scope_instance": "",
"test_check_interval": 0
},
"pricing": {
"metrics": null,
"origin": "pricing_catalog",
"starting_price": {},
"type": "free",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/1112d6a9-71d6-4968-956b-eb3edbf0225b/pricing"
},
"rc_compatible": true,
"service": {
"async_provisioning_supported": false,
"async_unprovisioning_supported": false,
"bindable": false,
"custom_create_page_hybrid_enabled": false,
"extension": null,
"iam_compatible": true,
"parameters": [],
"plan_updateable": false,
"rc_provisionable": true,
"service_check_enabled": false,
"service_key_supported": false,
"state": "",
"test_check_interval": 0,
"type": "",
"unique_api_key": false,
"user_defined_service": null
},
"sla": {
"dr": {
"dr": true
}
},
"ui": {
"strings": {
"en": {
"bullets": [
{
"description": "Enables use of Power Virtual Server Private Cloud resources in the chosen satellite location."
}
]
}
}
}
},
"name": "power-virtual-server-private-group",
"overview_ui": {
"en": {
"description": "A Power Systems Virtual Server Private Cloud group for the specified IBM Cloud Satellite location.",
"display_name": "Power Virtual Server Private Cloud Group",
"long_description": "A Power Systems Virtual Server Private Cloud group for the specified IBM Cloud Satellite location."
}
},
"parent_id": "abd259f0-9990-11e8-acc8-b9f54a8f1661",
"parent_url": "https://globalcatalog.cloud.ibm.com/api/v1/abd259f0-9990-11e8-acc8-b9f54a8f1661",
"pricing_tags": [
"free",
"allow_internal_users"
],
"provider": {
"email": "pil@us.ibm.com",
"name": "IBM"
},
"tags": [
"rc_compatible",
"apidocs_enabled",
"compute",
"virtualservers",
"ibm_created",
"satellite_enabled"
],
"updated": "2024-06-20T10:12:47.969618989-04:00",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/1112d6a9-71d6-4968-956b-eb3edbf0225b?languages=en-US%2Cen%3Bq%3D0.9",
"visibility": {
"restrictions": "public"
}
}
]
}
Determinación de planes válidos para una región determinada
En el siguiente ejemplo, verá cómo encontrar planes válidos para una región específica. Para ello, realizará una llamada a la API para recuperar la lista de planes válidos para una oferta en una región especificada y, a continuación, interpretará la respuesta de la API para comprender los planes disponibles. Para más información, consulte la documentación de la API: Obtenga los despliegues de precios de un plan.
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}/pricing/deployment'
--header 'accept: application/json'
En ese ejemplo, introduzca el ID del plan que encontró en el paso anterior en lugar de " ID.
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/pricing/deployment'
--header 'accept: application/json'
A continuación se muestra un ejemplo de respuesta que sólo enumera la primera métrica:
{
"offset":0,
"limit":50,
"count":5,
"resource_count":5,
"resources":[
{
"deployment_id":"f165dd34-3a40-423b-9d95-e90a23f724dd:eu-de-114101",
"deployment_location":"eu-de-1",
"deployment_region":"eu-de-1",
"origin":"pricing_catalog",
"type":"Paid",
"i18n":{
},
"starting_price":{
},
"effective_from":"2024-11-01T00:00:00Z",
"effective_until":"9999-09-30T00:00:00Z",
"metrics":[
{
"part_ref":"",
"metric_id":"ibm-i-rds",
"tier_model":"Linear Tier",
"resource_display_name":"APPLICATION_INSTANCES",
"charge_unit_display_name":"IBM i RDS License/user-hour",
"charge_unit_name":"IBMIRDS_APPLICATION_INSTANCES",
"charge_unit":"Application Instance",
"charge_unit_quantity":1,
"amounts":[
{
"country":"USA",
"currency":"USD",
"prices":[
{
"quantity_tier":1,
"price":0.1808
}
]
},
{
"country":"USD",
"currency":"USD",
"prices":[
{
"quantity_tier":1,
"price":0.1808
}
]
},
{
"country":"CAN",
"currency":"CAD",
"prices":[
{
"quantity_tier":1,
"price":0.24962151999999999
}
]
},
{
"country":"AUS",
"currency":"AUD",
"prices":[
{
"quantity_tier":1,
"price":0.2696696184
}
]
},
{
"country":"ISA",
"currency":"USD",
"prices":[
{
"quantity_tier":1,
"price":0.1808
}
]
},
"usage_cap_qty":0,
"display_cap":0,
"effective_from":"2024-11-01T00:00:00Z",
"effective_until":"9999-12-31T00:00:00Z",
"additional_properties":{
"included_quantities":{
"account":0,
"instance":0
}
}
},
El objeto resources de la respuesta es una lista de despliegues o ubicaciones en las que está disponible el plan. En este caso, el plan está disponible en todo el mundo. Hay otras situaciones en las que la implantación es específica de una región,
como " us-south, " us-east, etc.
En el caso de que el despliegue del plan sea global, los precios para una región específica pueden consultarse utilizando la siguiente API:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}:global/pricing?deployment_region={ region_id}'
--header 'accept: application/json'
Utilice el ID del plan que encontró en el paso anterior:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd:global/pricing?deployment_region={ region_id}'
--header 'accept: application/json'
Un ejemplo de un plan que se despliega globalmente y tiene precios específicos por región es el Plan Estándar Cloud Object Storage. El Id del plan es ' 744bfc56-d12c-4866-88d5-dac9139e0e5d. Este plan tiene una región específica
para el " eu-de. Este ' region_id y debe coincidir con uno de los valores de ' deployment_region en el array ' deployment_locations ' de la respuesta anterior.
También hay planes globales con precios globales que no utilizan la variable " deployment_regions ".
A continuación se muestra un ejemplo en el que se utiliza el punto final de la API con eu-de deployment_region.
https://globalcatalog.cloud.ibm.com/api/v1/744bfc56-d12c-4866-88d5-dac9139e0e5d:global/pricing?deployment_region=eu-de
Este es el ejemplo de respuesta:
{
"deployment_id": "744bfc56-d12c-4866-88d5-dac9139e0e5d:global",
"deployment_location": "global",
"deployment_region": "eu-de",
"origin": "pricing_catalog",
"type": "paygo",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/744bfc56-d12c-4866-88d5-dac9139e0e5d:global/pricing?deployment_region=eu-de",
"i18n": {},
"starting_price": {},
"effective_from": "2024-09-01T00:00:00Z",
"effective_until": "9999-12-31T00:00:00Z",
"metrics": [
{
"part_ref": "",
"metric_id": "COSVLTBCALL",
"tier_model": "Granular Tier",
"resource_display_name": "Vault Class B calls",
"charge_unit_display_name": "API_CALLS",
"charge_unit_name": "VAULT_CLASS_B_CALLS",
"charge_unit": "API_CALLS",
"charge_unit_quantity": 10000,
"amounts": [
{
"country": "USA",
"currency": "USD",
"prices": [
{
"quantity_tier": 1,
"price": 0.01045
}
]
}
],
"usage_cap_qty": 0,
"display_cap": 0,
"effective_from": "2024-09-01T00:00:00Z",
"effective_until": "9999-12-31T00:00:00Z",
"additional_properties": {}
}
]
}
En el caso de que el despliegue del plan no sea global, los precios para una ubicación de despliegue específica pueden consultarse utilizando la siguiente API:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}/pricing'
--header 'accept: application/json'
Utilice el ID del plan del paso anterior:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/pricing'
--header 'accept: application/json'
El ' {id} ' es el ID del ' deployment_id ' del despliegue. Puede localizar la ubicación de despliegue y el ' deployment_id ' asociado utilizando la API comentada anteriormente.
Ilustremos este escenario utilizando el ID del plan: ' databases-for-postgresql-standard. Un plan en el Servicio de Databases for PostgreSQL, id de servicio: ' databases-for-postgresql.
Una de las ubicaciones de despliegue de este plan está disponible en " au-syd y el " deployment_id " para esta ubicación es " databases-for-postgresql-standard:au-syd.
La llamada a la API sería la siguiente https://globalcatalog.cloud.ibm.com/api/v1/databases-for-postgresql-standard:au-syd.
A continuación se muestra una respuesta para la llamada a la API:
{
"deployment_id": "databases-for-postgresql-standard:au-syd",
"deployment_location": "au-syd",
"deployment_region": "au-syd",
"origin": "pricing_catalog",
"type": "paygo",
"url": "https://globalcatalog.cloud.ibm.com/api/v1/databases-for-postgresql-standard:au-syd/pricing",
"i18n": {},
"starting_price": {},
"effective_from": "2024-09-01T00:00:00Z",
"effective_until": "9999-12-31T00:00:00Z",
"metrics": [
{
"part_ref": "",
"metric_id": "databases-for-postgresql-cpu",
"tier_model": "Linear Tier",
"resource_display_name": "Databases for PostgreSQL CPU",
"charge_unit_display_name": "CPU",
"charge_unit_name": "VIRTUAL_PROCESSOR_CORES",
"charge_unit": "Virtual Processor Core-Hour",
"charge_unit_quantity": 1,
"amounts": [
{
"country": "USA",
"currency": "USD",
"prices": [
{
"quantity_tier": 1,
"price": 32.342
}
]
}
],
"usage_cap_qty": 0,
"display_cap": 0,
"effective_from": "2024-09-01T00:00:00Z",
"effective_until": "9999-12-31T00:00:00Z"
}
]
}
Identificar métricas válidas para un determinado plan o región
La siguiente información le ayudará a identificar métricas válidas para un plan y una región concretos. Las métricas son especificaciones de recursos u operaciones que determinan el uso para la fijación de precios. Realice una llamada a la API para obtener una lista de las métricas válidas de un plan determinado en una región específica y, a continuación, analice la respuesta para obtener información detallada sobre las métricas.
El siguiente ejemplo muestra una llamada API para el servicio Power Systems Virtual Server Group. Como hemos visto antes, el ID es ' f165dd34-3a40-423b-9d95-e90a23f724dd.
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/pricing/deployment'
--header 'accept: application/json'
A continuación se muestra un ejemplo de respuesta:
{
"offset": 0,
"limit": 1,
"count": 21,
"resource_count": 1,
"resources": [
{
"deployment_id": "f165dd34-3a40-423b-9d95-e90a23f724dd:che0142579",
"deployment_location": "che01",
"deployment_region": "che01",
"origin": "pricing_catalog",
"type": "Paid",
"i18n": {},
"starting_price": {},
"effective_from": "2024-07-01T00:00:00Z",
"effective_until": "9999-09-30T00:00:00Z",
"metrics": [
{
"part_ref": "",
"metric_id": "tier3-storage",
"tier_model": "Linear Tier",
"resource_display_name": "HDD Storage Gigabyte-Hours",
"charge_unit_display_name": "HDD Storage Gigabyte-Hour",
"charge_unit_name": "TIER_THREE_STORAGE_GIGABYTE_HOURS",
"charge_unit": "HDD Storage Gigabyte-Hour",
"charge_unit_quantity": 1,
"amounts": [
{
"country": "USA",
"currency": "USD",
"prices": [
{
"quantity_tier": 1,
"price": 0.000171798
}
]
}
],
"usage_cap_qty": 0,
"display_cap": 0,
"effective_from": "2024-07-01T00:00:00Z",
"effective_until": "9999-12-31T00:00:00Z"
}
]
}
]
}
Inspeccione la matriz de recursos para despliegues. Cada despliegue tiene el campo " deployment_location ", que hace referencia a una localidad o región específica en la que está disponible un plan.
La siguiente tabla muestra los campos del cuerpo de la respuesta y sus descripciones. Para más información, consulte la documentación de la API del Catálogo Global.
| Campo JSON | Descripción |
|---|---|
deployment_id |
El ID del objeto de despliegue del que procede esta tarificación. |
deployment_location |
La ubicación del despliegue de este precio es de. Como ' che01. |
deployment_region |
Es la región en la que el plan de despliegue debe recuperar los precios del plan para un despliegue global. Para este ejemplo es che01. |
origin |
De dónde proceden los datos sobre precios. Para este ejemplo, es ' pricing_catalog y está designado por la Fuente de Precios en la UI del Catálogo Global. |
type |
Tipo de plan. Los valores válidos son free, trial, paygo, paid, bluemix-subscription y ibm-subscription. Para obtener más información, consulte Tipos de cuentas. |
url |
La url del artefacto. Esta es la url que puede utilizar para obtener precios. |
starting_price |
Información sobre el precio inicial específico del plan. |
effective_from |
La fecha de inicio de los precios disponibles. |
effective_until |
La fecha de finalización de los precios disponibles. |
metrics |
Especificaciones de recursos u operaciones que determinan el uso para la tarificación. |
part_ref |
El número de referencia de pieza asignado IBM para la métrica. |
metric_id |
La identificación métrica o el número de pieza. |
tier_model |
El modelo de precios por niveles " [1]. Los valores posibles son " Simple Tier" , " Graduated Tier, " Linear Tier o " Block (Step) Tier. Para este ejemplo es ' Linear Tier. Para obtener más información consulte Cómo se le factura. |
resource_display_name |
Nombre para mostrar del recurso. Así es como aparece la métrica en el catálogo. |
charge_unit_display_name |
Nombre para mostrar de la unidad de carga. Nombre de visualización amigable de la unidad para el " charge_unit. |
charge_unit_name |
Nombre asignado a la unidad de carga. Es el ID que se utiliza para medir los usos de la métrica. |
charge_unit |
Esta es la unidad recargable. Para este ejemplo, es ' HDD Storage Gigabyte-Hour. |
charge_unit_quantity |
La cantidad de unidades cargables. En la respuesta del ejemplo, la unidad de carga es 1, lo que significa que se cobra por cada gigabyte utilizado. |
amounts |
El precio por métrica por país y moneda. |
country |
País al que se aplica el precio de este objeto. |
currency |
Moneda para los precios. |
quantity_tier |
Nivel de uso para ese precio en ese nivel. |
price |
Precio por unidad para este nivel. |
included_quanitities |
El número total de objetos libres disponibles. |
Interpretación de los resultados de la API de precios
En la siguiente tabla, mostramos un ejemplo de lo que podría ser la tarificación lineal por tramos. Para el tramo lineal, el importe total es el resultado de multiplicar el precio unitario por recurso y la cantidad de uso.
En la tabla siguiente se muestra lo que se pagaría con un plan basado en un modelo de precios de nivel graduado:
| Cantidad de elementos | Cálculo del cargo | Precio total |
|---|---|---|
| 500 | 500 × 0.000171798 = .0859 | 0,0859 USD |
| 2000 | 2000 x 0.000171798 =.344 | $.344 USD |
| 10000 | 10000 x 0.000171798 = 1.72 | 1.72 USD |
-
En el caso de los precios escalonados, pagas en función del tiempo de ejecución y el consumo de servicios. Sin embargo, las tarifas escalonadas añaden más niveles de precios, ofreciendo a menudo descuentos en los productos para los niveles de consumo más altos. Los precios escalonados se ofrecen en simple, graduado, lineal o en bloque. ↩︎