Skip to main content

adding-api-versions

Use when adding a new API version to the shopify-api package, creating REST resource files for a new version, updating API version constants, or handling breaking changes like removed or modified resources between versions.

Quellinformationen

Repository
Shopify/shopify-app-js
Letzte Quellaktivität
1. April 2026 um 14:36
Erkannte Sprache von SKILL.md
Englisch
Sterne
543
Forks
229

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
adding-api-versions
description
Use when adding a new API version to the shopify-api package, creating REST resource files for a new version, updating API version constants, or handling breaking changes like removed or modified resources between versions.
# Adding a New API Version Step-by-step process for adding a new API version to `packages/apps/shopify-api`. Uses 2025-07 as a reference example. ## Prerequisites - Know which resources are removed or modified in the new version ## Step 1: Update API Version Constants Edit `packages/apps/shopify-api/lib/types.ts`: ```typescript export enum ApiVersion { // ... existing versions ... April25 = '2025-04', July25 = '2025-07', // New version October25 = '2025-10', // Release candidate (next version) } ``` **Naming convention:** `{Month}{YY}` (e.g., `April25`, `July25`). Value format: `YYYY-MM`. Also add the **next** quarterly version as a release candidate enum value (no REST resources needed yet). ## Step 2: Create Directory Structure ```bash mkdir packages/apps/shopify-api/rest/admin/{YYYY-MM}/ mkdir packages/apps/shopify-api/rest/admin/__tests__/{YYYY-MM}/ ``` ## Step 3: Copy and Update Resource Files Copy from the most recent version: ```bash cp -r packages/apps/shopify-api/rest/admin/{PREVIOUS_VERSION}/* \ packages/apps/shopify-api/rest/admin/{NEW_VERSION}/ cp -r packages/apps/shopify-api/rest/admin/__tests__/{PREVIOUS_VERSION}/* \ packages/apps/shopify-api/rest/admin/__tests__/{NEW_VERSION}/ ``` In every resource file, update the `apiVersion` property: ```typescript // From public static apiVersion = ApiVersion.April25; // To public static apiVersion = ApiVersion.July25; ``` ## Step 4: Update Test Files Two changes in every test file: 1. **testConfig calls:** ```typescript testConfig({apiVersion: ApiVersion.July25, restResources}) ``` 2. **URL paths in expectations:** ```typescript `https://test-shop.myshopify.com/admin/api/2025-07/...` ``` ## Step 5: Update Index File Edit `packages/apps/shopify-api/rest/admin/{NEW_VERSION}/index.ts`: - Import all resources (except removed ones) - Update `RestResources` interface - Update `restResources` export For removed resources, delete their imports and exports: ```typescript // Remove from interface and export export interface RestResources extends ShopifyRestResources { // CustomerAddress: typeof CustomerAddress; // Removed in 2025-07 } ``` ## Step 6: Handle Breaking Changes For **removed resources** (e.g., CustomerAddress in 2025-07): 1. Delete the resource file from `rest/admin/{NEW_VERSION}/` 2. Delete the test file from `rest/admin/__tests__/{NEW_VERSION}/` 3. Remove imports/exports from `index.ts` For **modified resources**: 1. Update class properties 2. Modify `paths` array if endpoints changed 3. Update method signatures if parameters changed 4. Adjust tests accordingly ## Step 7: Run Tests and Build ```bash # Test the new version pnpm test -- packages/apps/shopify-api/rest/admin/__tests__/{NEW_VERSION} # Run all tests pnpm test ``` ## Checklist - [ ] New enum value in `ApiVersion` (`packages/apps/shopify-api/lib/types.ts`) - [ ] Next quarterly release candidate enum value added (no REST resources needed) - [ ] Source directory created: `rest/admin/{NEW_VERSION}/` - [ ] Test directory created: `rest/admin/__tests__/{NEW_VERSION}/` - [ ] All resource files copied and `apiVersion` updated - [ ] All test files updated (testConfig + URL paths) - [ ] `index.ts` updated with correct imports/exports - [ ] Removed resources and their tests deleted - [ ] Modified resources updated - [ ] All tests pass - [ ] Package builds without errors
Auf GitHub ansehen