Skip to content
AI & Agents
Skill

/dev-console-subscribe-api

Use when the user wants to add, subscribe, enable, or integrate an Adobe API — phrases like "add Analytics", "subscribe Firefly", "enable API", "add API to project", "create credential", "set up OAuth S2S", "subscribe to service", "add service", "connect API", "integrate Adobe

From plugin
skills
322176 skills5 MCP

Claude Code

$ npx -y skills add adobe/skills --skill dev-console-subscribe-api --agent claude-code

SKILL.md

dev-console-subscribe-api.SKILL.md
name: dev-console-subscribe-api
description: Use when the user wants to add, subscribe, enable, or integrate an Adobe API — phrases like "add Analytics", "subscribe Firefly", "enable API", "add API to project", "create credential", "set up OAuth S2S", "subscribe to service", "add service", "connect API", "integrate Adobe API", "I need access to", "set up credentials for", "create project", "create a new project", "new project", "set up a project", "provision API", "provision access", "get API access", "generate credentials", "new credential", "create OAuth", "create S2S". Handles the full flow — finding the API, picking a credential type, selecting a product profile, creating a credential if needed, and subscribing to the API.
license: Apache-2.0

Subscribe API Flow

Guide the user through subscribing an Adobe API to a credential in their workspace, step by step.

**Before starting:** invoke the `dev-console-context` skill.

Steps

1. **Get org** — Call `get_organisations` and ask the user which org to use.

2. **New or existing project?** — Ask the user:

   1. Create a new project
   2. Use an existing project

**If new project (1):**

  • Ask the user for a **title** only (e.g. "My Analytics Project"). Do NOT ask for a name.
  • Derive the `name` from the title automatically: strip all non-alphanumeric characters, camelCase or concatenate words, truncate to 20 characters. For example: "My Analytics Project" → "MyAnalyticsProject".
  • Call `create_project` with `projectType: "default"`, the derived `name`, and the user's title.
  • The response returns both `projectId` and `workspaceId` directly — the default workspace is always **Production**. Do NOT call `list_workspaces` unless the credential type is **User Auth (AdobeId)**, in which case call `list_workspaces` to confirm the available workspaces.

**If existing project (2):**

  • Ask:
     1. All projects
     2. My projects (created or modified by me)
  • 1 → call `get_projects` with `filterBy: "all"`
  • 2 → call `get_projects` with `filterBy: "me"`
  • Show the returned project list as a numbered list (names only, no raw IDs) and ask the user which project they want.
  • Call `list_workspaces` with the chosen project → show workspace list as a numbered list → ask which workspace to use.
  • Once the workspace is selected, **automatically** (without asking):

1. Call `get_credentials` for that workspace. 2. For each credential in the response, call `get_credential_services` with its `id_integration`. Only show credentials returned by `get_credentials` — do NOT include org-level credentials. 3. Display a summary like:

        Here's what's already set up in this workspace:
        
        📋 Credential: "My S2S Cred" (OAuth Server-to-Server)
           APIs subscribed: Adobe Analytics, Firefly API
        
        📋 Credential: "My Web App" (AdobeId)
           APIs subscribed: none

If `get_credentials` returns an empty list, say: *"No credentials found in this workspace yet."* 4. Then proceed to ask which API they want to add.

3. **Find the API** — If the user asks *"what APIs are available"*, *"show me available APIs"*, or similar, call `list_services` with `filterBy: "enabled"` and display only the enabled APIs as a list (name + description, no raw codes). If the user named a specific API, call `list_services` with `filterBy: "enabled"` to find its `code` and full details. Never guess an SDK code.

4. **Pick credential type** — **Always run this step based on the API's supported types — never skip it because an existing credential was found.** An API can have multiple enabled instances with different `type` values. Collect ALL enabled instances for the API code, then:

  • Any instance whose `type` is `admin_entp` → **do not offer it as a selectable option**, but show a note to the user:
     ⚠️  Admin Enterprise credential is also available for this API but is not yet
         supported in this connector. You can still subscribe to it via the
         Adobe Developer Console.
  • If **no instances remain** after setting aside `admin_entp` → tell the user:
     This API only supports Admin Enterprise credentials, which are not yet supported
     in this connector. You can subscribe via the Adobe Developer Console directly.

and stop.

  • If only **one** remaining credential type → proceed with it automatically.
  • If **multiple** remaining credential types → show them as a numbered list and ask: *"This API supports multiple credential types. Which would you like to use?"*

1. Analytics credential *(internal: `analytics`)* — if an `analytics` instance is present 2. User Auth (AdobeId) — for user-facing apps *(internal: `adobeid`)* 3. OAuth Server-to-Server — for server-to-server access *(internal: `oauth_server_to_server`, also used for `entp`)*

  • **Wait for the user to pick before proceeding.** Do not auto-select based on what credentials already exist in the workspace.
  • **Show only credential type names in this list — never mention existing credentials here.** Do not append "subscribe to the existing X credential" or any reference to existing workspace credentials. Existing credential lookup happens in step 6, after the type is chosen.

5. **Check for product profiles** — After the credential type is decided, inspect its `properties.licenseConfigs` array from the matching API instance:

  • If it is **non-empty**: present the profiles as a numbered list (show `name`, never raw `id` or `productId`) and tell the user: *"You can select one or more of these profiles."* Collect their choices — you'll need the selected profiles' `id` and `productId` fields when subscribing.
  • If it is **empty or absent**: skip directly to step 6 with no `licenseConfigs`.
  • **This step must complete before any credential creation or subscription call** — even when
Read more
@adobe
Ships withskills

Repository of Adobe skills for AI coding agents.

322176 skills5 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
322
Star history of adobe/skills on GitHub, a chart by star-history.com

Other skills on skills.

aa-conversion-funnel-analysis

aa-conversion-funnel-a…

Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill…

@adobe@adobeInstall Skill
aa-executive-briefing

aa-executive-briefing

Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this…

@adobe@adobeInstall Skill
aa-kpi-pulse

aa-kpi-pulse

Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when…

@adobe@adobeInstall Skill
aa-top-movers-watchlist

aa-top-movers-watchlis…

Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric…

@adobe@adobeInstall Skill
cja-dimension-analysis

cja-dimension-analysis

Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions…

@adobe@adobeInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw11d393k
@openclaw@openclawInstall Skill

Questions about dev-console-subscribe-api.

Which coding agents can use dev-console-subscribe-api?
dev-console-subscribe-api installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.