Apigee · Arazzo Workflow

Apigee Publish an API Proxy as a Product

Version 1.0.0

Import a proxy, deploy its revision, then bundle it into an API product ready for consumption.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub Advanced API SecurityAgentic AIAnalyticsAPI GatewayAPI GovernanceAPI HubAPI ManagementDeveloper PortalEnterpriseGenerative AIHybridIntegrationMicroservicesMCPMonetizationArazzoWorkflows

Provider

apigee

Workflows

publish-api-product
Import and deploy a proxy, then expose it through an API product.
Imports a proxy bundle, deploys revision 1 to an environment, creates an API product bundling the proxy, and reads the product to confirm it is ready for developer consumption.
4 steps inputs: bundle, environmentId, organizationId, productName, proxyName outputs: deploymentState, productName, productProxies
1
importProxy
Import the proxy bundle, creating the first revision of a new API proxy.
2
deployRevision
Deploy the imported revision to the environment so it is reachable before the product is published.
3
createProduct
Create an API product bundling the deployed proxy and making it available in the target environment.
4
confirmProduct
Read the product back to confirm its proxies and environments are bound correctly.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Apigee Publish an API Proxy as a Product
  summary: Import a proxy, deploy its revision, then bundle it into an API product ready for consumption.
  description: >-
    The publishing flow that turns a raw proxy into a consumable product. The
    workflow imports an API proxy bundle, deploys its first revision to an
    environment, creates an API product that bundles the proxy, and reads the
    product back to confirm its configuration. 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
  x-realizes-capability-ids:
  - BC-4210.40
  - BC-4270
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-4210.40
      capability_name: Deployment Orchestration
      spec: apigee-deployments-api-openapi.yml
      confidence: 0.7
    - capability_id: BC-4270
      capability_name: Developer Platform & API Ecosystem Management
      spec: apigee-api-products-api-openapi.yml
      confidence: 0.75
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: apiProductsApi
  url: ../openapi/apigee-api-products-api-openapi.yml
  type: openapi
- name: apiProxiesApi
  url: ../openapi/apigee-api-proxies-api-openapi.yml
  type: openapi
- name: deploymentsApi
  url: ../openapi/apigee-deployments-api-openapi.yml
  type: openapi
workflows:
- workflowId: publish-api-product
  summary: Import and deploy a proxy, then expose it through an API product.
  description: >-
    Imports a proxy bundle, deploys revision 1 to an environment, creates an API
    product bundling the proxy, and reads the product to confirm it is ready for
    developer consumption.
  inputs:
    type: object
    required:
    - organizationId
    - environmentId
    - proxyName
    - bundle
    - productName
    properties:
      organizationId:
        type: string
        description: The Apigee organization that will own the proxy and product.
      environmentId:
        type: string
        description: The environment to deploy the proxy revision into.
      proxyName:
        type: string
        description: Unique name for the new API proxy.
      bundle:
        type: string
        description: The API proxy bundle payload (ZIP content) to import.
      productName:
        type: string
        description: Internal name for the API product to publish.
  steps:
  - stepId: importProxy
    description: >-
      Import the proxy bundle, creating the first revision of a new API proxy.
    operationId: createApiProxy
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: name
      in: query
      value: $inputs.proxyName
    - name: action
      in: query
      value: import
    requestBody:
      contentType: application/json
      payload: $inputs.bundle
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      revision: $response.body#/revision
  - stepId: deployRevision
    description: >-
      Deploy the imported revision to the environment so it is reachable before
      the product is published.
    operationId: deployApiProxyRevision
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: environmentId
      in: path
      value: $inputs.environmentId
    - name: apiId
      in: path
      value: $inputs.proxyName
    - name: revisionId
      in: path
      value: $steps.importProxy.outputs.revision
    - name: override
      in: query
      value: true
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      deploymentState: $response.body#/state
  - stepId: createProduct
    description: >-
      Create an API product bundling the deployed proxy and making it available
      in the target environment.
    operationId: createApiProduct
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.productName
        displayName: $inputs.productName
        approvalType: auto
        proxies:
        - $inputs.proxyName
        environments:
        - $inputs.environmentId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      productName: $response.body#/name
  - stepId: confirmProduct
    description: >-
      Read the product back to confirm its proxies and environments are bound
      correctly.
    operationId: getApiProduct
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: apiProductId
      in: path
      value: $inputs.productName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      productProxies: $response.body#/proxies
      productEnvironments: $response.body#/environments
  outputs:
    deploymentState: $steps.deployRevision.outputs.deploymentState
    productName: $steps.createProduct.outputs.productName
    productProxies: $steps.confirmProduct.outputs.productProxies

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/apigee-publish-api-product-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.