Apigee · Arazzo Workflow

Apigee Rotate a Developer App Key

Version 1.0.0

Issue a fresh consumer key for an app, grant it product access, then revoke the old key.

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

Provider

apigee

Workflows

rotate-app-key
Create a replacement app key bound to a product, then revoke the prior key.
Reads a developer app, creates a new consumer key, associates an API product with the new key, and deletes the previous key to complete the rotation.
4 steps inputs: apiProduct, appId, developerId, newConsumerKey, newConsumerSecret, oldKeyId, organizationId outputs: createdKey, keyStatus, revokedKey
1
getApp
Read the developer app to confirm it exists and capture its product associations before rotating credentials.
2
createKey
Create the replacement consumer key and secret for the app.
3
grantProduct
Associate the API product with the newly created key so it can access the product's resources immediately.
4
revokeOldKey
Delete the previous consumer key now that the replacement is active and bound to the product.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Apigee Rotate a Developer App Key
  summary: Issue a fresh consumer key for an app, grant it product access, then revoke the old key.
  description: >-
    The credential rotation flow. The workflow reads a developer app, creates a
    new consumer key and secret for it, associates the new key with an API
    product so it can be used immediately, and finally deletes the old key once
    the replacement is in place. 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-4270.40
  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-4270.40
      capability_name: Developer Identity & Credential Management
      spec: apigee-developer-app-keys-api-openapi.yml
      confidence: 0.9
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: developerAppKeysApi
  url: ../openapi/apigee-developer-app-keys-api-openapi.yml
  type: openapi
- name: developerAppsApi
  url: ../openapi/apigee-developer-apps-api-openapi.yml
  type: openapi
workflows:
- workflowId: rotate-app-key
  summary: Create a replacement app key bound to a product, then revoke the prior key.
  description: >-
    Reads a developer app, creates a new consumer key, associates an API product
    with the new key, and deletes the previous key to complete the rotation.
  inputs:
    type: object
    required:
    - organizationId
    - developerId
    - appId
    - newConsumerKey
    - newConsumerSecret
    - apiProduct
    - oldKeyId
    properties:
      organizationId:
        type: string
        description: The Apigee organization owning the app.
      developerId:
        type: string
        description: Email or developer id that owns the app.
      appId:
        type: string
        description: Name of the developer app whose key is being rotated.
      newConsumerKey:
        type: string
        description: The replacement consumer key value to provision.
      newConsumerSecret:
        type: string
        description: The replacement consumer secret value to provision.
      apiProduct:
        type: string
        description: API product to associate with the new key.
      oldKeyId:
        type: string
        description: The existing consumer key id to revoke after rotation.
  steps:
  - stepId: getApp
    description: >-
      Read the developer app to confirm it exists and capture its product
      associations before rotating credentials.
    operationId: getDeveloperApp
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: developerId
      in: path
      value: $inputs.developerId
    - name: appId
      in: path
      value: $inputs.appId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      appName: $response.body#/name
  - stepId: createKey
    description: >-
      Create the replacement consumer key and secret for the app.
    operationId: createDeveloperAppKey
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: developerId
      in: path
      value: $inputs.developerId
    - name: appId
      in: path
      value: $inputs.appId
    requestBody:
      contentType: application/json
      payload:
        consumerKey: $inputs.newConsumerKey
        consumerSecret: $inputs.newConsumerSecret
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      createdKey: $response.body#/consumerKey
  - stepId: grantProduct
    description: >-
      Associate the API product with the newly created key so it can access the
      product's resources immediately.
    operationId: updateDeveloperAppKey
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: developerId
      in: path
      value: $inputs.developerId
    - name: appId
      in: path
      value: $inputs.appId
    - name: keyId
      in: path
      value: $inputs.newConsumerKey
    requestBody:
      contentType: application/json
      payload:
        apiProducts:
        - $inputs.apiProduct
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      keyStatus: $response.body#/status
  - stepId: revokeOldKey
    description: >-
      Delete the previous consumer key now that the replacement is active and
      bound to the product.
    operationId: deleteDeveloperAppKey
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    - name: developerId
      in: path
      value: $inputs.developerId
    - name: appId
      in: path
      value: $inputs.appId
    - name: keyId
      in: path
      value: $inputs.oldKeyId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      revokedKey: $response.body#/consumerKey
  outputs:
    createdKey: $steps.createKey.outputs.createdKey
    keyStatus: $steps.grantProduct.outputs.keyStatus
    revokedKey: $steps.revokeOldKey.outputs.revokedKey

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-rotate-app-key-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.