Skillshub appfolio-install-auth
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/appfolio-install-auth" ~/.claude/skills/comeonoliver-skillshub-appfolio-install-auth && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/appfolio-install-auth/SKILL.mdsource content
AppFolio Install & Auth
Overview
Configure AppFolio Stack API authentication. AppFolio uses HTTP Basic Auth with a client ID and client secret, provided through their Stack partner program. No public npm SDK exists — use direct REST API calls.
Prerequisites
- AppFolio Stack partner account (appfolio.com/stack)
- Client ID and Client Secret from AppFolio
- Node.js 18+ or Python 3.10+
Instructions
Step 1: Obtain API Credentials
# AppFolio Stack API credentials come from the partner program # 1. Apply at appfolio.com/stack/become-a-partner # 2. Complete integration review # 3. Receive client_id and client_secret cat > .env << 'ENVFILE' APPFOLIO_CLIENT_ID=your-client-id APPFOLIO_CLIENT_SECRET=your-client-secret APPFOLIO_BASE_URL=https://your-company.appfolio.com/api/v1 ENVFILE chmod 600 .env echo ".env" >> .gitignore
Step 2: Create API Client
// src/appfolio-client.ts import axios, { AxiosInstance } from 'axios'; class AppFolioClient { private api: AxiosInstance; constructor() { this.api = axios.create({ baseURL: process.env.APPFOLIO_BASE_URL, auth: { username: process.env.APPFOLIO_CLIENT_ID!, password: process.env.APPFOLIO_CLIENT_SECRET!, }, headers: { 'Content-Type': 'application/json' }, timeout: 30000, }); } async verifyConnection(): Promise<boolean> { try { const response = await this.api.get('/properties'); console.log(`Connected! Found ${response.data.length} properties`); return true; } catch (error: any) { console.error(`Connection failed: ${error.response?.status} ${error.message}`); return false; } } get http(): AxiosInstance { return this.api; } } export { AppFolioClient };
Step 3: Verify Connection
# Quick curl test curl -u "${APPFOLIO_CLIENT_ID}:${APPFOLIO_CLIENT_SECRET}" \ "${APPFOLIO_BASE_URL}/properties" | jq '.[0]'
API Endpoints
| Resource | Endpoint | Methods |
|---|---|---|
| Properties | | GET |
| Units | | GET |
| Tenants | | GET |
| Leases | | GET, POST |
| Bills | | GET, POST |
| Vendors | | GET |
| Owners | | GET |
| Reports | | GET |
Output
- API credentials configured in
.env - TypeScript REST client with Basic Auth
- Verified connectivity to AppFolio API
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Invalid credentials | Verify client_id/secret from AppFolio |
| Not a Stack partner | Complete partner application |
| Wrong base URL | Use format |
| Timeout | Network issue | Check firewall allows HTTPS to appfolio.com |
Resources
Next Steps
Proceed to
appfolio-hello-world for your first property query.