{
  "info" : {
    "name" : "Perch API",
    "description" : "REST API for Perch — AI-powered tax intelligence for short-term rental operators.",
    "schema" : "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth" : {
    "type" : "bearer",
    "bearer" : [ {
      "key" : "token",
      "value" : "{{api_key}}",
      "type" : "string"
    } ]
  },
  "item" : [ {
    "name" : "Properties",
    "item" : [ {
      "name" : "List Properties",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/properties",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "properties" ]
        }
      }
    }, {
      "name" : "Get Property",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/properties/{{property_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "properties", "{{property_id}}" ]
        }
      }
    }, {
      "name" : "Create Property",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/properties",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "properties" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"name\" : \"Beach House\",\n  \"address\" : \"123 Ocean Dr\",\n  \"city\" : \"Miami\",\n  \"state\" : \"FL\",\n  \"property-type\" : \"single-family\",\n  \"rental-type\" : \"short-term\"\n}"
        }
      }
    }, {
      "name" : "Update Property",
      "request" : {
        "method" : "PUT",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/properties/{{property_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "properties", "{{property_id}}" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"name\" : \"Beach House Updated\"\n}"
        }
      }
    }, {
      "name" : "Delete Property",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/properties/{{property_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "properties", "{{property_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "Transactions",
    "item" : [ {
      "name" : "List Transactions",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions" ]
        }
      }
    }, {
      "name" : "List Transactions (filtered)",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions?property-id={{property_id}}&from-date=2025-01-01",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions?property-id={{property_id}}&from-date=2025-01-01" ]
        }
      }
    }, {
      "name" : "Get Transaction",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions/{{transaction_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions", "{{transaction_id}}" ]
        }
      }
    }, {
      "name" : "Create Transaction",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"property-id\" : \"{{property_id}}\",\n  \"date\" : \"2025-03-15\",\n  \"description\" : \"Cleaning service\",\n  \"amount\" : -150,\n  \"perch-category\" : \"601\"\n}"
        }
      }
    }, {
      "name" : "Update Transaction",
      "request" : {
        "method" : "PUT",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions/{{transaction_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions", "{{transaction_id}}" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"perch-category\" : \"601\"\n}"
        }
      }
    }, {
      "name" : "Delete Transaction",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/transactions/{{transaction_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "transactions", "{{transaction_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "Bookings",
    "item" : [ {
      "name" : "List Bookings",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bookings",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bookings" ]
        }
      }
    }, {
      "name" : "Get Booking",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bookings/{{booking_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bookings", "{{booking_id}}" ]
        }
      }
    }, {
      "name" : "Create Booking",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bookings",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bookings" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"property-id\" : \"{{property_id}}\",\n  \"guest-name\" : \"Jane Doe\",\n  \"channel\" : \"airbnb\",\n  \"check-in\" : \"2025-04-01\",\n  \"check-out\" : \"2025-04-05\",\n  \"gross-revenue\" : 1200,\n  \"net-revenue\" : 1050\n}"
        }
      }
    }, {
      "name" : "Delete Booking",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bookings/{{booking_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bookings", "{{booking_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "Bank Accounts",
    "item" : [ {
      "name" : "List Bank Accounts",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bank-accounts",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bank-accounts" ]
        }
      }
    }, {
      "name" : "Get Bank Account",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/bank-accounts/{{account_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "bank-accounts", "{{account_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "Categorization Rules",
    "item" : [ {
      "name" : "List Rules",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/rules",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "rules" ]
        }
      }
    }, {
      "name" : "Create Rule",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/rules",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "rules" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"pattern\" : \"TURNO\",\n  \"match-type\" : \"contains\",\n  \"perch-category\" : \"601\"\n}"
        }
      }
    }, {
      "name" : "Delete Rule",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/rules/{{rule_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "rules", "{{rule_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "Participation Hours",
    "item" : [ {
      "name" : "List Hours",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/hours",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "hours" ]
        }
      }
    }, {
      "name" : "Log Hours",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/hours",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "hours" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"property-id\" : \"{{property_id}}\",\n  \"date\" : \"2025-03-15\",\n  \"hours\" : 3,\n  \"activity-type\" : \"maintenance\",\n  \"description\" : \"Fixed plumbing\"\n}"
        }
      }
    } ]
  }, {
    "name" : "Reports",
    "item" : [ {
      "name" : "Portfolio Summary",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/reports/portfolio",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "reports", "portfolio" ]
        }
      }
    } ]
  }, {
    "name" : "Webhooks",
    "item" : [ {
      "name" : "List Webhooks",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/webhooks",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "webhooks" ]
        }
      }
    }, {
      "name" : "Create Webhook",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/webhooks",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "webhooks" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"name\" : \"My Integration\",\n  \"url\" : \"https://example.com/webhook\",\n  \"events\" : [ \"transaction.created\", \"property.created\" ]\n}"
        }
      }
    }, {
      "name" : "Test Webhook",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/webhooks/{{webhook_id}}/test",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "webhooks", "{{webhook_id}}", "test" ]
        }
      }
    }, {
      "name" : "Delete Webhook",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/webhooks/{{webhook_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "webhooks", "{{webhook_id}}" ]
        }
      }
    } ]
  }, {
    "name" : "API Keys",
    "item" : [ {
      "name" : "List Keys",
      "request" : {
        "method" : "GET",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/keys",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "keys" ]
        }
      }
    }, {
      "name" : "Generate Key",
      "request" : {
        "method" : "POST",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/keys",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "keys" ]
        },
        "body" : {
          "mode" : "raw",
          "raw" : "{\n  \"type\" : \"user\"\n}"
        }
      }
    }, {
      "name" : "Revoke Key",
      "request" : {
        "method" : "DELETE",
        "header" : [ {
          "key" : "Authorization",
          "value" : "Bearer {{api_key}}",
          "type" : "text"
        }, {
          "key" : "Content-Type",
          "value" : "application/json",
          "type" : "text"
        } ],
        "url" : {
          "raw" : "{{base_url}}/v1/keys/{{key_id}}",
          "host" : [ "{{base_url}}" ],
          "path" : [ "v1", "keys", "{{key_id}}" ]
        }
      }
    } ]
  } ]
}