Apigee · Arazzo Workflow

Apigee Update an API Product Quota

Version 1.0.0

Read an API product, then update its quota limits while preserving its existing bindings.

1 workflow 1 source API 1 provider
View Spec View on GitHub Advanced API SecurityAgentic AIAnalyticsAPI GatewayAPI GovernanceAPI HubAPI ManagementDeveloper PortalEnterpriseGenerative AIHybridIntegrationsMicroservicesMCPModel Context ProtocolMonetizationArazzoWorkflows

Provider

apigee

Workflows

update-product-quota
Read a product and reapply it with new quota limits.
Reads the API product to capture its current proxies and environments, then updates the product with new quota, quotaInterval, and quotaTimeUnit while preserving the captured bindings.
2 steps inputs: apiProductId, organizationId, quota, quotaInterval, quotaTimeUnit outputs: proxies, updatedQuota
1
getProduct
getApiProduct
Read the API product to capture its current proxies and environments so they can be preserved through the full-object update.
2
applyQuota
updateApiProduct
Update the product with new quota settings, carrying the captured proxies and environments forward.

Source API Descriptions

Arazzo Workflow Specification

apigee-update-product-quota-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Apigee Update an API Product Quota
  summary: Read an API product, then update its quota limits while preserving its existing bindings.
  description: >-
    The quota adjustment flow. Because the Apigee product update replaces the
    full object, the workflow first reads the existing API product to capture its
    proxies and environments, then issues an update that carries those bindings
    forward while applying new quota settings. Every step spells out its request
    inline so the flow can be read and executed without opening the underlying
    OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: apigeeApiManagement
  url: ../openapi/apigee-api-management-openapi.yml
  type: openapi
workflows:
- workflowId: update-product-quota
  summary: Read a product and reapply it with new quota limits.
  description: >-
    Reads the API product to capture its current proxies and environments, then
    updates the product with new quota, quotaInterval, and quotaTimeUnit while
    preserving the captured bindings.
  inputs:
    type: object
    required:
    - organizationId
    - apiProductId
    - quota
    - quotaInterval
    - quotaTimeUnit
    properties:
      organizationId:
        type: string
        description: The Apigee organization owning the product.
      apiProductId:
        type: string
        description: The API product to adjust the quota on.
      quota:
        type: string
        description: Number of requests permitted per quota interval.
      quotaInterval:
        type: string
        description: Time interval over which the quota is applied.
      quotaTimeUnit:
        type: string
        description: Time unit for the quota interval (minute, hour, day, month).
  steps:
  - stepId: getProduct
    description: >-
      Read the API product to capture its current proxies and environments so
      they can be preserved through the full-object update.
    operationId: getApiProduct
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: apiProductId
      in: path
      value: $inputs.apiProductId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      displayName: $response.body#/displayName
      proxies: $response.body#/proxies
      environments: $response.body#/environments
      approvalType: $response.body#/approvalType
  - stepId: applyQuota
    description: >-
      Update the product with new quota settings, carrying the captured proxies
      and environments forward.
    operationId: updateApiProduct
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: apiProductId
      in: path
      value: $inputs.apiProductId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.apiProductId
        displayName: $steps.getProduct.outputs.displayName
        approvalType: $steps.getProduct.outputs.approvalType
        proxies: $steps.getProduct.outputs.proxies
        environments: $steps.getProduct.outputs.environments
        quota: $inputs.quota
        quotaInterval: $inputs.quotaInterval
        quotaTimeUnit: $inputs.quotaTimeUnit
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      updatedQuota: $response.body#/quota
  outputs:
    proxies: $steps.getProduct.outputs.proxies
    updatedQuota: $steps.applyQuota.outputs.updatedQuota