Obtenção de preços dinâmicos
Como vendedor, revendedor ou usuário que deseja obter preços de forma programática, talvez você queira obter preços de forma dinâmica para poder cotar preços reais e fazer previsões de custo de um serviço ou software. Para fazer isso, você pode aproveitar a API do Catálogo Global para obter esse preço dinâmico. Para usar a API, você precisa ter a autenticação correta.
Identificação de uma oferta e disponibilidade regional
Com este exemplo, você verá como identificar uma oferta e as regiões que estão disponíveis. Para isso, você fará uma chamada de API para o GC para listar todas as ofertas, filtrar os resultados para identificar a oferta desejada e fazer uma chamada de API para obter as regiões em que a oferta está disponível. Observe que você identifica as regiões em que um plano específico está disponível e não se um serviço está disponível em todas as regiões.
Para listar todas as ofertas, use o seguinte comando:
curl --request GET
--url `https://globalcatalog.cloud.ibm.com/api/v1?q=kind:service`
--header `accept: application/json`
Na resposta, você pode identificar o ID do serviço do Power Systems Virtual Server Group: ' abd259f0-9990-11e8-acc8-b9f54a8f1661.
Portanto, você pode executar o seguinte comando para obter os IDs de plano do 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 seguir, um exemplo de resposta para o comando que você acabou de executar. A matriz de recursos lista todos os planos do serviço. Cada entrada na matriz é um plano. O campo importante no objeto planejado é o campo " id. Na
resposta a seguir, você verá que " f165dd34-3a40-423b-9d95-e90a23f724dd é a 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"
}
}
]
}
Determinação de planos válidos para uma determinada região
No exemplo a seguir, você verá como encontrar planos válidos para uma região específica. Para fazer isso, você fará uma chamada à API para recuperar a lista de planos válidos para uma oferta em uma região especificada e, em seguida, interpretará a resposta da API para entender os planos disponíveis. Para obter mais informações, consulte a documentação da API: Obter as implantações de preços de um plano.
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}/pricing/deployment'
--header 'accept: application/json'
Nesse exemplo, insira o ID do plano que você encontrou usando a etapa anterior no 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 seguir, um exemplo de resposta que lista apenas a primeira 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
}
}
},
O objeto de recursos na resposta é uma lista de implantações ou locais onde o plano está disponível. Nesse caso, o plano está disponível globalmente. Em outras situações, a implantação é específica de uma região, como " us-south,
" us-east etc.
No caso em que a implementação do plano é global, o preço de uma região específica pode ser consultado usando a seguinte API:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}:global/pricing?deployment_region={ region_id}'
--header 'accept: application/json'
Use a ID do plano que você encontrou na etapa 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'
Um exemplo de plano que é implantado globalmente e tem preços específicos por região é o Cloud Object Storage Standard Plan. O ID do plano é " 744bfc56-d12c-4866-88d5-dac9139e0e5d. Esse plano tem uma região específica para
" eu-de. Esse ' region_id deve corresponder a um dos valores de ' deployment_region na matriz ' deployment_locations na resposta anterior.
Há também planos globais com preços globais que não usam a variável de substituição ' deployment_regions.
A seguir, um exemplo usando o ponto de extremidade da API com ' eu-de ' deployment_region.
https://globalcatalog.cloud.ibm.com/api/v1/744bfc56-d12c-4866-88d5-dac9139e0e5d:global/pricing?deployment_region=eu-de
Este é o exemplo de resposta:
{
"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": {}
}
]
}
No caso em que a implantação do plano não é global, o preço de um local de implantação específico pode ser consultado usando a seguinte API:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/{id}/pricing'
--header 'accept: application/json'
Use a ID do plano da etapa anterior:
curl --request GET
--url 'https://globalcatalog.cloud.ibm.com/api/v1/f165dd34-3a40-423b-9d95-e90a23f724dd/pricing'
--header 'accept: application/json'
O " {id} é a ID do " deployment_id da implantação. Você pode localizar o local de implantação e o " deployment_id associado usando a API discutida anteriormente.
Vamos ilustrar esse cenário usando a ID do plano: ' databases-for-postgresql-standard. Um plano no serviço ' Databases for PostgreSQL, id do serviço: ' databases-for-postgresql.
Um dos locais de implantação desse plano está disponível em " au-syd e o " deployment_id para esse local é " databases-for-postgresql-standard:au-syd.
A chamada da API seria a seguinte: https://globalcatalog.cloud.ibm.com/api/v1/databases-for-postgresql-standard:au-syd.
A seguir, uma resposta para a chamada de 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"
}
]
}
Identificação de métricas válidas para um determinado plano ou região
As informações a seguir servem para ajudá-lo a identificar métricas válidas para um plano e uma região específicos. As métricas são especificações de recursos ou operações que determinam o uso para determinação de preços. Você faz uma chamada à API para listar métricas válidas para um determinado plano em uma região especificada e, em seguida, analisa a resposta para obter detalhes sobre as métricas.
O exemplo a seguir mostra uma chamada de API para o serviço Power Systems Virtual Server Group. Como descobrimos anteriormente, o ID é ' 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 seguir, o exemplo de resposta:
{
"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"
}
]
}
]
}
Inspecione a matriz de recursos para implantações. Cada implantação tem o campo " deployment_location, que se refere a um local ou região específica onde um plano está disponível.
A tabela a seguir mostra os campos do corpo da resposta e suas descrições. Para obter mais informações, consulte a documentação da API do Catálogo Global.
| Campo JSON | Descrição |
|---|---|
deployment_id |
A ID do objeto de implementação de onde vem esse preço. |
deployment_location |
O local de implantação de onde vem esse preço. Por exemplo, ' che01. |
deployment_region |
Essa é a região em que o plano de implantação deve recuperar o preço do plano para uma implantação global. Para este exemplo, é che01. |
origin |
De onde vêm os dados de preços. Para este exemplo, é " pricing_catalog e é designado pela Fonte de preços na UI do Catálogo global. |
type |
Tipo de plano. Os valores válidos são free, trial, paygo, paid, bluemix-subscription e ibm-subscription. Para obter mais informações, consulte Tipos de conta . |
url |
O URL do artefato. Essa é a url que você pode usar para obter preços. |
starting_price |
Informações sobre o preço inicial específico do plano. |
effective_from |
A data de início do preço disponível. |
effective_until |
A data final do preço disponível. |
metrics |
Especificações de recursos ou operações que determinam o uso para determinação de preços. |
part_ref |
O número de referência de peça atribuído IBM para a métrica. |
metric_id |
A ID métrica ou o número da peça. |
tier_model |
O modelo de preço de camada ' [1]. Os valores possíveis são ' Simple Tier, ' Graduated Tier, ' Linear Tier ou ' Block (Step) Tier.
Para este exemplo, é " Linear Tier. Para obter mais informações, consulte Como você é cobrado. |
resource_display_name |
Nome de exibição do recurso. É assim que a métrica aparece no catálogo. |
charge_unit_display_name |
Nome de exibição da unidade de carga. Nome de exibição amigável da unidade para o ' charge_unit. |
charge_unit_name |
Um nome atribuído para a unidade de carga. Essa é a ID usada para medir os usos da métrica. |
charge_unit |
Essa é a unidade carregável. Para este exemplo, é ' HDD Storage Gigabyte-Hour. |
charge_unit_quantity |
A quantidade de unidades carregáveis. Na resposta do exemplo, a unidade de cobrança é 1, o que significa que você é cobrado por cada gigabyte usado. |
amounts |
O preço por métrica por país e moeda. |
country |
País para o qual o preço desse objeto é aplicável. |
currency |
Moeda para os preços. |
quantity_tier |
Nível de uso para esse preço nessa camada. |
price |
Preço por unidade para esse nível. |
included_quanitities |
O número total de objetos livres disponíveis. |
Interpretação dos resultados da API de preços
Na tabela a seguir, estamos mostrando um exemplo do que poderia ser o preço da camada linear. Para o nível linear, o valor total é o resultado da multiplicação do preço unitário por recurso e da quantidade de uso.
A tabela a seguir ilustra o quanto do valor que você paga pelo seu plano se baseia em um modelo de precificação de camada graduada:
| Quantidade de itens | Cálculo de encargo | Preço Total |
|---|---|---|
| 500 | 500 × 0.000171798 = .0859 | uS$ 0,0859 |
| 2.000 | 2000 x 0.000171798 = 0,344 | $.344 USD |
| 10000 | 10000 x 0.000171798 = 1.72 | uS$1.72 |
-
No caso de preços escalonados, você paga com base no tempo de execução e no consumo de serviços. No entanto, as tarifas escalonadas adicionam mais níveis de preços, geralmente oferecendo taxas com desconto em produtos para níveis de consumo mais altos. Os preços escalonados são oferecidos em simples, graduados, lineares ou em blocos. ↩︎