From 5e89da8ae995026ce155716b9a9565d1986ece63 Mon Sep 17 00:00:00 2001 From: Chris Garber Date: Fri, 13 Nov 2026 16:25:47 -0500 Subject: [PATCH] PAL-1311 Name SDK operations in shared Fern overrides [Replace the Vapi CLI with a Fern-generated OAuth beta](https://linear.app/vapi/issue/PAL-1311/replace-the-vapi-cli-with-a-fern-generated-oauth-beta) ## Description Adds readable group/method names for all 104 remaining controller-derived operations in the existing shared Fern overrides. All seven server SDKs and the CLI consume these definitions. The 41 already-named operations retain their names. ## How it works Only `fern/apis/api/openapi-overrides.yml` changes. Existing descriptions, availability settings, pagination and other override content are preserved. The generated CLI's HTTP contract is identical after removing the new naming metadata: all 145 operations remain, with unique readable command paths. | Surface | Campaign listing before | Generated preview | | --- | --- | --- | | CLI | `campaigns campaign-controller-find-all` | `campaigns list` | | TypeScript | `campaignControllerFindAll` | `list` | | Python | `campaign_controller_find_all` | `list` | | Go | `CampaignControllerFindAll` | `List` | | C# | `CampaignControllerFindAllAsync` | `ListAsync` | Versioned and specialized operations receive distinct names, such as `list-v2` and `list-contacts-v2`; generators apply each language's existing casing conventions. ## Related PRs - [CLI #21](https://app.graphite.com/github/pr/VapiAI/cli/21) adopts CLI preview output generated with these shared names and retains PKCE, request attribution and schema fixes. - [docs #1422](https://app.graphite.com/github/pr/VapiAI/docs/1422) configures central CLI generation using this same overrides file. It can be reviewed independently. - [vapi #26833](https://app.graphite.com/github/pr/VapiAI/vapi/26833) is superseded: the names now live here instead of controller annotations or dashboard schema changes. - [vapi #26299](https://app.graphite.com/github/pr/VapiAI/vapi/26299) remains the separate native OAuth acceptance change. ## Testing Steps - [x] Existing overrides and HTTP contracts are unchanged apart from naming metadata. - [x] Fern previews succeed for TypeScript, Python, Go, Ruby, C#, PHP, Swift and CLI; Campaign methods use the expected readable names in every SDK. - [x] CLI retains 145 unique operation paths; `campaigns list` and `list-v2` help succeed. - [x] All 290 CLI wire tests pass; end-to-end checks include the renamed Campaign routes, attribution and PKCE startup. - [x] Release schema checks stay below 50 ms locally and pass the 500 ms / 128 MiB / 2 MiB budgets. ## Risks These are breaking SDK method and endpoint-request-type renames. Coordinate compatible package versions before regenerating and publishing server SDK releases. This PR does not publish SDKs or change HTTP routes, operation IDs, authorization, parameters or response schemas. No API deployment is needed for the override-based naming change. --- fern/apis/api/openapi-overrides.yml | 366 ++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) diff --git a/fern/apis/api/openapi-overrides.yml b/fern/apis/api/openapi-overrides.yml index 050c06ef7..31e57ba2a 100644 --- a/fern/apis/api/openapi-overrides.yml +++ b/fern/apis/api/openapi-overrides.yml @@ -10,17 +10,32 @@ paths: # The API still marks these endpoints beta; keep this override until it doesn't /traffic-allocations: get: + x-fern-sdk-group-name: + - traffic-allocations + x-fern-sdk-method-name: list x-fern-availability: generally-available post: + x-fern-sdk-group-name: + - traffic-allocations + x-fern-sdk-method-name: create x-fern-availability: generally-available /traffic-allocations/latest: get: + x-fern-sdk-group-name: + - traffic-allocations + x-fern-sdk-method-name: get-latest x-fern-availability: generally-available /traffic-allocations/metrics: get: + x-fern-sdk-group-name: + - traffic-allocations + x-fern-sdk-method-name: get-metrics x-fern-availability: generally-available /traffic-allocations/{id}: get: + x-fern-sdk-group-name: + - traffic-allocations + x-fern-sdk-method-name: get x-fern-availability: generally-available /enterprise: post: @@ -162,6 +177,9 @@ paths: x-fern-sdk-method-name: create /v2/phone-number: get: + x-fern-sdk-group-name: + - phone-numbers + x-fern-sdk-method-name: list-paginated description: >- Returns a paginated list of phone numbers for the authenticated organization. Search by name, number, or SIP URI using a partial, @@ -274,134 +292,245 @@ paths: x-fern-sdk-method-name: update /campaign: get: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: list description: >- Returns outbound calling campaigns for the authenticated organization. Filter results by campaign ID, status, or creation and update timestamps. post: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: create description: Creates an outbound calling campaign that calls a set of customers. /campaign/{id}: get: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: get description: Returns the outbound calling campaign identified by its ID. delete: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: delete description: Deletes the outbound calling campaign identified by its ID. patch: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: update description: >- Updates the outbound calling campaign identified by its ID. Campaigns can be ended by updating their status to `ended`. /structured-output: get: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: list description: >- Returns structured-output definitions for the authenticated organization. Filter results by ID, name, or creation and update timestamps. post: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: create description: >- Creates a reusable definition for extracting validated data from conversations using an AI model or regular expression. /structured-output/{id}: get: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: get description: Returns the structured-output definition identified by its ID. delete: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: delete description: Deletes the structured-output definition identified by its ID. patch: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: update description: >- Updates the structured-output definition identified by its ID. /structured-output/run: post: + x-fern-sdk-group-name: + - structured-outputs + x-fern-sdk-method-name: run description: >- Runs a saved or transient structured-output definition against one or more calls, optionally returning a preview without updating call artifacts. /reporting/insight: get: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: list description: >- Returns saved reporting insights for the authenticated organization. Filter results by ID or creation and update timestamps. post: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: create description: >- Creates a saved reporting insight that queries call data and presents the results as a bar chart, pie chart, line chart, or text value. /reporting/insight/{id}: get: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: get description: Returns the reporting insight identified by its ID. delete: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: delete description: Deletes the reporting insight identified by its ID. patch: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: update description: Updates the reporting insight identified by its ID. /reporting/insight/{id}/run: post: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: run description: >- Runs a saved reporting insight, optionally overriding its time range and response format. /reporting/insight/preview: post: + x-fern-sdk-group-name: + - insight + x-fern-sdk-method-name: preview description: >- Runs an insight definition without first saving it, returning a preview of the resulting chart or text value. /eval: get: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: list description: >- Returns eval definitions for the authenticated organization. Filter results by ID or creation and update timestamps. post: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: create description: >- Creates a reusable eval that defines a mock conversation and checkpoints for evaluating assistant responses and tool calls. /eval/{id}: get: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: get description: Returns the eval definition identified by its ID. delete: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: delete description: Deletes the eval definition identified by its ID. patch: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: update description: Updates the eval definition identified by its ID. /eval/run: get: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: list-runs description: >- Returns eval runs for the authenticated organization. Filter results by ID or creation and update timestamps. post: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: run description: >- Runs a saved or transient eval against an assistant or squad and creates an eval-run record containing the results. /eval/run/{id}: get: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: get-run description: Returns the eval run identified by its ID. delete: + x-fern-sdk-group-name: + - eval + x-fern-sdk-method-name: delete-run description: Deletes the eval run identified by its ID. /observability/scorecard: get: + x-fern-sdk-group-name: + - observability-scorecard + x-fern-sdk-method-name: list description: >- Returns scorecards for the authenticated organization. Filter results by ID or creation and update timestamps. post: + x-fern-sdk-group-name: + - observability-scorecard + x-fern-sdk-method-name: create description: >- Creates a scorecard containing metrics, scoring conditions, and optional links to assistants whose calls should be evaluated. /observability/scorecard/{id}: get: + x-fern-sdk-group-name: + - observability-scorecard + x-fern-sdk-method-name: get description: Returns the scorecard identified by its ID. delete: + x-fern-sdk-group-name: + - observability-scorecard + x-fern-sdk-method-name: delete description: Deletes the scorecard identified by its ID. patch: + x-fern-sdk-group-name: + - observability-scorecard + x-fern-sdk-method-name: update description: Updates the scorecard identified by its ID. /provider/{provider}/{resourceName}: get: + x-fern-sdk-group-name: + - provider-resources + x-fern-sdk-method-name: list description: >- Returns a paginated list of provider resources for the authenticated organization. Filter pronunciation dictionaries by provider, resource ID, or creation and update timestamps. post: + x-fern-sdk-group-name: + - provider-resources + x-fern-sdk-method-name: create description: >- Creates a pronunciation-dictionary resource for a supported provider, currently Cartesia or ElevenLabs. /provider/{provider}/{resourceName}/{id}: get: + x-fern-sdk-group-name: + - provider-resources + x-fern-sdk-method-name: get description: >- Returns the provider resource identified by its Vapi resource ID. delete: + x-fern-sdk-group-name: + - provider-resources + x-fern-sdk-method-name: delete description: >- Deletes the provider resource identified by its Vapi resource ID. patch: + x-fern-sdk-group-name: + - provider-resources + x-fern-sdk-method-name: update description: >- Updates the provider resource identified by its Vapi resource ID. /knowledge-base: @@ -450,77 +579,314 @@ paths: x-fern-sdk-method-name: get /eval/simulation/personality: post: + x-fern-sdk-group-name: + - simulation-personalities + x-fern-sdk-method-name: create description: Creates a personality, the AI tester's configuration used in simulations. get: + x-fern-sdk-group-name: + - simulation-personalities + x-fern-sdk-method-name: list description: Returns the personalities for the authenticated organization. /eval/simulation/personality/{id}: get: + x-fern-sdk-group-name: + - simulation-personalities + x-fern-sdk-method-name: get description: Returns the specified personality. patch: + x-fern-sdk-group-name: + - simulation-personalities + x-fern-sdk-method-name: update description: Updates the specified personality. Changes apply to future runs. delete: + x-fern-sdk-group-name: + - simulation-personalities + x-fern-sdk-method-name: delete description: Deletes the specified personality. /eval/simulation/scenario: post: + x-fern-sdk-group-name: + - simulation-scenarios + x-fern-sdk-method-name: create description: Creates a scenario, the AI tester's intent plus the success criteria that score a run. get: + x-fern-sdk-group-name: + - simulation-scenarios + x-fern-sdk-method-name: list description: Returns the scenarios for the authenticated organization. /eval/simulation/scenario/{id}: get: + x-fern-sdk-group-name: + - simulation-scenarios + x-fern-sdk-method-name: get description: Returns the specified scenario. patch: + x-fern-sdk-group-name: + - simulation-scenarios + x-fern-sdk-method-name: update description: Updates the specified scenario. delete: + x-fern-sdk-group-name: + - simulation-scenarios + x-fern-sdk-method-name: delete description: Deletes the specified scenario. /eval/simulation/run: post: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: create description: Starts a simulation run against a target assistant or squad. get: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: list description: Returns the simulation runs for the authenticated organization. /eval/simulation/run/{id}: get: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: get description: Returns the specified simulation run, including its status and item counts. patch: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: cancel description: Cancels the specified simulation run. /eval/simulation/run/{id}/item: get: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: list-items description: Returns the run items for the specified simulation run. /eval/simulation/run/{id}/item/{itemId}: get: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: get-item description: Returns the specified run item, including its evaluation results and the ID of the call that ran it. patch: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: cancel-item description: Cancels the specified run item. /eval/simulation/run/{id}/item/{itemId}/generate: post: + x-fern-sdk-group-name: + - simulation-runs + x-fern-sdk-method-name: generate-suggestions description: Generates AI suggestions for improving the assistant or squad's system prompt, tools, and scenarios, based on the specified run item. /eval/simulation/suite: post: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: create description: Creates a simulation suite, a group of simulations that run together. get: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: list description: Returns the simulation suites for the authenticated organization. /eval/simulation/suite/{id}: get: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: get description: Returns the specified simulation suite. patch: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: update description: Updates the specified simulation suite. delete: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: delete description: Deletes the specified simulation suite. /eval/simulation: post: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: create description: Creates a simulation by pairing a scenario with a personality. get: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: list description: Returns the simulations for the authenticated organization. /eval/simulation/{id}: get: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: get description: Returns the specified simulation. patch: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: update description: Updates the specified simulation. delete: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: delete description: Deletes the specified simulation. /eval/simulation/concurrency: get: + x-fern-sdk-group-name: + - simulations + x-fern-sdk-method-name: get-concurrency description: Returns the organization's simulation concurrency limit, the number of active simulations, and how many more can start. + /reporting/board: + post: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: create + get: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: list + /reporting/board/default/metrics-overview: + get: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: ensure-metrics-overview + /reporting/board/{id}: + patch: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: update + get: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: get + delete: + x-fern-sdk-group-name: + - board + x-fern-sdk-method-name: delete + /call/{id}/mono-recording: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-mono-recording + /call/{id}/stereo-recording: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-stereo-recording + /call/{id}/video-recording: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-video-recording + /call/{id}/customer-recording: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-customer-recording + /call/{id}/assistant-recording: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-assistant-recording + /call/{id}/pcap: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-pcap + /call/{id}/call-logs: + get: + x-fern-sdk-group-name: + - calls + x-fern-sdk-method-name: download-call-logs + /v2/campaign: + post: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: create-v2 + get: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: list-v2 + /v2/campaign/{id}: + get: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: get-v2 + patch: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: update-v2 + delete: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: delete-v2 + /v2/campaign/{id}/contacts: + get: + x-fern-sdk-group-name: + - campaigns + x-fern-sdk-method-name: list-contacts-v2 + /v2/knowledge-base: + post: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: create + get: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: list + /v2/knowledge-base/{id}/file: + get: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: list-files + post: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: attach-file + /v2/knowledge-base/{id}/file/{fileId}: + delete: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: detach-file + /v2/knowledge-base/{id}/file/{fileId}/retry: + post: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: retry-file + /v2/knowledge-base/{id}: + patch: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: update + get: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: get + delete: + x-fern-sdk-group-name: + - knowledge-bases-v2 + x-fern-sdk-method-name: delete + /eval/simulation/suite/{id}/duplicate: + post: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: duplicate + /eval/simulation/onboarding/requirements: + post: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: draft-requirements + /eval/simulation/onboarding/suite: + post: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: generate + /eval/simulation/onboarding/suite/{suiteId}: + patch: + x-fern-sdk-group-name: + - simulation-suites + x-fern-sdk-method-name: revise components: schemas: CreatePersonalityDTO: