본문으로 건너뛰기
cccskills
무료GitHub에 공개

appfolio-common-errors

Diagnose common AppFolio Stack API integration failures, including authentication, portfolio URL, validation, rate-limit, and server errors. Get redacted troubleshooting guidance and bounded recovery steps that help avoid duplicate writes or exposing tenant and lease data.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Diagnose and fix common AppFolio API integration errors. Trigger: "appfolio error".

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Diagnosing a tenant lookup that returns 404
  • Handling API authentication or rate-limit errors
  • Investigating lease conflicts and validation failures
  • Recovering safely from partial batch writes

포함된 파일(1)

  • SKILL.md7.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

AppFolio Common Errors

Overview

AppFolio's Stack API powers property management integrations for tenant screening, work orders, lease management, and accounting. Each portfolio operates under its own subdomain ({company}.appfolio.com), meaning a single integration may need to handle multiple base URLs. Errors commonly stem from authentication misconfiguration, incorrect base URLs per portfolio, and business logic violations like duplicate tenant records or conflicting lease dates. Tenant lookup failures (404) are the most frequent issue, typically caused by targeting the wrong portfolio subdomain. This reference covers HTTP-level failures, property-management-specific validation errors, and recovery patterns for the most frequently encountered issues.

Prerequisites

  • A redacted incident record containing the portfolio identifier, endpoint, status code, request correlation ID, and time window; never copy tenant or lease payloads into a shared ticket.
  • Access to the correct sandbox or production portfolio endpoint and a credential owner who can rotate or validate credentials without exposing them in logs or command arguments.
  • A bounded retry policy, an idempotency mechanism for writes, and a known operator escalation path for uncertain tenant, lease, or work-order state.

Instructions

  1. Classify the response by authentication, rate-limit, validation, or server failure and preserve only the redacted diagnostic fields.
  2. Verify the portfolio base URL before changing credentials or retrying a 404; a valid tenant ID in another portfolio is not evidence of absence.
  3. For 409 or partial write failures, query the canonical record and use the operation’s idempotency key or operator review before issuing another write.
  4. Honor Retry-After for 429 and stop after the configured retry budget; pause the batch on 5xx or unknown write outcomes.

Error Reference

CodeMessageCauseFix
401UnauthorizedInvalid or rotated client_id/secret pairRegenerate credentials in AppFolio Stack partner portal
403ForbiddenAccount not approved as Stack partnerComplete partner application at appfolio.com/stack
404Tenant not foundWrong portfolio base URL or deleted tenantVerify base URL is {company}.appfolio.com/api/v1
409Lease conflictOverlapping lease dates for same unitCheck existing leases on unit before creating new one
422Validation failedMissing required fields on work order or tenantInclude all required fields: unit_id, description, priority
429Too Many RequestsExceeded 120 requests/minute limitImplement exponential backoff starting at 1s delay
500Internal Server ErrorAppFolio platform issueRetry after 30s; check status.appfolio.com
503Service UnavailableMaintenance window (typically weekends)Retry with backoff; subscribe to maintenance calendar

Error Handler

interface AppFolioError {
  code: number;
  message: string;
  category: "auth" | "rate_limit" | "validation" | "server";
}

function classifyAppFolioError(status: number, body: string): AppFolioError {
  if (status === 401 || status === 403) {
    return { code: status, message: body, category: "auth" };
  }
  if (status === 429) {
    return { code: 429, message: "Rate limit exceeded", category: "rate_limit" };
  }
  if (status === 404 || status === 409 || status === 422) {
    return { code: status, message: body, category: "validation" };
  }
  return { code: status, message: body, category: "server" };
}

Debugging Guide

Authentication Errors

AppFolio uses HTTP Basic Auth with client_id:client_secret. Verify credentials are not URL-encoded. Each portfolio has its own base URL -- confirm you are targeting the correct {company}.appfolio.com subdomain. Credentials rotate on partner approval changes.

Rate Limit Errors

The Stack API enforces 120 requests/minute per API key. Batch tenant lookups instead of individual calls. Use Retry-After header value when present. Bulk endpoints (e.g., /properties?page=1&per_page=100) reduce call count significantly. Rate limits are per-key, not per-portfolio, so multi-portfolio integrations share the same budget.

Validation Errors

Work order creation requires unit_id, description, and priority. Tenant creation requires first_name, last_name, and email. Lease creation fails with 409 if dates overlap an existing active lease on the same unit -- query current leases first. Move-in and move-out dates must be valid ISO 8601 format. Unit IDs are portfolio-specific and cannot be reused across subdomains.

Error Handling

ScenarioPatternRecovery
Tenant lookup returns 404Search by email before creatingUse /tenants?email= endpoint
Work order 422Missing priority fieldDefault to normal if unspecified
Lease date conflictOverlapping active leaseEnd existing lease before creating new
Bulk import partial failureSome records rejectedParse error array, retry failed records only
Auth token expired mid-batch401 on subsequent callsRe-authenticate and resume from last offset

Quick Diagnostic

# Verify API connectivity without placing Basic Auth credentials in argv.
NETRC_FILE="$(mktemp)"
trap 'rm -f "$NETRC_FILE"' EXIT
chmod 600 "$NETRC_FILE"
APPFOLIO_HOST="${APPFOLIO_BASE_URL#https://}"
printf 'machine %s login %s password %s\n' "$APPFOLIO_HOST" \
  "$APPFOLIO_CLIENT_ID" "$APPFOLIO_CLIENT_SECRET" > "$NETRC_FILE"
curl -s -o /dev/null -w "%{http_code}" --netrc-file "$NETRC_FILE" \
  "${APPFOLIO_BASE_URL}/api/v1/properties"

Output

  • A redacted classification of the failure and the verified portfolio context
  • A bounded recovery decision: correct configuration, delay/retry, reconcile, rotate through the credential owner, or escalate an unknown write result
  • An incident receipt that identifies the affected batch without retaining tenant, lease, or credential data

Examples

When a work-order import receives 429, stop dispatching new records, retain the batch cursor and idempotency keys, and wait for the server-provided retry window before resuming at the same record. For a 409 lease conflict, query the unit’s current lease through the correct portfolio and route the result to an authorized operator rather than ending or replacing a lease automatically. If the follow-up read is unavailable or the outcome of a prior write is unknown, quarantine that record and continue only with unrelated safe work.

Resources

Next Steps

See appfolio-debug-bundle.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Add a synthetic-data CI gate for customer-owned Abridge integration code. Test consent handling, note-review handoffs, redaction, and rollback behavior with mocked vendor boundaries, without connecting CI to a live Abridge or EHR tenant.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Adding regression checks to an Abridge integration repository
  • Testing consent and note-release handling
  • Checking logs for sensitive data exposure
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

Triage Abridge recording, note review, Epic handoff, and access problems using observed symptoms and approved guidance. Identify the affected workflow stage, organize a minimal timeline, and prepare a redacted escalation record for the responsible team.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Separate recording problems from upload failures
  • Investigate note creation delays and editor issues
  • Identify the responsible team for Epic handoff failures
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

Map and review an Abridge clinical documentation workflow from consent and recording through draft review, evidence checks, edits, and final disposition. Keep clinician approval explicit, identify failure exits, and separate verified facts from tenant-specific details and pending approvals.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Map a clinical note workflow for a care setting
  • Check where consent and patient identity are verified
  • Review draft notes against linked evidence before sign-off
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

Audit how clinician-reviewed Abridge note sections map into Epic templates and downstream workflows. Use approved test records to document destinations, exceptions, evidence, rollback steps, and a go or no-go decision for a specific environment.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking Abridge note section mappings to Epic templates
  • Auditing a department’s approved documentation handoff
  • Preparing test evidence and a go or no-go decision
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

Review Abridge adoption and workflow value using local usage records, clinician feedback, and verified contract costs. Build an evidence based decision table covering adoption, quality, support burden, and options to expand, hold, or improve the rollout.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing adoption after an Abridge rollout
  • Preparing evidence for a renewal decision
  • Comparing workflow outcomes across care settings
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

Prepare a bounded support bundle for an Abridge issue using allowlisted operational details such as versions, coarse timestamps, and correlation references. Exclude recordings, transcripts, patient identifiers, credentials, and unrestricted logs, then document redactions and review details.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Preparing reviewed evidence for an Abridge support case
  • Documenting redactions and excluded data
  • Collecting approved operational details for an incident
jeremylongshore/tons-of-skills-marketplace2.9천2026년 10월 25일 업데이트

jeremylongshore의 스킬 모두 보기

이 스킬의 문제 신고