Apigee · Arazzo Workflow

Apigee API Hub Catalog and Lint

Version 1.0.0

Register an API in API Hub, add a version and spec, trigger a lint, then read the lint outcome.

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

Provider

apigee

Workflows

catalog-and-lint-api
Create an API, version, and spec in API Hub, then lint and inspect the spec.
Creates an API, adds a version and a spec, triggers a lint of the spec, and reads the spec back to surface the lint response.
5 steps inputs: apiDisplayName, apiId, locationId, projectId, specDisplayName, specId, versionDisplayName, versionId outputs: apiName, lintOperation, lintResponse, specName
1
createApi
createApi
Create the API resource that will hold versions and specs in API Hub.
2
createVersion
createApiVersion
Add a version to the API representing a specific release.
3
createSpec
createApiSpec
Attach a machine-readable specification to the version with strict parsing.
4
lintSpec
lintApiSpec
Trigger a lint of the spec, which returns a long-running operation while validation runs.
5
readLintResult
getApiSpec
Read the spec back to surface the lint response recorded against it.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Apigee API Hub Catalog and Lint
  summary: Register an API in API Hub, add a version and spec, trigger a lint, then read the lint outcome.
  description: >-
    The API Hub cataloging flow. The workflow creates an API resource, adds a
    version to it, attaches a machine-readable specification, kicks off a lint of
    that spec, and reads the spec back to inspect the lint response. Because API
    Hub linting is a long-running operation and the API Hub description exposes no
    operation-polling endpoint, the lint step records the returned operation name
    and the flow then reads the spec to surface lint results. 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: apigeeApiHub
  url: ../openapi/apigee-api-hub-openapi.yml
  type: openapi
workflows:
- workflowId: catalog-and-lint-api
  summary: Create an API, version, and spec in API Hub, then lint and inspect the spec.
  description: >-
    Creates an API, adds a version and a spec, triggers a lint of the spec, and
    reads the spec back to surface the lint response.
  inputs:
    type: object
    required:
    - projectId
    - locationId
    - apiId
    - apiDisplayName
    - versionId
    - versionDisplayName
    - specId
    - specDisplayName
    properties:
      projectId:
        type: string
        description: Google Cloud project id hosting the API Hub.
      locationId:
        type: string
        description: Google Cloud location of the API Hub resources.
      apiId:
        type: string
        description: Id to assign to the new API resource.
      apiDisplayName:
        type: string
        description: Display name for the API.
      versionId:
        type: string
        description: Id to assign to the new API version.
      versionDisplayName:
        type: string
        description: Display name for the version.
      specId:
        type: string
        description: Id to assign to the new spec.
      specDisplayName:
        type: string
        description: Display name for the spec.
  steps:
  - stepId: createApi
    description: >-
      Create the API resource that will hold versions and specs in API Hub.
    operationId: createApi
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: locationId
      in: path
      value: $inputs.locationId
    - name: apiId
      in: query
      value: $inputs.apiId
    requestBody:
      contentType: application/json
      payload:
        displayName: $inputs.apiDisplayName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      apiName: $response.body#/name
  - stepId: createVersion
    description: >-
      Add a version to the API representing a specific release.
    operationId: createApiVersion
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: locationId
      in: path
      value: $inputs.locationId
    - name: apiId
      in: path
      value: $inputs.apiId
    - name: versionId
      in: query
      value: $inputs.versionId
    requestBody:
      contentType: application/json
      payload:
        displayName: $inputs.versionDisplayName
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      versionName: $response.body#/name
  - stepId: createSpec
    description: >-
      Attach a machine-readable specification to the version with strict parsing.
    operationId: createApiSpec
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: locationId
      in: path
      value: $inputs.locationId
    - name: apiId
      in: path
      value: $inputs.apiId
    - name: versionId
      in: path
      value: $inputs.versionId
    - name: specId
      in: query
      value: $inputs.specId
    requestBody:
      contentType: application/json
      payload:
        displayName: $inputs.specDisplayName
        parsingMode: STRICT
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      specName: $response.body#/name
  - stepId: lintSpec
    description: >-
      Trigger a lint of the spec, which returns a long-running operation while
      validation runs.
    operationId: lintApiSpec
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: locationId
      in: path
      value: $inputs.locationId
    - name: apiId
      in: path
      value: $inputs.apiId
    - name: versionId
      in: path
      value: $inputs.versionId
    - name: specId
      in: path
      value: $inputs.specId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      lintOperation: $response.body#/name
  - stepId: readLintResult
    description: >-
      Read the spec back to surface the lint response recorded against it.
    operationId: getApiSpec
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: locationId
      in: path
      value: $inputs.locationId
    - name: apiId
      in: path
      value: $inputs.apiId
    - name: versionId
      in: path
      value: $inputs.versionId
    - name: specId
      in: path
      value: $inputs.specId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      lintResponse: $response.body#/lintResponse
  outputs:
    apiName: $steps.createApi.outputs.apiName
    specName: $steps.createSpec.outputs.specName
    lintOperation: $steps.lintSpec.outputs.lintOperation
    lintResponse: $steps.readLintResult.outputs.lintResponse

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-catalog-api-hub-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 email required.

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