Appfolio Upgrade Migration

Migrate between AppFolio API versions and handle endpoint changes. Trigger: "appfolio upgrade".

jeremylongshore Updated

File contents

appfolio upgrade migration | sed 's/\b(.)/\u\1/g'

API Version Migration

// Adapter pattern for API version changes
class AppFolioVersionAdapter {
  private version: "v1" | "v2";
  private client: any;

  constructor(version: "v1" | "v2" = "v1") {
    this.version = version;
  }

  async getProperties(): Promise<any[]> {
    if (this.version === "v2") {
      // v2 may return paginated results
      return this.paginatedGet("/properties");
    }
    return (await this.client.get("/properties")).data;
  }

  private async paginatedGet(path: string): Promise<any[]> {
    const results: any[] = [];
    let cursor: string | null = null;
    do {
      const { data } = await this.client.get(path, { params: { cursor } });
      results.push(...data.results);
      cursor = data.next_cursor;
    } while (cursor);
    return results;
  }
}

Resources

jeremylongshore/claude-code-plugins-plus-skills commit 50cd1a684f

Frequently asked questions

npx skillmds@latest add jeremylongshore/appfolio-upgrade-migration