{ "openapi": "3.0.0", "info": { "version": "v1", "title": "Open API, powered by Buildium", "description": "\r\n# Introduction\r\n### Welcome!\r\n\r\nWelcome to Buildium’s API—a powerful, RESTful programming interface that lets you leverage valuable Buildium data.\r\n\r\nUsing HTTP requests, you can create integrations with applications that specialize in accounting, lead tracking, and more. Enjoy greater flexibility, transparency, and control over your business!\r\n\r\n\r\n### What's in this Guide?\r\n\r\nThis guide is full of simple, easy-to-follow instructions that’ll help you use Buildium’s API like a pro.\r\n\r\nTopics include:\r\n\r\n* choosing the right resources for your use case\r\n* making HTTP requests to any resource\r\n* understanding data and response codes\r\n\r\n
\r\n\r\n# Getting Started\r\nExcited to get going? We’ll walk you through the setup process.\r\n> **Note:** To take advantage of the Buildium Open API you must have a **Premium Subscription**.\r\n\r\n## Account Configuration\r\nBefore you can use Buildium’s API, you’ll need to make some tweaks to your account settings.\r\n\r\n
\r\n\r\n### Enabling the API\r\nIn order to start creating your keys and making requests, you’ll need to enable the API.\r\n\r\n\r\n> **Tip:** You’ll need an administrator user role with access to ***Application settings*** to set things up properly.\r\n\r\n
\r\n\r\n​\t**Let's Begin!**\r\n\r\n1. Sign in to your [Buildium](https://signin.managebuilding.com/manager/public/authentication/login?ReturnUrl=%2Fmanager%2F) account from your browser.\r\n\r\n2. Open the ***Settings*** menu and click ***Application settings***.\r\n\r\n3. Under ***System preferences***, click ***Api settings***. A modal will appear.\r\n\r\n4. Click the ***Open API*** toggle to turn it on. Then click ***Save***.\r\n\r\n\r\n\r\n\r\nCongratulations! Your account's enabled. Now, you’re ready to start managing API keys.\r\n
\r\n
\r\nIf you are having issues enabling the API within your account you can submit a [Support](#section/API-Overview/Support) request for assistance.\r\n\r\n
\r\n\r\n\r\n## API Keys\r\nAccount-level API keys authenticate every request and keep things secure.\r\n\r\nAPI keys have two components: a “client ID” and a “secret”.\r\n\r\n* **Client IDs** are similar to usernames. They’re used to identify your Buildium account and are safe to share.\r\n* **Secrets** are similar to passwords. They must be kept confidential.\r\n\r\nWhenever you make a request, you’ll need the API key’s client ID and secret. If you forget it, make a mistake, or try to use information that’s linked to a deleted key, the API will return a `401` response code.\r\n\r\n> **Tip:** We compiled a list of best practices that detail how securely store API keys. [Give it a read](#section/Getting-Started/Keeping-API-Keys-Safe)!\r\n\r\n## Creating API Keys\r\nNow that the Open APi is enabled, you’ll be able to create API keys. You’re almost there!\r\n\r\n> **Tip:** You’ll need an administrator user role to complete this step, too.\r\n\r\n
\r\n\r\n**How to create an API key**\r\n\r\n1. Sign in to your [Buildium](https://signin.managebuilding.com/manager/public/authentication/login?ReturnUrl=%2Fmanager%2F) account from your browser.\r\n\r\n2. Open the ***Settings*** menu and click ***Developer Tools***. The page will open automatically.\r\n\r\n3. Click the ***Create API Key*** button. A modal will appear.\r\n\r\n4. Enter a clear, memorable name and description for your API key. It’ll make it easier to locate the right key when you make a request. Once finished, click **Next**.\r\n\r\n5. Now, choose which pieces of Buildium data you want this API key to have access to by marking the corresponding checkboxes. Once finished, click **Next**.\r\n\r\n6. You successfully created an API key!\r\n\r\n> **Important:** This is your only chance to record the secret. Make sure it’s stored somewhere secure! If it’s forgotten, you’ll need to delete this key and start from scratch.\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\nYou have now successfully created an API key and have everything you need to send requests to the Buildium API!\r\n\r\nBefore moving on to [making your first request](#section/Getting-Started/How-to-Make-a-Request) please review [Keeping your Keys Safe](#section/Getting-Started/Keeping-your-Keys-Safe) for an overview on securely storing your API keys. \r\n
\r\nIf you are having issues creating API keys you can submit a [Support](#section/API-Overview/Support) request for assistance.\r\n
\r\n\r\n\r\n## Keeping API Keys Safe\r\n\r\nBased on their permissions, API keys could have full access to your account’s Buildium data. It’s important that you only grant access to trusted applications, securely record secrets, and consider a password manager to stay organized.\r\n\r\n\r\n### Recommended Practices\r\n\r\n- Avoid hard-coding client IDs and secrets inside source files.\r\n- Avoid storing client IDs and secrets in any files that may be committed to source control, particularly cloud-based source control platforms.\r\n- Apply restrictions to client IDs and secrets shared with your staff. You can restrict a key to particular Buildium entities or to read-only access (GET resources only).\r\n- Avoid sharing client IDs and secrets across public, insecure platforms.\r\n- Establish a process to regularly recreate your client IDs and secrets from your Buildium account.\r\n
\r\n
\r\n\r\n## How to Make a Request\r\n\r\nYou’ve done a great job setting up your account, Now, we’ll walk you through how to access your data. It’s very straightforward and should only take a few minutes!\r\n\r\n\r\n> **Tip:** Looking for the right HTTP client? If you’re just getting started, we recommend Postman.\r\n\r\n\r\n
\r\n\r\n### Let's Get Started!\r\n\r\n#### Step 1: Get Your API Key\r\n\r\nIf you haven't yet done so, obtain your API key client ID and secret from your Buildium account. Your API key is how the Buildium API authenticates requests and ensures only you can access your data.\r\n\r\nSee [Getting Started](#section/Getting-Started) for a deeper dive into enabling the API and creating keys.\r\n\r\n#### Step 2: Install a HTTP client\r\nThe Buildium API supports any standard HTTP client. If you're looking for a user-friendly HTTP client application, we recommend [Postman](https://www.postman.com/product/api-client) – it allows you to access the Buildium API without writing code. We’ll use Postman for our example below to demonstrate sending an API request.\r\n\r\n\r\n#### Step 3: Make a Sample Request\r\n\r\nLet's dive in and make a simple request to get all the [Rental Properties](#operation/RentalsExternalApi_GetAllRentals) in your account. This will confirm your connectivity to our platform and validate the keys you created on our website. Simply follow the instructions below.\r\n\r\n\r\n1. Open the Postman application.\r\n2. Open the *verb* menu and select **GET**.\r\n3. Enter the request endpoint in the field next to GET.\r\n - Here’s the endpoint to get all rentals: https://api.buildium.com/v1/rentals.\r\n4. To authenticate the request, enter your `client ID` and `secret` respectively in these request headers:\r\n - `x-buildium-client-id`\r\n - `x-buildium-client-secret`\r\n - Your full request should look similar to the image below.\r\n\r\n
\r\n\r\n5. Review the parameters of your request on last time. Once finished, click **Send**.\r\n\r\n6. If successful, you should see a JSON response and a `200` HTTP status code. Voilà! You've connected to the Buildium API.\r\n\r\n
\r\nYou now have the knowledge required to make requests for any of our resources.\r\n\r\nIf you've received an error response please review the JSON response message for a description of how to resolve the issue. You can also see more information about HTTP status codes in the [Response Codes](#section/API-Overview/Response-Codes) section. If you are still having trouble making a request after reviewing these sections please submit a [Support](#section/API-Overview/Support) request.\r\n\r\n
\r\n\r\n# API Overview\r\nThe Buildium API is built upon standard REST conventions. It's designed to use consistent resource-oriented URLs, accept and return JSON-encoded messages, and use standard HTTP status codes and verbs.\r\n\r\n## Base URL\r\nThe base URL for production environment API requests is: `https://api.buildium.com/`\r\n\r\nThe base URL for sandbox environment API requests is: `https://apisandbox.buildium.com/`\r\n\r\nIn order to ensure all requests and responses are secure between the API consumer and Buildium servers, requests must be made using the `https` protocol. Any requests not made with the `https` protocol will be refused by the Buildium API platform.\r\n\r\n> **Note:** URL paths are case-sensitive to stay consistent with common REST standards. If your request doesn’t align with the documented URL path, you’ll receive a `404` response code reminding you of this constraint.\r\n\r\n## API Versioning\r\nThe Buildium API is version controlled. Versioning ensures backwards-incompatible changes to the API don’t impact any existing integrations.\r\n\r\nBuildium uses only a major version nomenclature to manage changes. The current version of the Buildium API is version 1. By specifying a version in the resource request URL, you'll get expected responses regardless of future changes to the API. Here's an example of calling version 1 of the retrieve all rentals resource:\r\n\r\n`https://api.buildium.com/v1/rentals`\r\n\r\nAny request submitted without the version in the URL path will result in a `404` error response code.\r\n\r\n### Releasing Changes to the API\r\nThe Buildium API will continue to evolve to ensure it meets the needs of our customers. Changes will be defined as either backwards-compatible or backwards-incompatible.\r\n\r\nWe’ll always provide advance notice for all API releases–regardless of the type of modifications being made.\r\n\r\n#### Backward-compatible Changes\r\nBackward-compatible changes are modifications to the API that shouldn't impact existing integrations. They'll apply to the current version of the API. Simply put: you won’t need to change the version to consume new changes like these.\r\n\r\nIt's important as you develop against the Buildium API that you ensure these types of changes don't impact your integration. Here's are examples of backward-compatible modifications.\r\n\r\n* Adding new API resources and/or endpoints.\r\n* Adding new optional request parameters to existing API methods.\r\n* Adding new properties to existing API responses and non-required properties for request messages.\r\n* Changing property order in existing API responses.\r\n\r\nAll backward-compatible changes to the API will be documented in the [Changelog](#section/Changelog).\r\n\r\n#### Backwards-incompatible Changes\r\n\r\nWhen backwards-incompatible changes to the API occur, a new version of the API will be released. You’ll need to update the URL path to consume resources under the new API version.\r\n\r\nBackwards-incompatible changes include:\r\n\r\n* Removing a property from a request and/or response message.\r\n* Changing the name of a property in a message.\r\n* Adding a required parameter to a request message.\r\n* Changing existing enumeration values.\r\n\r\nNew versions of the API will have full reference documentation and an upgrade guide.\r\n\r\n
\r\n\r\n\r\n\r\n## Authentication\r\nThe Buildium API uses API key’s client IDs and secrets to authenticate requests.\r\n\r\nAn API key client ID and secret must be passed in every request header using the following parameters:\r\n\r\n- `x-buildium-client-id`\r\n- `x-buildium-client-secret`\r\n\r\nFailing to provide both of them in the request header will cause the API to return a `401` HTTP status code.\r\n\r\n> **Note:** We currently do not support enabling CORS to access the Buildium API due to the security and authentication mechanisms we have in place to protect your data. Buildium supports authentication through API keys passed in the headers of a request versus a more CORS supported authentication mechanism like oAuth. Our recommendation is to access the Buildium API using server to server communication versus browser to server communication for the safest implementation.\r\n\r\n## Rate Limiting\r\nRate limits help us ensure consistent and reliable performance for all users, even during peak loads. That’s why we limit clients to **10 concurrent requests per second**.\r\n\r\nIf your request rate violates that limit, a response code of `429` is returned. Simply retry the request after a short interval (~200ms).\r\n\r\n## Request Size Limits\r\nThe query string for a request is limited to a maximum length of `4096` characters. If the query string exceeds this length, the API will return a `500` HTTP status code.\r\n\r\n## Bulk Request Options\r\nAll top-level API resources support bulk fetches. For instance, you can retrieve all [Associations](#operation/AssociationsExternalApi_GetAssociations). These resources also allow for filtering criteria. Each resource has descriptions of the filter criteria available.\r\n\r\nIn addition to filtering, our API gives you the ability to control the returned data’s pagination and the sort order.\r\n\r\n### Pagination\r\nEndpoints that return result sets allow for pagination using `limit` and `offset` request parameters to reduce the amount of data returned.\r\n\r\nThe `limit` request parameter will cap the number of results that come back in the response. If you don't specify a `limit` value, a **default of 50 results** are returned. The maximum `limit` value is 1000. If a `limit` value is specified greater than 1000, it will be overridden to the default to 1000.\r\n\r\nThe `offset` request parameter indicates the record position within the resultset to start at when returning the results. The `offset` is zero-based and is inclusive. If no `offset` value is submitted it will default to 0.\r\n\r\nThe total resultset count is returned in the HTTP Header `X-Total-Count`\r\n\r\n
\r\n\r\n#### Pagination Example\r\n\r\nAs an example, let's say we make a request to retrieve all rental properties with no paging parameters. Our response indicates in the `X-Total-Count` header that there are 150 total rental properties. We want to get only the last 50 results so we would submit a request with the `offset` set to 100 and the `limit` set to 50.\r\n\r\n> **Note:** The `limit` and `offset` parameter names are case-sensitive. If they aren't formatted correctly, the API will return a `404` HTTP status code.\r\n\r\n\r\n
\r\n\r\n### Sorting Results\r\nYou can specify the sort order of returned data by assigning any property from the returned object to the `orderby` parameter in the querystring. For example:\r\n```\r\norderby=LeaseType\r\n```\r\nBy default, the sort is performed in ascending order. To specify sort order, use \"asc\" for ascending or \"desc\" for descending. For example:\r\n```\r\norderby=LeaseType desc\r\n```\r\nAdditionally, you can sort by multiple properties by comma separating the properties. For example:\r\n```\r\norderby=Rent desc,City asc\r\n```\r\n
\r\n\r\n> **Note:** While the `orderby` parameter is case-sensitive, the properties specified in the `orderby` value aren't.\r\n\r\n## Response Codes\r\nThe Buildium API supports standard HTTP status codes.\r\n\r\n|Response Code |Description |\r\n|--|--|\r\n|200 OK | Everything worked as expected. |\r\n|400 Bad Request | The request was unacceptable, often due to missing a required parameter.|\r\n|401 Unauthorized|The API client ID and secret weren’t provided or they’re no longer valid. Be sure that the client ID and secret combination are correct and they are still active.|\r\n|403 Forbidden|The API key doesn't have permission to perform the request. This could be due to authorization for the given endpoint or an inability to access given entities within the platform (e.g. properties).\r\n|404 Not Found|The requested resource doesn't exist.|\r\n|415 Unsupported Media Type |Ensure you have the appropriate content-type header value set on your request. Each resource is documented with media type(s) that are accepted.|\r\n|429 Too Many Requests |Too many requests against the API too quickly. We recommend an exponential backoff of your requests. See more information in [Rate Limiting](#section/API-Overview/Rate-Limiting).|\r\n|500 and above - Server Errors|Something went wrong on Buildium's end. Review the JSON response message for more details about the error. These are rare.|\r\n\r\n## Support\r\nIf you are unable to resolve your issue after reviewing the API documentation our support team can assist you. Please fill out the form below and let us know how we can help.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Your support request has been received
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n
\r\n\t\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t\tSelect your issue\r\n\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\tPlease include the following information when applicable to your issue:\r\n\t\t\t
\r\n\t\t\t
    \r\n\t\t\t\t
  • Date & time of API request
  • \r\n\t\t\t\t
  • Full URL used in making the request along with any querystring and/or post parameters
  • \r\n\t\t\t\t
  • HTTP status code (e.g. 500)
  • \r\n\t\t\t\t
  • Response body
  • \r\n\t\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n
\r\n\t\t\t\r\n\t\t
\r\n\r\n
\r\n\r\n# API Sandbox\r\nTo assist your development efforts Buildium offers a free Sandbox account with your Premium subscription. A sandbox is a development environment that is separate from your production account. Sandboxes duplicate much of the same property management functionality available in your production account and all of the resources available in the Open API. The benefit of the sandbox is that it's isolated from your primary account. This separation ensures that API operations you perform against the sandbox account during development of your integration do not corrupt the data in your production account.\r\n\r\n## Mock Data\r\nTo help you hit the ground running with your development efforts sandbox accounts are provisioned with realistic sample data. This ensures you have data to work with immediately and won’t have to spend time doing data entry. You always have the ability to add more data through the application and the Buildium Open API.\r\n\r\n## Getting Started\r\nTo create a sandbox account follow the steps below.\r\n\r\n1. Sign in to your [Buildium](https://signin.managebuilding.com/manager/public/authentication/login?ReturnUrl=%2Fmanager%2F) account from your browser.\r\n\r\n2. Open the ***Settings*** menu and click ***Developer Tools***.\r\n\r\n3. Click the ***API Sandbox*** tab.\r\n\r\n4. Click the ***Create sandbox*** button. A modal will appear.\r\n\r\n5. Enter the name and email of the person that will be administering the sandbox account. When the sandbox creation process has completed an email will be sent to the email address submitted. This email will provide a link to the sandbox. After all fields have been filled out, click **Create**.\r\n\r\n6. The provisioning process will now execute. It can take 2 - 3 minutes for the sandbox to be created. The page will automatically refresh with the provisioning status. When it completes you will see the sandbox status is **Active** along with details about the sandbox including the URL to the account. You can browse back to this page at any time if you need to look up the URL to the sandbox.\r\n
\r\n \r\n\r\n7. Once the sandbox has been created an email will be sent to the address you entered in the \"Create sandbox\" modal. To complete the activation of the sandbox open the email and click on the \"Activate Account\". This will allow you to create a password for your account and log into the sandbox.\r\n\r\n8. You are now ready to begin making API requests to your sandbox! Please see [Accessing the Sandbox](#section/API-Sandbox/Accessing-the-Sandbox) for next steps on how to start making API requests.\r\n\r\n\r\n## Accessing the Sandbox\r\nOnce your sandbox is created you can begin to access it through the Open API. Requests are made following all the same versioning, authentication, messages, etc that are used in the production environment with the exception of the base URL. The base URL for the sandbox is:\r\n
\r\n`https://apisandbox.buildium.com/`\r\n\r\nYou can read more about connecting to the API in the [API Overview](#section/API-Overview) section.\r\n\r\nOnce you have completed your development and testing against the sandbox and you're ready to start using the integration in your production account simply change the base URL in your integration to the [production API URL](#section/API-Overview/Base-URL).\r\n\r\n\r\n## Sandbox Account Restrictions\r\nThe core Buildium functionality is available in the sandbox environment, however there are some restrictions which include:\r\n\r\n1. Add-on services, ePay and other paid services will not be available.\r\n2. A maximum of 1500 units (rentals and associations) can be created within the sandbox.\r\n3. A maximum of 50 rental tenants per lease can be created within the sandbox.\r\n4. Communication emails will not be sent out. This protects you from inadvertently sending emails to your test accounts.\r\n\r\n\r\n## FAQs\r\n**How many sandboxes can I create?**\r\n\r\nThe Premium subscription plan allows you to create one sandbox.\r\n\r\n**Can I use my production keys to access my sandbox?**\r\n\r\nNo. To ensure you are accessing the correct environment the API keys are restricted to the environment they were created in.\r\n\r\n**What is the throttle limit on requests to the sandbox?**\r\n\r\nA sandbox account is limited to **10 concurrent requests per second**.\r\n\r\n**Can I reset sandbox data to its original state?**\r\n\r\nResetting sandbox data is not supported at this time.\r\n\r\n**Can I delete a sandbox?**\r\n\r\nYou cannot delete a sandbox at this time. Closing your account or changing subscription plans will delete your sandbox and it will be no longer accessible.\r\n\r\n**Can I delete the sandbox data?**\r\n\r\nYes, you can manually delete records by logging into the web application.\r\n\r\n**Why do I see an error when I try to access add-on functionality like ePayments?**\r\n\r\nCertain functionality is restricted in the sandbox environment. Please see [Sandbox Account Restrictions](#section/API-Sandbox/Sandbox-Account-Restrictions) for an overview of these limitations.\r\n\r\n# Webhooks\r\nBuildium webhooks allow your remote applications to listen for events within your Buildium account and react to those events in near real-time!\r\n\r\nTo implement webhooks you need to register a callback URL to your web server for the events you want to capture. Then Builidum will send notifications to that URL when the events occur making syncing data and automating workflows a breeze.\r\n\r\nAs an example, let’s say you’ve registered a callback to your application to receive “Lease Created” events. When a user within your Buildium account creates a new lease then a webhook callback from Buildium informs your app about this new lease. After your application receives the event it can then execute actions such as creating tasks to clean the apartment and change the locks.\r\n\r\nAnother advantage of using webhooks is that they allow your applications to respond to events in Buildium in near real time. Having events pushed to your platform as they happen is like calling the API every second to ask “Was a lease created”?\r\n\r\nThe diagram below illustrates how your application would integrate with Buildium webhooks.\r\n\r\n\r\n\r\n## Webhook Events Overview\r\nEvent notifications are Buildium’s way of letting you know when something interesting happens in your account. When a subscribed event occurs a new Event object is created and sent to your endpoint as part of a HTTPS POST request.\r\n\r\nEvent objects are simple data structures with fields that describe the entity and the event that occurred. The object will have the following fields:\r\n\r\n| Field | Description |\r\n| ---- | ---- |\r\n| EventName | This value indicates the entity and operation that occurred. |\r\n| EventDateTime| The date and time that the operation occurred. The value is in UTC and formatted as YYYY-MM-DDTHH:MM:SSSSSSSZ. |\r\n| AccountId | Your Buildium account identifier. This is used to distinguish between accounts if you have configured webhook callbacks across multiple Buildium accounts to the same endpoint. |\r\n| Entity Identifier(s) | These field(s) constitute the identifier of the entity. Use these values to query the Buildium Open API for the full entity data. |\r\n\r\nHere is an example of an Event object, serialized as JSON, when a rental property has been updated:\r\n```json\r\n{\r\n\"EventName\": \"Rental.Updated\",\r\n\"EventDateTime\": \"2022-05-10T15:12:46.2317653Z\",\r\n\"AccountId\": 123456,\r\n\"PropertyId\": 23\r\n}\r\n```\r\n\r\nNote that the EventName is a constant value that can be used to determine the entity and the operation that triggered the event. This value is concatenation of the entity name and operation separated by a period. For example, if a rental property was updated the EventName value would be: `Rental.Updated`.\r\n\r\nThe event identifiers included in the Event object will provide the data necessary to query the Buildium Open API and retrieve the full entity.\r\n\r\nThe [Webhook Events section](#section/Webhooks/Webhook-Events) below lists all of the available entities and their corresponding events that can be subscribed to. The grid also includes the EventName constants and sample JSON for each entity.\r\n\r\n## Receiving Callbacks\r\nTo take advantage of webhooks you’ll need to establish an endpoint that our Buildium servers can make a request to whenever the data you’re interested in changes. You can use one endpoint to handle several different event types at once or set up individual endpoints for specific events.\r\n\r\nYour endpoint must be implemented to support the following:\r\n * HTTPS protocol\r\n * Be publicly available\r\n * POST requests that consist of a JSON formatted payload sent as raw body type and a Content-Type of application/json.\r\n\r\nWhen receiving webhook callbacks it is important that your endpoint responds promptly. If Buildium doesn’t receive a response within 10 seconds the callback is considered unsuccessful. As a best practice your endpoint should return a response prior to executing any complex logic to ensure a response within the 10 second duration. Any HTTP response code from your endpoint other than a 2XX is also considered an unsuccessful request. Buildium will retry unsuccessful events on the following intervals:\r\n 1. 1 minute\r\n 2. 10 minutes\r\n 3. 1 hour\r\n\r\nIf a callback for an event is unsuccessful after all three attempts Buildium will stop attempting to send the event message.\r\n\r\nThe webhook subscription will be suspended if there 20 consecutive failed attempts to send events to the URL. Upon suspension an email will be sent notifying you that the subscription has been paused. You can troubleshoot issues and enable the webhook by browsing to [Settings > Developer Tools > Webhooks](https://signin.managebuilding.com/manager/app/settings/developer-tools/webhooks). The email is sent to the contact email address that is set when the webhook subscription is created or updated.\r\n\r\nAs you develop the callback endpoint you can use the JSON examples found in the webhook event grid to generate the mock payloads for testing. Once you are able to successfully receive the event callback you should implement a signature check to ensure the authenticity of of the request.\r\n\r\n### Signature Checks\r\nIt is *strongly recommended* that you validate webhook event signatures in your application to ensure that the request came from Buildium and not a bad actor attempting to impersonate Buildium, alter event messages after they have been sent, or perform replay attacks. While validating the request isn’t required to read the payload, it is *strongly recommended* to ensure the authenticity of the request and ensure the overall security and data integrity of your application.\r\n\r\nAll webhook callback requests include the signature and a timestamp in the HTTP headers.\r\n\r\n| HTTP Header | Description |\r\n| ---- | ---- |\r\n| buildium-webhook-timestamp | A UNIX timestamp of when the message was sent. NOTE: This is not the time the event occurred within the system, but rather the time the event was sent.|\r\n| buildium-webhook-signature | A computed signature using the secret key that can be used to verify that the request came from Buildium. The secret key is generated when the webhook subscription is created.|\r\n\r\nThe signature is a concatenation of the timestamp value and the event message hashed by a secret key. The secret key is generated for you when creating webhook subscriptions. It is important to keep this key stored safely as you would with any other credentials.\r\n\r\nThe following steps outline how to use the secret key, the event message and the HTTP header values to verify the request:\r\n\r\n 1. Concatenate the value of the buildium-webhook-timestamp header with the body of the event with a period character in between the two values. The body of the event must have all newlines removed and not contain spaces after the colon between property names and values. For example\r\n```json\r\n{\r\n \"EventName\": \"Rental.Created\",\r\n \"EventDateTime\": \"2022-12-22T16:18:20.876772Z\",\r\n \"AccountId\": 123456,\r\n \"PropertyId\": 78910\r\n}\r\n```\r\nwould be passed into your verification method as:\r\n```json\r\n{\"EventName\":\"Rental.Created\",\"EventDateTime\":\"2022-12-22T16:18:20.876772Z\",\"AccountId\":123456,\"PropertyId\":78910}\r\n```\r\n 2. Hash the concatenated string using the HMACSHA256 algorithm setting the webhook secret key as the algorithm key.\r\n 3. Convert the resulting hash bytes to a base64 string.\r\n 4. Compare the base64 string to the value of the buildium-webhook-signature header. If the values match with a case sensitive comparison, the message has been validated to have come from Buildium.\r\n\r\n### Sample Validation Code (C#)\r\n```c#\r\nprivate static bool ClientSideValidate(\r\nstring eventNotificationMessage, \r\nstring timestamp, \r\nstring signature)\r\n{\r\n var signedPayload = $\"{timestamp}.{eventNotificationMessage}\";\r\n var hasher = new HMACSHA256(Encoding.UTF8.GetBytes(m_secretKey));\r\n var computedHash = hasher.ComputeHash(Encoding.UTF8.GetBytes(signedPayload));\r\n var computedHashString = Convert.ToBase64String(computedHash);\r\n\r\n return computedHashString.Equals(signature);\r\n}\r\n```\r\nOnce you’ve successfully validated the message you can begin to process it with confidence it came from the Buildium platform and has not been altered after it has been sent.\r\n\r\nTo test your validation logic you can generate requests to your URL with headers you generate using the similar logic you created for validating the values.\r\n\r\n## Webhook Creation\r\nOnce your endpoint is ready to be tested end to end you will need to create a webhook subscription in your Buildium account. The subscription can be created by browsing to [Settings > Developer Tools > Webhooks](https://signin.managebuilding.com/manager/app/settings/developer-tools/webhooks) and then clicking the “Add webhook” button.\r\n\r\nOnce you’ve configured a new webhook, events will be sent to your endpoint as they are triggered within the account. So all you have to do is execute the action you want to test. You can expect webhook callbacks to your endpoint to fire within a few seconds to a few minutes from the event occurring in the Buildium platform. To determine if the events have been sent and/or see the resulting response from your platform you can view the webhook subscription event history page.\r\n\r\nWe strongly suggest you test your webhooks in your Buildium API sandbox account to ensure you don’t corrupt data in your production account. Once the integration is fully tested you can register the webhook in your production account.\r\n\r\n> NOTE: Due to our current security policies we do not support webhook callbacks to the Ngrok platform. We understand Ngrok can be useful for testing local webhook development and we hope to be able to support that platform safely and securely soon. In the meantime, we recommend using other websites and tools that can capture the webhook event HTTP request payload and headers and replay it manually on your local machine with a tool such as Postman.\r\n\r\n## Best Practices\r\n* Be sure to validate the signature on all incoming requests and consider rolling your secret keys on a regular basis. A new secret key can be generated by clicking the \"Generate key\" link next to the current secret key value when updating the webhook subscription.\r\n* Your webhook endpoints should be configured to receive only the types of events required by your integration. Listening for extra events (or all events) will put undue strain on your server and is not recommended.\r\n* Be sure your platform can handle duplicate events correctly. We do our best to ensure an event is only sent one time, but due to the distributed nature of the process we can not make any guarantees. We advise you to guard against duplicated event receipts by making your event processing idempotent. One way of doing this is logging the events you’ve processed, and then not processing already-logged events.\r\n* Buildium does not guarantee delivery of events in the order in which they are generated within the platform. For example, creating a lease might generate the following events - `Lease.Created`, `Tenant.Created`. Your endpoint shouldn’t expect delivery of these events in this order and should handle this accordingly. You can use the API to fetch any missing data. For example, you can fetch the lease resource using the information from tenant if you happen to receive that event first.\r\n\r\n## Webhook Events\r\nThe grid below details the available webhooks events along with their EventName and JSON message schema.\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n Applicants\r\n \r\n Applicant.Created\r\n
\r\n Applicant.Updated\r\n
\r\n Applicant.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  ApplicantId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Applicant Applications\r\n \r\n ApplicantApplication.Created\r\n
\r\n ApplicantApplication.Updated\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  ApplicantId: [integer]\r\n
  ApplicationId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Association Board Members\r\n \r\n AssociationBoardMember.Created \r\n
\r\n AssociationBoardMember.Updated\r\n
\r\n AssociationBoardMember.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  BoardMemberId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Associations\r\n \r\n Association.Created \r\n
\r\n Association.Updated\r\n
\r\n Association.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  PropertyId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Association Meter Readings\r\n \r\n Association.MeterReading.Created \r\n
\r\n Association.MeterReading.Updated\r\n
\r\n Association.MeterReading.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  PropertyId: [integer],\r\n
  ReadingDate: [date],\r\n
  MeterType: [string] \r\n
\r\n }\r\n
\r\n
\r\n Association Owners\r\n \r\n AssociationOwner.Created \r\n
\r\n AssociationOwner.Updated\r\n
\r\n AssociationOwner.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  OwnerId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Association Ownership Account Transactions\r\n \r\n OwnershipAccountTransaction.Created \r\n
\r\n OwnershipAccountTransaction.Updated\r\n
\r\n OwnershipAccountTransaction.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TransactionId: [integer],\r\n
  TransactionType: [string]\r\n
\r\n }\r\n
\r\n
\r\n Association Ownership Accounts\r\n \r\n OwnershipAccount.Created \r\n
\r\n OwnershipAccount.Updated\r\n
\r\n OwnershipAccount.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  OwnershipAccountId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Association Tenants\r\n \r\n AssociationTenant.Created \r\n
\r\n AssociationTenant.Updated\r\n
\r\n AssociationTenant.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TenantId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Association Units\r\n \r\n AssociationUnit.Created \r\n
\r\n AssociationUnit.Updated\r\n
\r\n AssociationUnit.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  UnitId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Bank Accounts\r\n \r\n BankAccount.Created \r\n
\r\n BankAccount.Updated\r\n
\r\n BankAccount.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  BankAccountId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Bank Account Transactions\r\n \r\n BankAccount.Transaction.Created \r\n
\r\n BankAccount.Transaction.Updated\r\n
\r\n BankAccount.Transaction.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  BankAccountId: [integer],\r\n
  TransactionId: [integer],\r\n
  TransactionType: [string]\r\n
\r\n }\r\n
\r\n
\r\n Bills\r\n \r\n Bill.Created \r\n
\r\n Bill.Updated\r\n
\r\n Bill.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  BillId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Bill Payments\r\n \r\n Bill.Payment.Created \r\n
\r\n Bill.Payment.Updated\r\n
\r\n Bill.Payment.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  PaymentId: [integer]\r\n
  BillIds: [\r\n
   [integer]\r\n
  ]\r\n
\r\n }\r\n
\r\n
\r\n Budgets\r\n \r\n Budget.Created \r\n
\r\n Budget.Updated\r\n
\r\n Budget.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  BudgetId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n General Ledger Accounts\r\n \r\n GLAccount.Created \r\n
\r\n GLAccount.Updated\r\n
\r\n GLAccount.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  GLAccountId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Integrations\r\n \r\n Installation.Created \r\n
\r\n Installation.Updated\r\n
\r\n Installation.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  IntegrationName: [string]\r\n
\r\n }\r\n
\r\n
\r\n Lease Move Outs\r\n \r\n Lease.MoveOut.Created\r\n \r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  LeaseId: [integer],\r\n
  TenantId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Lease Tenants\r\n \r\n LeaseTenant.Created \r\n
\r\n LeaseTenant.Updated\r\n
\r\n LeaseTenant.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TenantId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Lease Transactions\r\n \r\n LeaseTransaction.Created \r\n
\r\n LeaseTransaction.Updated\r\n
\r\n LeaseTransaction.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TransactionId: [integer],\r\n
  TransactionType: [string]\r\n
\r\n }\r\n
\r\n
\r\n Leases\r\n \r\n Lease.Created \r\n
\r\n Lease.Updated\r\n
\r\n Lease.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  LeaseId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Listings\r\n \r\n Listing.Created \r\n
\r\n Listing.Updated\r\n
\r\n Listing.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  UnitId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Phone Logs\r\n \r\n PhoneLog.Created \r\n
\r\n PhoneLog.Updated\r\n
\r\n PhoneLog.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  PhoneLogId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Rental Meter Readings\r\n \r\n Rental.MeterReading.Created \r\n
\r\n Rental.MeterReading.Updated\r\n
\r\n Rental.MeterReading.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  PropertyId: [integer],\r\n
  ReadingDate: [date],\r\n
  MeterType: [string] \r\n
\r\n }\r\n
\r\n
\r\n Rental Properties\r\n \r\n Rental.Created\r\n
\r\n Rental.Updated\r\n
\r\n Rental.Deleted\r\n
\r\n {
  EventName: [string],
  EventDateTime: [datetime],
  AccountId: [integer],
  PropertyId: [integer]
}
\r\n
\r\n Rental Units\r\n \r\n RentalUnit.Created \r\n
\r\n RentalUnit.Updated\r\n
\r\n RentalUnit.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  UnitId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Task Categories\r\n \r\n TaskCategory.Created \r\n
\r\n TaskCategory.Updated\r\n
\r\n TaskCategory.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TaskCategoryId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Tasks\r\n \r\n Task.Created \r\n
\r\n Task.Updated\r\n
\r\n Task.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TaskId: [integer],\r\n
  TaskType: [string],\r\n
\r\n }\r\n
\r\n
\r\n Vendor Categories\r\n \r\n VendorCategory.Created \r\n
\r\n VendorCategory.Updated\r\n
\r\n VendorCategory.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  VendorCategoryId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Vendors\r\n \r\n Vendor.Created \r\n
\r\n Vendor.Updated\r\n
\r\n Vendor.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  VendorId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Vendor Transactions\r\n \r\n Vendor.Transaction.Created \r\n
\r\n Vendor.Transaction.Updated\r\n
\r\n Vendor.Transaction.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  TransactionId: [integer]\r\n
  TransactionType: [string]\r\n
  VendorId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n Work Orders\r\n \r\n WorkOrder.Created\r\n
\r\n WorkOrder.Updated\r\n
\r\n WorkOrder.Deleted\r\n
\r\n \r\n {\r\n
  EventName: [string],\r\n
  EventDateTime: [datetime], \r\n
  AccountId: [integer],\r\n
  WorkOrderId: [integer]\r\n
\r\n }\r\n
\r\n
\r\n\r\n\r\n# Changelog\r\n\r\n### 2024-02-20\r\n#### API Updates\r\n* Meter reading resources and webhook events have been released:\r\n * [Delete meter reading details for an association and date](#tag/Association-Meter-Readings/operation/ExternalApiAssociationDeleteMeterReadingDetails_DeleteMeterReadingDetailsForAssociation)\r\n * [Delete meter reading details for a rental and date](#tag/Rental-Meter-Readings/operation/ExternalApiRentalDeleteMeterReadingDetails_DeleteMeterReadingDetailsForRental)\r\n * [Retrieve all meter reading details for an association](#tag/Association-Meter-Readings/operation/ExternalApiAssociationMeterReadingDetails_GetAssociationMeterReadingDetailsAsync)\r\n * [Retrieve all meter reading details for a rental](#tag/Rental-Meter-Readings/operation/ExternalApiRentalMeterReadingDetails_GetMeterReadingDetailsForRentalAsync)\r\n * [Retrieve all meter readings for an association](#tag/Association-Meter-Readings/operation/ExternalApiAssociationMeterReadingsRead_GetMeterReadingsForAssociation)\r\n * [Retrieve all meter readings for a rental](#tag/Rental-Meter-Readings/operation/ExternalApiRentalMeterReadingsRead_GetMeterReadingsForRental)\r\n * [Create/Update meter reading details for a rental](#tag/Rental-Meter-Readings/operation/ExternalApiRentalMeterReadingDetailsUpsert_UpsertMeterReadingDetailsForRentalAsync)\r\n * [Create/Update meter reading details for an association](#tag/Association-Meter-Readings/operation/ExternalApiAssociationMeterReadingDetailsUpsert_UpsertAssociationMeterReadingDetailsAsync)\r\n\r\n### 2024-01-23\r\n#### API Updates\r\n* Unit level accounting changes have been released:\r\n * `UnitId` has been added, as optional, to the `AccountingEntity` property for accounting transactions request resources. \r\n * `Unit` has been added to the `AccountingEntity` property for accounting transactions response resources.\r\n * As part of those changes listed above, the following endpoints have been updated:\r\n * [Create a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountChecks_CreateBankAccountCheck)\r\n * [Update a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountChecks_UpdateCheckForBankAccount)\r\n * [Retrieve a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountChecks_GetCheckForBankAccount)\r\n * [Retrieve all checks](#tag/Bank-Accounts/operation/ExternalApiBankAccountChecks_GetBankAccountChecks)\r\n * [Create a deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountDeposits_CreateBankAccountDeposit)\r\n * [Update a deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountDeposits_UpdateBankAccountDeposit)\r\n * [Retrieve a deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountDeposits_GetBankAccountDepositById)\r\n * [Retrieve all deposits](#tag/Bank-Accounts/operation/ExternalApiBankAccountDeposits_GetBankAccountDeposits)\r\n * [Create a quick deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountQuickDeposits_CreateQuickDeposit)\r\n * [Update a quick deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountQuickDeposits_UpdateQuickDeposit)\r\n * [Retrieve a quick deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountQuickDeposits_GetQuickDepositById)\r\n * [Retrieve all quick deposits](#tag/Bank-Accounts/operation/ExternalApiBankAccountQuickDeposits_GetAllQuickDeposits)\r\n * [Create a bill](#tag/Bills/operation/ExternalApiBills_CreateBill)\r\n * [Update a bill](#tag/Bills/operation/ExternalApiBills_UpdateBill)\r\n * [Retrieve a bill](#tag/Bills/operation/ExternalApiBills_GetBillById)\r\n * [Retrieve all bills](#tag/Bills/operation/ExternalApiBills_GetBillsAsync)\r\n * [Create a bill payment](#tag/Bills/operation/ExternalApiBillPaymentsWrite_CreateBillPayment)\r\n * [Retrieve a bill payment](#tag/Bills/operation/ExternalApiBillPaymentsRead_GetBillPaymentById)\r\n * [Retrieve all bill payments](#tag/Bills/operation/ExternalApiBillPaymentsRead_GetBillPayments)\r\n * [Create a withdrawal](#tag/Bank-Accounts/operation/ExternalApiBankAccountWithdrawals_CreateWithdrawalForBankAccount)\r\n * [Update a withdrawal](#tag/Bank-Accounts/operation/ExternalApiBankAccountWithdrawals_UpdateBankAccountWithdrawal)\r\n * [Retrieve a withdrawal](#tag/Bank-Accounts/operation/ExternalApiBankAccountWithdrawals_UpdateBankAccountWithdrawal)\r\n * [Retrieve all withdrawals](#tag/Bank-Accounts/operation/ExternalApiBankAccountWithdrawals_GetBankAccountWithdrawals)\r\n * [Create a transfer](#tag/Bank-Accounts/operation/ExternalApiBankAccountTransfers_CreateBankAccountTransfer)\r\n * [Update a transfer](#tag/Bank-Accounts/operation/ExternalApiBankAccountTransfers_UpdateBankAccountTransfer)\r\n * [Retrieve a transfer](#tag/Bank-Accounts/operation/ExternalApiBankAccountTransfers_GetBankAccountTransferById)\r\n * [Retrieve all transfers](#tag/Bank-Accounts/operation/ExternalApiBankAccountTransfers_GetBankAccountTransfers)\r\n * [Create a credit](#tag/Vendors/operation/ExternalApiVendorCreditsWrite_CreateVendorCredit)\r\n * [Retrieve a credit](#tag/Vendors/operation/ExternalApiVendorCredits_GetVendorCredit)\r\n * [Create a refund](#tag/Vendors/operation/ExternalApiVendorRefundsWrite_CreateVendorRefund)\r\n * [Retrieve a refund](#tag/Vendors/operation/ExternalApiVendorRefunds_GetVendorRefund)\r\n * [Create a general journal entry](#tag/General-Ledger/operation/ExternalApiGeneralLedgerJournalEntries_CreateGeneralJournalEntry)\r\n * [Update a general journal entry](#tag/General-Ledger/operation/ExternalApiGeneralLedgerJournalEntries_UpdateGeneralJournalEntry)\r\n * [Retrieve a general ledger transaction](#tag/General-Ledger/operation/ExternalApiGeneralLedgerTransactions_GetTransactionById)\r\n * [Retrieve all general ledger transactions](/#tag/General-Ledger/operation/ExternalApiGeneralLedgerTransactions_GetAllTransactions)\r\n * [Retrieve all general ledger entries](#tag/General-Ledger/operation/ExternalApiGeneralLedger_GetGeneralLedgerEntries)\r\n * `UnitId` has been added to the `Lines` property for lease accounting transactions response resources.\r\n * [Retrieve all lease transactions](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerTransactions_GetLeaseLedgers)\r\n * [Retrieve a lease transaction](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerTransactions_GetLeaseLedgerTransactionById)\r\n * [Create a charge](#tag/Lease-Transactions/operation/CreateLeaseLedgerCharge)\r\n * [Update a charge](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerChargesWrite_UpdateLeaseCharge)\r\n * [Create a payment](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerPaymentsWrite_CreatePayment)\r\n * [Create a payment (auto allocated)](#tag/Lease-Transactions/operation/ExternalApiLeaseAutoAllocatedPayment_CreateLeaseAutoAllocatedPayment)\r\n * [Create a payment reversal](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerPaymentReversalsWrite_CreateLeaseReversePayment)\r\n * [Create a credit](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerCreditsWrite_CreateLeaseCredit)\r\n * [Create a deposit withholding](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerDepositWithholding_CreateLeaseLedgerDepositWithholding)\r\n* Requests to [create a deposit](#tag/Bank-Accounts/operation/ExternalApiBankAccountDeposits_CreateBankAccountDeposit) that contain payment ids that do not exist or have already been deposited will include those payment ids in the error response.\r\n* The ability to update a ledger payment has been released for [leases](#tag/Lease-Transactions/operation/ExternalApiLeaseLedgerPaymentsWrite_UpdateLeaseLedgerPayment) and [ownership accounts](#tag/Ownership-Account-Transactions/operation/ExternalApiOwnershipAccountLedgerPayments_UpdateOwnershipAccountLedgerPayment).\r\n\r\n### 2023-12-12\r\n#### API Updates\r\n* File sharing resources have been released:\r\n * [Retrieve a file's share settings](#tag/Files/operation/ExternalApiFileSharing_GetFileShareSettingsById)\r\n * [Update a file's share settings](#tag/Files/operation/ExternalApiFileSharing_UpdateFileSharingSetting)\r\n* `TransactionTypeEnum` has been added as a property to lease and ownership account transaction response resources.\r\n* `MoveInDate` has been added as a property to each resource in the `Tenants` property of a lease resource.\r\n\r\n\r\n### 2023-11-14\r\n#### API Updates\r\n* The ability to set sharing options while [creating a resident request task](#tag/Resident-Requests/operation/ExternalApiResidentRequestTasks_CreateResource) has been released.\r\n* `AccountNumberUnmasked` has been added as a property to bank account response resources.\r\n* `DelinquencyStatus` has been added as a property to each Ownership Account in the response for association lockbox data response resources.\r\n\r\n### 2023-10-17\r\n#### API Updates\r\n* Check files endpoints have been released:\r\n * [Retrieve all files for a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountCheckFiles_GetFilesForBankAccountCheck)\r\n * [Retrieve a file for a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountCheckFiles_GetBankAccountCheckFileById)\r\n * [Download a file for a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountCheckFileDownloadRequests_DownloadCheckFile)\r\n * [Upload a file for a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountCheckFileUploads_CreateCheckUploadFileRequest)\r\n * [Delete a file for a check](#tag/Bank-Accounts/operation/ExternalApiBankAccountCheckFiles_DeleteBankAccountCheckFile)\r\n* The ability to [create a payment for multiple bills with one check](#tag/Bills/operation/ExternalApiBillPaymentsWrite_CreateMultipleBillPayments) has been released.\r\n\r\n### 2023-09-19\r\n#### API Updates\r\n* Lease ePay settings endpoints have been released:\r\n * [Retrieve ePay settings for a lease](#operation/ExternalApiLeaseEpaySettings_GetLeaseEpaySettingsById)\r\n * [Update ePay settings for a lease](#operation/ExternalApiLeaseEpaySettings_UpdateLeaseEpaySettings)\r\n* The ability to filter [ownership accounts](#operation/ExternalApiOwnershipAccounts_GetAllOwnershipAccounts) and [associations](#operation/ExternalApiAssociations_GetAssociations) by ids has been released.\r\n\r\n### 2023-08-16\r\n#### API Updates\r\n* Rental owner contribution request endpoints have been released:\r\n * [Retrieve contribution details included for a rental owner contribution request](#operation/ExternalApiRentalOwnerRequestTasks_GetRentalOwnerRequestTaskContributionData)\r\n * [Update contribution details included for a rental owner contribution request](#operation/ExternalApiRentalOwnerRequestTasks_UpdateRentalOwnerRequestTaskContributionData)\r\n* The ability to [retrieve all association bank lockbox data](#operation/ExternalApiAssociationBankLockBoxData_GetBankLockBoxData) has been released.\r\n* The ability to create payments using configured allocation settings have been released:\r\n * [Create a lease ledger payment with automatic allocations](#operation/ExternalApiLeaseAutoAllocatedPayment_CreateLeaseAutoAllocatedPayment)\r\n * [Create an ownership account ledger payment with automatic allocations](#operation/ExternalApiOwnershipAccountAutoAllocatedPayment_CreateOwnershipAccountAutoAllocatedPayment)\r\n* Budget resources will now round values within the `MonthlyAmounts` collection to two decimal places.\r\n \r\n### 2023-07-18\r\n#### API Updates\r\n* The ability to [retrieve all general ledger entries](#operation/ExternalApiGeneralLedger_GetGeneralLedgerEntries) has been released.\r\n* Retail cash user endpoints have been released:\r\n * [Retrieve all retail cash users](#operation/ExternalApiRetailCashRead_GetRetailCashUsers)\r\n * [Retrieve a retail cash user](#operation/ExternalApiRetailCashRead_GetRetailCashUser)\r\n * [Update a retail cash user](#operation/ExternalApiRetailCashWrite_UpdateRetailCashUser)\r\n* `TaxInformation` has been added as a property to Association response resources.\r\n* `TaxInformation` has been added as an optional property when [creating an association](#operation/ExternalApiAssociations_CreateAssociation).\r\n\r\n#### Webhook Updates\r\n* New [webhook events](#section/Webhooks/Webhook-Events) have been added for the following resources:\r\n - Vendor transactions\r\n \r\n### 2023-06-20\r\n#### API Updates\r\n* The ability to [retrieve all lease renewals](#operation/ExternalApiLeaseRenewalsRead_GetAllLeaseRenewalsForAllProperties) has been released.\r\n* Image management endpoints have been released:\r\n * Retrieve images for [rentals](#operation/ExternalApiRentalImages_GetRentalImages) and [rental units](#operation/ExternalApiRentalUnitImages_GetRentalUnitImages)\r\n * Retrieve an image for [rentals](#operation/ExternalApiRentalImages_GetRentalImageById) and [rental units](#operation/ExternalApiRentalUnitImages_GetRentalUnitImageById)\r\n * Update an image for [rentals](#operation/ExternalApiRentalImages_UpdateRentalImage) and [rental units](#operation/ExternalApiRentalUnitImages_UpdateRentalUnitImage)\r\n * Delete an image for [rentals](#operation/ExternalApiRentalImages_DeleteRentalImage) and [rental units](#operation/ExternalApiRentalUnitImages_DeleteRentalUnitImage)\r\n * Reorder images for [rentals](#operation/ExternalApiRentalImageOrder_ReorderRentalImages) and [rental units](#operation/ExternalApiRentalUnitImageOrder_ReorderRentalUnitImages) \r\n * Upload photos for [rentals](#operation/CreateRentalImageUploadFileRequestAsync) and [rental units](#operation/CreateRentalUnitImageUploadFileRequestAsync)\r\n * Create images using video links for [rentals](#operation/ExternalApiRentalImageVideoLinkRequests_CreateVideoLinkRequest) and [rental units](#operation/ExternalApiRentalUnitImageVideoLinkRequests_CreateUnitVideoLinkRequest)\r\n * Download an image for [rentals](#operation/ExternalApiRentalImageDownloadRequests_GetRentalImageDownloadUrlById) and [rental units](#operation/ExternalApiRentalUnitImageDownloadRequests_GetRentalUnitImageDownloadUrlById)\r\n\r\n### 2023-05-16\r\n#### API Updates\r\n* `TenantIds` and `ApplicantIds` can optionally be provided to the [create a lease](#operation/LeasesExternalApi_CreateLease) endpoint.\r\n* The `Lines` property for recurring charge transactions is now populated on the following endpoints:\r\n * [Retrieve all recurring transactions for a lease](#operation/LeaseRecurringTransactionsExternalApi_GetLeaseRecurringTransactions)\r\n * [Retrieve all recurring transactions for an ownership account](#operation/OwnershipAccountRecurringTransactionsExternalApi_GetAssociationRecurringTransaction)\r\n* EPay settings endpoints have been released:\r\n * [Retrieve EPay settings for a rental](#operation/RentalEpaySettingsExternalApi_GetEPaySettingsForRentalProperty)\r\n * [Update EPay settings for a rental](#operation/RentalEpaySettingsExternalApi_UpdateEPaySettingsForRental)\r\n * [Retrieve EPay settings for an association](#operation/AssociationsEPaySettingsExternalApi_GetEPaySettingsForAssociationById)\r\n * [Update EPay settings for an association](#operation/AssociationsEPaySettingsExternalApi_UpdateEPaySettingsForAssociation)\r\n* The ability to inactivate or reactivate rentals and associations have been released:\r\n * [Inactivate a rental](#operation/ExternalApiRentalsActiveStatus_InactivateRentalProperty)\r\n * [Reactivate a rental](#operation/ExternalApiRentalsActiveStatus_ReactivateRentalProperty)\r\n * [Inactivate an association](#operation/ExternalApiAssociationActiveStatus_InactivateAssociation)\r\n * [Reactivate an association](#operation/ExternalApiAssociationActiveStatus_ReactivateAssociation)\r\n* Renters insurance endpoints have been released:\r\n * [Retrieve all renters insurance policies](#operation/RentersInsuranceExternalApi_GetRentersInsurancePolicies)\r\n * [Retrieve a renters insurance policy](#operation/RentersInsuranceExternalApi_GetRentersInsurancePolicyById)\r\n* Applicant `Status` has been added to the response for the following endpoints:\r\n * [Retrieve all applicants](#operation/ApplicantsExternalApi_GetApplicants)\r\n * [Retrieve an applicant](#operation/ApplicantsExternalApi_GetApplicantById)\r\n * [Create an applicant](#operation/ApplicantsExternalApi_CreateApplicant)\r\n\r\n### 2023-04-18\r\n#### API Updates\r\n* The ability to retrieve accounting lock periods has been released:\r\n - [Retrieve accounting lock periods](#operation/AccountingLockPeriodExternalApi_GetAccountingLockPeriodSettings)\r\n* Email related endpoints have been released:\r\n - [Retrieve all emails](#operation/EmailsExternalApi_GetEmails)\r\n - [Retrieve an email](#operation/EmailsExternalApi_GetEmailById)\r\n - [Create an email](#operation/EmailsExternalApiWrite_CreateEmail)\r\n - [Retrieve all email recipients](#operation/EmailsExternalApi_GetEmailRecipients)\r\n - [Retrieve all communication templates](#operation/MailingTemplatesExternalApi_GetMailingTemplates)\r\n - [Retrieve a communication template](#operation/MailingTemplatesExternalApi_GetMailingTemplatesById)\r\n* The ability to retrieve resident center users has been released:\r\n - [Retrieve all resident center users](#operation/ResidentCenterUsersExternalApi_GetResidentCenterUsers)\r\n* Vendor transaction related endpoints have been released:\r\n - [Create a credit](#operation/VendorCreditsWriteExternalApi_CreateVendorCredit)\r\n - [Retrieve a credit](#operation/VendorCreditsExternalApi_GetVendorCredit)\r\n - [Create a refund](#operation/VendorRefundsWriteExternalApi_CreateVendorRefund)\r\n - [Retrieve a refund](#operation/VendorRefundsExternalApi_GetVendorRefund)\r\n* Lease and ownership account deposit and charge related endpoints have been released:\r\n - [Create an ownership account deposit withholding](#operation/OwnershipAccountDepositWithholdingExternalApi_CreateOwnershipAccountDepositWithholding)\r\n - [Update an ownership account charge](#operation/OwnershipAccountsLedgerExternalApi_UpdateOwnershipAccountCharge)\r\n - [Create a lease deposit withholding](#operation/LeaseLedgerDepositWithholdingExternalApi_CreateLeaseLedgerDepositWithholding)\r\n - [Update a lease charge](#operation/LeaseLedgerTransactionsExternalApi_UpdateLeaseCharge)\r\n* The [create a lease](#operation/LeasesExternalApi_CreateLease) endpoint now includes the ability to provide amounts for `ProratedFirstMonthRent` and `ProratedLastMonthRent`.\r\n\r\n### 2023-03-21\r\n#### API Updates\r\n* Property groups related endpoints have been released:\r\n - [Retrieve all property groups](#operation/PropertyGroupsExternalApi_GetPropertyGroups)\r\n - [Retrieve a property group](#operation/PropertyGroupsExternalApi_GetPropertyGroupById)\r\n - [Create a property group](#operation/PropertyGroupsExternalApi_CreatePropertyGroup)\r\n - [Update a property group](#operation/PropertyGroupsExternalApi_UpdatePropertyGroup)\r\n* Bill files related endpoints have been released:\r\n - [Retrieve all files for a bill](#operation/BillsFilesExternalApi_GetAllFilesForBill)\r\n - [Retrieve a file for a bill](#operation/BillsFilesExternalApi_GetBillFileById)\r\n - [Upload a bill file](#operation/BillFileUploadsExternalApi_CreateUploadFileRequest)\r\n - [Download a bill file](#operation/BillsFilesExternalApi_DownloadBillFile)\r\n - [Delete a bill file](#operation/BillsFilesExternalApi_DeleteBillFile)\r\n* Bill payment creation has been released:\r\n - [Create a bill payment](#operation/BillPaymentsWriteExternalApi_CreateBillPayment)\r\n* Bills can now be filtered by approval statuses:\r\n - [Retrieve all bills](#operation/BillsExternalApi_GetBillsAsync)\r\n* The bill message now includes an `ApprovalStatus` field.\r\n* The lease message now includes a `Tenants` collection, which includes the `Id` and `Status` of all tenants that have ever been associated with the lease.\r\n* The [create a property](#operation/RentalsExternalApi_CreateRentalProperty) now includes an optional `Units` field for providing unit information for the rental property being created.\r\n\r\n### 2023-02-21\r\n#### API Updates\r\n* Lease renewal related endpoints have been released:\r\n - [Retrieve all lease renewals](#operation/LeaseRenewalsExternalApiRead_GetAllLeaseRenewals)\r\n - [Retrieve a lease renewal](#operation/LeaseRenewalsExternalApiRead_GetLeaseRenewalById)\r\n - [Create a lease renewal](#operation/LeaseRenewalsExternalApiWrite_CreateLeaseRenewal)\r\n\r\n### 2022-12-13\r\n#### API Updates\r\n* Accounting related endpoints have been released:\r\n - [Create a general ledger account](#operation/GeneralLedgerAccountsExternalApi_CreateGeneralLedgerAccount)\r\n - [Update a general ledger account](#operation/GeneralLedgerAccountsExternalApi_UpdateGLAccount)\r\n* The general ledger account message will now include `DefaultAccountName` and `ParentGLAccountId`.\r\n* Filtering by last updated date and time capabilities have been released for the following endpoint:\r\n - [Retrieve all leases](#operation/LeasesExternalApi_GetLeases)\r\n* The lease message will now include `LastUpdatedDateTime`.\r\n\r\n### 2022-11-15\r\n#### API Updates\r\n* Endpoints for announcements have been released:\r\n - [Retrieve all announcements](#operation/AnnouncementsExternalApi_GetAllAnnouncements)\r\n - [Retrieve an announcement](#operation/AnnouncementsExternalApi_GetAnnouncementById)\r\n - [Retrieve all announcement properties](#operation/AnnouncementsExternalApi_GetAnnouncementProperties)\r\n - [Create an announcement](#operation/AnnouncementsExternalApi_CreateAnnouncement)\r\n - [Expire an announcement](#operation/AnnouncementsExpirationExternalApi_ExpireAnnouncement)\r\n* The [create an owner](#operation/RentalOwnersExternalApi_CreateRentalOwner) endpoint now accepts optional tax information.\r\n* The [retrieve all owners](#operation/RentalOwnersExternalApi_GetRentalOwners) and [retrieve an owner](#operation/RentalOwnersExternalApi_GetRentalOwnerById) endpoints now return tax information.\r\n\r\n### 2022-10-18\r\n#### API Updates\r\n* Task history related endpoints have been released! You can now retrieve and update task history notes as well as upload and download task history file attachments.\r\n - [Retrieve all task history](#operation/TaskHistoryExternalApi_GetTaskHistories)\r\n - [Retrieve a task history](#operation/TaskHistoryExternalApi_GetTaskHistoryById)\r\n - [Update a task history](#operation/TaskHistoryExternalApi_UpdateTaskHistory)\r\n - [Retrieve task history file meta data](#operation/TaskHistoryFilesExternalApi_GetAllTaskHistoryFiles)\r\n - [Upload a task history file](#operation/TaskHistoryFileUploadsExternalApi_CreateUploadFileRequestAsync)\r\n - [Download a task history file](#operation/TaskHistoryFileDownloadsExternalApi_GetFileDownloadRequest)\r\n - [Delete a task history file](#operation/TaskHistoryFilesExternalApi_DeleteTaskHistoryFile)\r\n\r\n#### Webhook Updates\r\n* New [webhook events](#section/Webhooks/Webhook-Events) have been added for the following resources: \r\n - Bank Accounts\r\n - Bank Account Transactions\r\n - Bills\r\n - Bill Payments\r\n - Budgets\r\n - General Ledger Accounts\r\n - Phone logs\r\n\r\n### 2022-09-20\r\n#### API Updates\r\n* Accounting related endpoints have been released:\r\n - [Create a general journal entry](#operation/GeneralJournalEntriesExternalApi_CreateGeneralJournalEntry)\r\n - [Update a general journal entry](#operation/GeneralJournalEntriesExternalApi_UpdateGeneralJournalEntry)\r\n - [Retrieve a lease ledger refund](#operation/LeaseLedgerRefundsExternalApi_GetLeaseLedgerRefundById)\r\n - [Create a lease ledger refund](#operation/LeaseLedgerRefundsExternalApi_CreateLeaseLedgerRefund)\r\n - [Retrieve an ownership account refund](#operation/OwnershipAccountRefundExternalApi_GetOwnershipAccountRefundById)\r\n - [Create and ownership account refund](#operation/OwnershipAccountRefundExternalApi_CreateOwnershipAccountRefund)\r\n\r\n#### Webhook Updates\r\n* Webhooks have been released! Please refer to the [Webhooks](#section/Webhooks) section of the documentation for more details.\r\n\r\n### 2022-08-16\r\n#### API Updates\r\n* The [retrieve account info](#operation/AdministrationExternalApi_GetAccountInfo) endpoint now includes `Id` and `Url` fields. \r\n* Endpoints for recurring transactions have been released for leases:\r\n - [Retrieve all recurring transactions](#operation/LeaseRecurringTransactionsExternalApi_GetLeaseRecurringTransactions) \r\n - [Retrieve a recurring charge](#operation/LeaseChargeRecurringTransactionsExternalApi_GetLeaseChargeRecurringTransactionById)\r\n - [Create a recurring charge](#operation/LeaseChargeRecurringTransactionsExternalApi_CreateLeaseChargeRecurringTransaction)\r\n - [Retrieve a recurring payment](#operation/LeaseRecurringPaymentsExternalApi_GetRecurringLeasePaymentsById)\r\n - [Create a recurring payment](#operation/LeaseRecurringPaymentsExternalApi_CreateLeaseRecurringPayment)\r\n - [Retrieve a recurring credit](#operation/LeaseRecurringCreditsExternalApi_GetLeaseRecurringCreditById)\r\n - [Create a recurring credit](#operation/LeaseRecurringCreditsExternalApi_CreateLeaseCreditRecurringTransaction)\r\n* Endpoints for recurring transactions have been released for ownership accounts:\r\n - [Retrieve all recurring transactions](#operation/OwnershipAccountRecurringTransactionsExternalApi_GetAssociationRecurringTransaction)\r\n - [Retrieve a recurring charge](#operation/OwnershipAccountChargeRecurringTransactionsExternalApi_GetOwnershipAccountsChargeRecurringTransactionById)\r\n - [Create a recurring charge](#operation/OwnershipAccountChargeRecurringTransactionsExternalApi_CreateOwnershipAccountsChargeRecurringTransaction)\r\n - [Retrieve a recurring payment](#operation/OwnershipAccountRecurringPaymentsExternalApi_GetRecurringOwnershipAccountPaymentsById)\r\n - [Create a recurring payment](#operation/OwnershipAccountRecurringPaymentsExternalApi_CreateOwnershipAccountRecurringPayment)\r\n - [Retrieve a recurring credit](#operation/OwnershipAccountRecurringCreditsExternalApi_GetOwnershipAccountRecurringCreditById)\r\n - [Create a recurring credit](#operation/OwnershipAccountRecurringCreditsExternalApi_CreateOwnershipAccountCreditRecurringTransaction)\r\n* The [Create Resident Requests](#operation/ResidentRequestTasksExternalApi_CreateResource) endpoint now supports `IsEntryPermittedByResident`, `DoesResidentHavePets`, and `ResidentEntryNotes` as optional inputs.\r\n\r\n### 2022-07-19 \r\n#### API Updates\r\n* The general ledger account message will now include the account's status. This value comes back in a property named `IsActive` on the following endpoints:\r\n - [Retrieve all bills](#operation/BillsExternalApi_GetBillsAsync)\r\n - [Create a bill](#operation/BillsExternalApi_CreateBill)\r\n - [Retrieve a bill](#operation/BillsExternalApi_GetBillById)\r\n - [Update a bill](#operation/BillsExternalApi_UpdateBill)\r\n - [Retrieve all general ledger transactions](#operation/GeneralLedgerExternalApi_GetAllTransactions)\r\n - [Retrieve a general ledger transaction](#operation/GeneralLedgerExternalApi_GetTransactionById)\r\n - [Retrieve all general ledger accounts](#operation/AccountingExternalApi_GetAllGLAccounts)\r\n - [Retrieve a general ledger account](#operation/AccountingExternalApi_GetGlAccountById)\r\n - [Retrieve all general ledger account balances](#operation/GLAccountBalancesExternalApi_GetGlAccountBalances)\r\n - [Retrieve all bank accounts](#operation/BankAccountsExternalApi_GetAllBankAccounts)\r\n - [Create a bank account](#operation/BankAccountsExternalApi_CreateBankAccount)\r\n - [Retrieve a bank account](#operation/BankAccountsExternalApi_GetBankAccount)\r\n - [Update a bank account](#operation/BankAccountsExternalApi_UpdateBankAccount)\r\n - [Retrieve a transfer](#operation/BankAccountTransfersExternalApi_GetBankAccountTransferById)\r\n - [Create a ledger charge](#operation/OwnershipAccountsLedgerExternalApi_CreateCharge)\r\n - [Create a ledger credit](#operation/OwnershipAccountsLedgerExternalApi_CreateOwnershipAccountCredit)\r\n - [Create a ledger payment](#operation/OwnershipAccountsLedgerExternalApi_CreateOwnershipAccountLedgerPayment)\r\n - [Retrieve ownership account transactions](#operation/OwnershipAccountsLedgerExternalApi_GetOwnershipAccountLedger)\r\n - [Retrieve an ownership account transaction](#operation/OwnershipAccountsLedgerExternalApi_GetOwnershipAccountTransactionById)\r\n - [Create a charge](#operation/LeaseLedgerTransactionsExternalApi_CreateCharge)\r\n - [Create a credit](#operation/LeaseLedgerTransactionsExternalApi_CreateLeaseCredit)\r\n - [Create a payment](#operation/LeaseLedgerTransactionsExternalApi_CreatePayment)\r\n - [Create a payment reversal](#operation/LeaseLedgerTransactionsExternalApi_CreateLeaseReversePayment)\r\n - [Retrieve all lease transactions](#operation/LeaseLedgerTransactionsExternalApi_CreateLeaseReversePayment)\r\n - [Retrieve a lease transaction](#operation/LeaseLedgerTransactionsExternalApi_GetLeaseLedgers)\r\n* Filtering by last updated date and time capabilities have been released for the following endpoint:\r\n - [Retrieve all vendors](#operation/VendorsExternalApi_GetAllVendors)\r\n\r\n### 2022-06-14\r\n#### API Updates\r\n* Budgets capabilities have been released including:\r\n - The ability to [retrieve all budgets](#operation/BudgetsExternalApi_GetBudgets)\r\n - The ability to [retrieve a budget](#operation/BudgetsExternalApi_GetBudgetById)\r\n - The ability to [create a budget](#operation/BudgetsExternalApi_CreateBudget)\r\n - The ability to [update a budget](#operation/BudgetsExternalApi_UpdateBudget)\r\n\r\n### 2022-05-24\r\n#### API Updates\r\n* When [creating a resident request](#operation/ResidentRequestTasksExternalApi_CreateResource), if AssignedToUserId is not provided, assignment rules in the resident center settings (if configured) will be used for assignment.\r\n* Filtering by last updated date and time capabilities have been released for the following endpoints:\r\n - [Associations](#operation/AssociationsExternalApi_GetAssociations) \r\n - [Association units](#operation/AssociationUnitsExternalApi_GetAllAssociationUnits)\r\n - [Association owners](#operation/AssociationOwnersExternalApi_GetAllAssociationOwners)\r\n - [Association tenants](#operation/AssociationTenantsExternalApi_GetAssociationTenants)\r\n - [Rental properties](#operation/RentalsExternalApi_GetAllRentals)\r\n - [Rental units](#operation/RentalUnitsExternalApi_GetAllRentalUnits)\r\n - [Rental owners](#operation/RentalOwnersExternalApi_GetRentalOwners)\r\n - [Rental tenants](#operation/RentalTenantsExternalApi_GetAllTenants)\r\n\r\n### 2022-04-19\r\n#### API Updates\r\n* Preferred vendor capabilities have been released including:\r\n - The ability to [retrieve](#operation/AssociationPreferredVendorsExternalApi_GetAssociationPreferredVendors) and [update](#operation/AssociationPreferredVendorsExternalApi_UpdateAssociationPreferredVendors) preferred vendors for associations.\r\n - The ability to [retrieve](#operation/RentalPreferredVendorsExternalApi_GetRentalPreferredVendors) and [update](#operation/RentalPreferredVendorsExternalApi_UpdateRentalPreferredVendors) preferred vendors for rental properties.\r\n\r\n### 2022-03-22\r\n#### API Updates\r\n* [Association owners](#operation/AssociationOwnersExternalApi_GetAllAssociationOwners), [association tenants](#operation/AssociationTenantsExternalApi_GetAssociationTenants) and [board members](#operation/AssociationBoardMembersExternalApi_GetAllAssociationBoardMembers) are now filterable by their created date and time.\r\n* Appliance information and service history is now available for [associations](#tag/Association-Appliances) and [rental properties](#tag/Rental-Appliances).\r\n* [Lease rent schedules](#operation/LeaseRentExternalApi_GetRent) are now available.\r\n\r\n\r\n### 2022-02-15\r\n#### API Updates\r\n* Additional rental data is now available including:\r\n - The ability to retrieve and update rental amenities for properties and units.\r\n - The ability to [retrieve](#operation/LeasesExternalApi_GetLeaseMoveOutInformationById), [create](#operation/LeasesExternalApi_CreateMoveOutData) and [delete](#operation/LeasesExternalApi_UndoTenantMoveout) lease move out dates.\r\n - The ability to [create a payment reversal](#operation/LeaseLedgerTransactionsExternalApi_CreateLeaseReversePayment).\r\n* Additional applicant capabilities are available including:\r\n - The ability to [retrieve](#operation/ApplicantNotesExternalApi_GetAllApplicantNotes) and [create](#operation/ApplicantNotesExternalApi_CreateApplicantNote) applicant notes.\r\n - When an applicant is converted to a tenant a new `TenantId` field on the applicant message will link the two resources.\r\n - The ability to filter the [Retrieve all Applicants](#operation/ApplicantsExternalApi_GetApplicants) endpoint by email address.\r\n* The ability to [retrieve file metadata](#operation/FilesExternalApi_GetFiles) as well as [upload](#operation/FilesUploadsExternalApi_CreateUploadFileRequestAsync) and [download](#operation/FileDownloadExternalApi_GetFileDownloadUrlAsync) files related to the following resources - Accounts, Associations, Association Owners, Association Units, Leases, Ownership Accounts, Public Assets, Rentals, Rental Owners, RentalUnits, Tenants and Vendors.\r\n\r\n\r\n### 2022-01-18\r\n#### API Updates\r\n* Additional association data is now available including:\r\n - The ability [retrieve](#operation/AssociationBoardMembersExternalApi_GetAllAssociationBoardMembers), [create](#operation/AssociationBoardMembersExternalApi_CreateBoardMember) and [delete](#operation/AssociationBoardMembersExternalApi_DeleteBoardMember) association board members.\r\n - Association fiscal month and day can now be retrieved and updated as part of the Association endpoints.\r\n - Staff members can now be assigned as the association manager for a given association.\r\n* Additional association owner data is now available including:\r\n - Association owner occupancy status can be [retrieved](#operation/AssociationOwnersExternalApi_GetUnitOccupancyStatusesForAssociationOwner) and [updated](#operation/AssociationOwnersExternalApi_UpdateAssociationOwnerOccupancyStatus).\r\n - Association owner tax payer identification number can be retrieved and updated as part of the association owner endpoints.\r\n - The date and time the association owner record was created is now being returned in the response payload.\r\n* Additional association tenant features are now available including:\r\n - The ability to set the move out date.\r\n - The date and time the association tenant record was created is now being returned in the response payload.\r\n* [Updating bills](#operation/BillsExternalApi_UpdateBill) now includes the ability to edit line items.\r\n* The ability to retrieve [client leads](#tag/Client-Leads) has been introduced. Note, this data is only available if you have an [All Property Management](https://www.allpropertymanagement.com/) account.\r\n\r\n### 2021-12-14\r\n#### API Updates\r\n* Additional bank account endpoints have been added to retrieve, create and update bank accounts and bank account transactions.\r\n\r\n### 2021-11-16\r\n#### API Updates\r\n* The URL to the rental application for listings is now being returned in a new property called `RentalApplicationUrl`. This new property is included in the following endpoints:\r\n - [Retrieve all listings](#operation/ListingsExternalApi_GetListingsAsync)\r\n - [Retrieve a listing](#operation/ListingsExternalApi_GetListingForUnitAsync)\r\n - [Create a listing](#operation/ListingsExternalApi_UpsertListingsAsync)\r\n* `AssignedToUserId` is no longer required as input for the following endpoints:\r\n - [Create a rental owner request](#operation/RentalOwnerRequestTasksExternalApi_CreateRentalOwnerRequestTask)\r\n - [Update a rental owner request](#operation/RentalOwnerRequestTasksExternalApi_UpdateRentalOwnerRequestTask)\r\n - [Create a resident request](#operation/ResidentRequestTasksExternalApi_CreateResource)\r\n - [Update a resident request](#operation/ResidentRequestTasksExternalApi_UpdateResource)\r\n* Ability to retrieve a single association ownership account transaction has been released:\r\n - [Retrieve a single ownership account transaction](#operation/OwnershipAccountsLedgerExternalApi_GetOwnershipAccountTransactionById)\r\n\r\n### 2021-10-19\r\n#### API Updates\r\n* The taxpayer identifier for rental tenants is now being returned in a new property named `TaxId`. This new property is included in the following endpoints:\r\n - [Retrieve all tenants](#operation/TenantsExternalApi_GetAllTenants)\r\n - [Retrieve a tenant](#operation/TenantsExternalApi_GetTenantById)\r\n - [Create a rental tenant](#operation/TenantsExternalApi_CreateRentalTenant)\r\n - [Update a rental tenant](#operation/TenantsExternalApi_UpdateRentalTenant)\r\n - [Retrieve all leases](#operation/LeasesExternalApi_GetLeases)\r\n - [Retrieve a lease](#operation/LeasesExternalApi_GetLeaseById)\r\n - [Create a lease](#operation/LeasesExternalApi_CreateLease)\r\n - [Update a lease](#operation/LeasesExternalApi_UpdateLease)\r\n* The lease message has been updated to include the day of the month the tenant payments are due. This value comes back in a property named `PaymentDueDay` on the following the following endpoints:\r\n - [Retrieve all leases](#operation/LeasesExternalApi_GetLeases)\r\n - [Retrieve a lease](#operation/LeasesExternalApi_GetLeaseById)\r\n - [Create a lease](#operation/LeasesExternalApi_CreateLease)\r\n - [Update a lease](#operation/LeasesExternalApi_UpdateLease)\r\n* Rental and association messages will now include the operating bank account identifier. This value comes back in a new property named `OperatingBankAccountId` on the following endpoints:\r\n - [Retrieve all associations](#operation/AssociationsExternalApi_GetAssociations)\r\n - [Retrieve an association](#operation/AssociationsExternalApi_GetAssociationById)\r\n - [Create an association](#operation/AssociationsExternalApi_CreateAssociation)\r\n - [Update an association](#operation/AssociationsExternalApi_UpdateAssociation)\r\n - [Retrieve all rental properties](#operation/RentalsExternalApi_GetAllRentals)\r\n - [Retrieve a rental property](#operation/RentalsExternalApi_GetRentalById)\r\n - [Create a rental property](#operation/RentalsExternalApi_CreateRentalProperty)\r\n - [Update a rental property](#operation/RentalsExternalApi_UpdateRentalProperty)\r\n\r\n### 2021-09-21\r\n#### API Updates\r\n* Outstanding balance resource capabilities have been released. Outstanding balances can be retrieved for the following resources:\r\n - [Leases](#operation/LeasesExternalApi_GetLeaseOutstandingBalances)\r\n - [Ownership Accounts](#operation/OwnershipAccountsExternalApi_GetOwnershipAccountOutstandingBalances)\r\n* Work order id will be returned on bills, and is an optional input for creating a bill:\r\n - [Retrieve all bills](#operation/BillsExternalApi_GetBillsAsync)\r\n - [Retrieve a bill](#operation/BillsExternalApi_GetBillById)\r\n - [Create a bill](#operation/BillsExternalApi_CreateBill)\r\n\r\n\r\n### 2021-08-24\r\n#### API Updates\r\n* Note read and write capabilities have been released. Notes can be retrieved, created, updated for the following resources:\r\n - Rentals - [properties](#operation/RentalsExternalApi_GetRentalNotes), [units](#operation/RentalsExternalApi_GetRentalUnitNotes), [owners](#operation/RentalsExternalApi_GetRentalOwnerNotes), [leases](#operation/LeasesExternalApi_GetLeaseNotes) and [tenants](#operation/TenantsExternalApi_GetAllTenantNotes)\r\n - Associations - [properties](#operation/AssociationsExternalApi_GetAssociationNotes), [units](#operation/AssociationsExternalApi_GetAssociationUnitNotes), [owners](#operation/AssociationOwnersExternalApi_GetAssociationOwnerNotes), [ownership accounts](#operation/OwnershipAccountsExternalApi_GetAssociationOwnershipAccountNotes) and [tenants](#operation/AssociationTenantsExternalApi_GetAssociationTenantNotes)\r\n - [Vendors](#operation/VendorExternalApi_GetVendorNotes)\r\n - [Applicant Groups](#operation/ApplicantGroupsExternalApi_GetApplicantGroupNotes)\r\n\r\n\r\n\r\n### 2021-07-20\r\n#### API Updates\r\n* Rental applicant, applicant groups and application write capabilities have been released. These new endpoints will support creating and updating rental applicants and applicant groups as well as enabling the updating of rental application statuses.\r\n - [Create an Applicant Group](#operation/ApplicantGroupsExternalApi_CreateApplicantGroup)\r\n - [Update an Applicant Group](#operation/ApplicantGroupsExternalApi_UpdateApplicantGroup)\r\n - [Create an Applicant](#operation/ApplicantsExternalApi_CreateApplicant)\r\n - [Update an Applicant](#operation/ApplicantsExternalApi_UpdateApplicant)\r\n - [Update an Application](#operation/ApplicantsExternalApi_UpdateApplication)\r\n\r\n\r\n### 2021-06-22\r\n#### API Updates\r\n* Bill and bill payment resources have been released. These new endpoints will support retrieve, create and update functionality for bills and retrieve functionality for bill payments. Creating and updating bill payments will be available in a future release.\r\n - [Retrieve bills](#operation/BillsExternalApi_GetBillsAsync)\r\n - [Create a bill](#operation/BillsExternalApi_CreateBill)\r\n - [Update a bill](#operation/BillsExternalApi_UpdateBill)\r\n - [Retrieve bill payments](#operation/BillsExternalApi_GetBillPayments)\r\n* Rental applicant, applicant groups and application read capabilities have been released. These new endpoints will support retrieving rental applicants, applicant groups and their rental applications. Creating and updating applicants and applicant groups will be available in a future release.\r\n - [Retrieve Applicant Groups](#operation/ApplicantGroupsExternalApi_GetApplicantGroups)\r\n - [Retrieve Applicants](#operation/ApplicantsExternalApi_GetApplicants)\r\n - [Retrieve Applications](#operation/ApplicantsExternalApi_GetApplicationsForApplicant)\r\n* Rental leases can now be filtered by the date and time they were created. The lease created date and time are also being returned as part of the lease response message.\r\n - [Retrieve all leases](#operation/LeasesExternalApi_GetLeases)\r\n\r\n\r\n\r\n### 2021-05-18\r\n#### API Updates\r\n* Work order resources have been released. These new endpoints will support retrieve, create and update functionality for work orders. Review the [Work Order](#tag/Work-Orders) documentation for more information.\r\n* Create capabilities have been released for association ownership account and rental lease ledger transactions. These new endpoints will allow for the creation of ledger charges, payments and credits.\r\n - [Create Rental Lease Ledger Payments](#operation/LeaseLedgerTransactionsExternalApi_CreatePayment)\r\n - [Create Rental Lease Ledger Credits](#operation/LeaseLedgerTransactionsExternalApi_CreateLeaseCredit)\r\n - [Create Association Ownership Account Ledger Charges](#operation/OwnershipAccountsLedgerExternalApi_CreateCharge)\r\n - [Create Association Ownership Account Ledger Payments](#operation/OwnershipAccountsLedgerExternalApi_CreateOwnershipAccountLedgerPayment)\r\n - [Create Association Ownership Account Ledger Credits](#operation/OwnershipAccountsLedgerExternalApi_CreateOwnershipAccountCredit)\r\n\r\n\r\n### 2021-04-20\r\n#### API Updates\r\n* Task resources have been released. These new endpoints will support retrieve, create and update functionality for all task request types. Review the [Tasks](#tag/Tasks) documentation for more information.\r\n* Vendor create and update capabilities have been released. These new endpoints will support creating and updating vendors.\r\n - [Create Vendors](#operation/VendorExternalApi_CreateVendor)\r\n - [Update Vendors](#operation/VendorExternalApi_UpdateVendor)\r\n\r\n### 2021-02-16\r\n#### API Updates\r\n* Phone log resources have been released. These new endpoints will support create, update and retrieve functionality for [phone logs](#operation/PhoneLogsExternalApi_GetPhoneLogs).\r\n* Enhancements to the leases resource have been released. These new endpoints will support create and update functionality for [leases](#operation/LeasesExternalApi_CreateLease).\r\n* Ability to filter by phone has been released for the following:\r\n - [Rental Owners](#operation/RentalsExternalApi_GetRentalOwners)\r\n - [Vendors](#operation/VendorExternalApi_GetAllVendors)\r\n\r\n### 2020-12-15\r\n#### API Updates\r\n* Rental listing resources have been released. These new endpoints will support create and retrieve functionality for:\r\n - [Listing Contacts](#operation/ListingContactsExternalApi_GetAllListingContacts)\r\n - [Listings](#operation/ListingsExternalApi_GetListingsAsync)\r\n\r\n### 2020-11-17\r\n#### API Updates\r\n* Create capabilities have been released for the following resources:\r\n - [Rental Tenants](#operation/TenantsExternalApi_CreateRentalTenant)\r\n - [Association Ownership Accounts](#operation/OwnershipAccountsExternalApi_CreateAssociationOwnershipAccount)\r\n - [Association Owners](#operation/AssociationOwnersExternalApi_CreateAssociationOwner)\r\n* Update capabilities have been released for the following resources:\r\n - [Rental Tenants](#operation/TenantsExternalApi_UpdateRentalTenant)\r\n - [Association Owners](#operation/AssociationOwnersExternalApi_UpdateAssociationOwner)\r\n* Retrieve all [Association Owners](#operation/AssociationOwnersExternalApi_GetAllAssociationOwners) and [Association Tenants](#operation/AssociationTenantsExternalApi_GetAssociationTenants) can now be filtered by statuses: `Active`, `Past` and `Future`.\r\n* The [rental tenant](#operation/TenantsExternalApi_CreateRentalTenant) message now returns the following properties:\r\n - `AlternateEmail`\r\n - `Comment`\r\n - `MailingPreference`\r\n* The [rental property](#operation/RentalsExternalApi_GetRentalById) message now includes the following properties:\r\n - `OperatingBankAccountId`\r\n - `Reserve`\r\n* The [Association Ownership Account](#operation/OwnershipAccountsExternalApi_GetOwnershipAccountById) message now includes `AssociationOwnerIds` which is a list of all of the association owner identifiers that belong to the ownership account.\r\n\r\n### 2020-10-20\r\n#### API Updates\r\n* Create capabilities have been released for the following resources:\r\n - [Rental Properties](#operation/RentalsExternalApi_CreateRentalProperty)\r\n - [Rental Owners](#operation/RentalsExternalApi_CreateRentalOwner)\r\n - [Rental Units](#operation/RentalsExternalApi_CreateRentalUnit)\r\n - [Asssociation Properties](#operation/AssociationsExternalApi_CreateAssociation)\r\n - [Asssociation Units](#operation/AssociationsExternalApi_CreateAssociationUnit)\r\n - [Asssociation Tenants](#operation/AssociationTenantsExternalApi_CreateAssociationTenant)\r\n* Update capabilities have been released for the following resources:\r\n - [Rental Properties](#operation/RentalsExternalApi_UpdateRentalProperty)\r\n - [Rental Owners](#operation/RentalsExternalApi_UpdateRentalOwner)\r\n - [Rental Units](#operation/RentalsExternalApi_UpdateRentalUnit)\r\n - [Asssociation Properties](#operation/AssociationsExternalApi_UpdateAssociation)\r\n - [Asssociation Units](#operation/AssociationsExternalApi_UpdateAssociationUnit)\r\n - [Asssociation Tenants](#operation/AssociationTenantsExternalApi_UpdateAssociation)\r\n\r\n#### Feature Enhancements\r\n* Sandbox environments can now be created for developing and testing your integrations. Learn more about how to take advantage of this new capability in the [API Sandbox](#section/API-Sandbox) section of the documentation.\r\n\r\n### 2020-09-15\r\n#### API Updates\r\n* General ledger account balances are now available through the [Retrieve all general ledger account balances](#operation/GLAccountBalancesExternalApi_GetGlAccountBalances) endpoint. This new endpoint provides the ability to retrieve the general ledger account balances as of a given date.\r\n\r\n### 2020-08-18\r\n#### API Updates\r\n* General ledger transactions are now available through the [Retrieve all general ledger transactions](#operation/GeneralLedgerExternalApi_GetAllTransactions) endpoint. These new endpoints provide the ability to retrieve all transactions or use a set of filters including specific rental/association properties, rental owners, date ranges, and others to find specific transactions.\r\n\r\n### 2020-07-21\r\n#### API Updates\r\n* [Association Owners](#operation/AssociationOwnersExternalApi_GetAllAssociationOwners) response message now returns board member terms including the start date, end date and position.\r\n* Two new resources were added to retrieve [Users](#operation/UsersExternalApi_GetAllUsers) and [User Roles](#operation/UserRolesExternalApi_GetAllUserRoles).\r\n* The [general ledger](#operation/AccountingExternalApi_GetAllGLAccounts) response message now includes the property `IsBankAccount`. This is a boolean property that indicates whether the general ledger account is also a bank account.\r\n* A `Country` property has been added to all Address messages. This property contains an enumeration indicating the country of the address. \r\n", "x-logo": { "url": "Buildium-RP-Color-Logo.png", "backgroundColor": "#FFFFFF", "altText": "Buildium Logo", "href": "https://www.buildium.com" } }, "paths": { "/v1/associations": { "get": { "tags": [ "Associations" ], "summary": "Retrieve all associations", "description": "Retrieves a list of associations.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociations_GetAssociations", "parameters": [ { "name": "ids", "in": "query", "description": "Filters results to the specified set of ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "location", "in": "query", "description": "Filters results to any association whose city or state *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "Filters results by the status of the association. If no status is specified both `active` and `inactive` associations will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Active", "InActive" ] } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any associations that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any associations that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "operatingbankaccountids", "in": "query", "description": "Filters results to any associations associated to any of the specified set of operating bank account ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "post": { "tags": [ "Associations" ], "summary": "Create an association", "description": "Creates an association.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociations_CreateAssociation", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 1 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/transactions": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve all transactions", "description": "Retrieves all ledger transactions for a specific ownership account.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountsLedger_GetOwnershipAccountLedger", "parameters": [ { "name": "ownershipAccountId", "in": "path", "description": "The ownership account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactiondatefrom", "in": "query", "description": "Filters results to any lease transaction whose start date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "transactiondateto", "in": "query", "description": "Filters results to any lease transaction whose end date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "transactiontypes", "in": "query", "description": "Filters results to any lease transaction whose lease transaction type matches the specified status. If no type is specified, lease transactions with any type will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "x-path-sort-index": 1 }, "/v1/files": { "get": { "tags": [ "Files" ], "summary": "Retrieve all files", "description": "Retrieves a list of files that exist within the customer account. Note this endpoint will only return file metadata. To download files make requests to the Download File endpoint. \r\n

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFiles_GetFiles", "parameters": [ { "name": "entityid", "in": "query", "description": "Filters results to any file associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "required": false, "schema": { "type": "string", "enum": [ "Account", "Association", "AssociationOwner", "AssociationUnit", "Lease", "OwnershipAccount", "PublicAsset", "Rental", "RentalOwner", "RentalUnit", "Tenant", "Vendor" ] } }, { "name": "categoryid", "in": "query", "description": "Filters results to any file associated with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "titleordescription", "in": "query", "description": "Filters results to files whose title or description *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "uploadedfrom", "in": "query", "description": "Filters results to any files that were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "uploadedto", "in": "query", "description": "Filters results to any files that were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "physicalfilenames", "in": "query", "description": "Filters results to any files with a `PhysicalFileName`exactly matching one of the provided values.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "x-path-sort-index": 1 }, "/v1/leases": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all leases", "description": "Retrieves a list of leases.\r\n

Rentals > Leases - `View`", "operationId": "ExternalApiLeases_GetLeases", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to any lease whose unit belongs to the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "rentalownerids", "in": "query", "description": "Filters results to any lease whose unit belongs to a property with a rental owner in the specified set of rental owner ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "unitnumber", "in": "query", "description": "Filters results to any lease whose unit number *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "tenantname", "in": "query", "description": "Filters results to any lease whose current tenants' names *contain* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "leasedatefrom", "in": "query", "description": "Filters results to any lease whose start date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "leasedateto", "in": "query", "description": "Filters results to any lease whose end date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "leasetypes", "in": "query", "description": "Filters results to any lease whose lease type matches the specified status. If no type is specified, leases with any type will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "None", "Fixed", "FixedWithRollover", "AtWill" ] } } }, { "name": "leasestatuses", "in": "query", "description": "Filters results to any lease whose lease term matches the specified status. If no status is specified, leases with any lease term status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "createddatetimefrom", "in": "query", "description": "Filters results to any lease whose created date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "createddatetimeto", "in": "query", "description": "Filters results to any lease whose created date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any leases that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any leases that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "post": { "tags": [ "Leases" ], "summary": "Create a lease", "description": "Creates a signed lease.\r\n

Rentals > Leases - `View` `Edit`\r\n
Rentals > Tenants - `View` `Edit`\r\n
Rentals > Lease transactions - `View` `Edit`\r\n

Optional Permissions:


Rentals > Applicants - `View` In order to add tenants to the lease using the ApplicantIds property, you must have this permission.", "operationId": "ExternalApiLeases_CreateLease", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeasePostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 1 }, "/v1/leases/{leaseId}/transactions": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve all lease transactions", "description": "Retrieves all the transactions for a specific lease.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseLedgerTransactions_GetLeaseLedgers", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactiondatefrom", "in": "query", "description": "Filters results to any lease transaction whose start date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "transactiondateto", "in": "query", "description": "Filters results to any lease transaction whose end date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "transactiontypes", "in": "query", "description": "Filters results to any lease transaction whose lease transaction type matches the specified status. If no type is specified, lease transactions with any type will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "x-path-sort-index": 1 }, "/v1/rentals": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve all properties", "description": "Retrieves a list of rental properties.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentals_GetAllRentals", "parameters": [ { "name": "location", "in": "query", "description": "Filters results to only rental properties whose city or state *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Filters results by the rental type. If no type is provided all types will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Residential", "Commercial" ] } } }, { "name": "subtypes", "in": "query", "description": "Filters results by the sub type of the rental property. If no sub type is specified all sub types will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "CondoTownhome", "MultiFamily", "SingleFamily", "Industrial", "Office", "Retail", "ShoppingCenter", "Storage", "ParkingSpace" ] } } }, { "name": "status", "in": "query", "description": "Filters results by the status of the rental property. If no status is specified both `active` and `inactive` rental properties will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Active", "InActive" ] } }, { "name": "rentalownerids", "in": "query", "description": "Filters results to only rental properties whose RentalOwnerId matches the specified Id.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "propertyids", "in": "query", "description": "Filters results to only rental properties units whose Rental matches the specified Id.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any rental properties that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any rental properties that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "post": { "tags": [ "Rental Properties" ], "summary": "Create a property", "description": "Creates a new rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentals_CreateRentalProperty", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalPropertyPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } }, "Link": { "description": "Contains the location of the unit created for the rental property.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 1 }, "/v1/rentals/units/listings": { "get": { "tags": [ "Listings" ], "summary": "Retrieve all listings", "description": "Retrieves all listings.\r\n

Rentals > Listings - `View`\r\n
Rentals > Rental properties and units - `View`", "operationId": "ExternalApiListings_GetListingsAsync", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` refers to.", "required": false, "schema": { "type": "string", "enum": [ "Property", "RentalOwner" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to only listings that are associated with the specified entity id value. The id must be of the type specified in `EntityType` property.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListingMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "x-path-sort-index": 1 }, "/v1/users": { "get": { "tags": [ "Administration" ], "summary": "Retrieve all users", "description": "Retrieves a list of users.\r\n

Required permission(s):

Administration > Users - `View`", "operationId": "ExternalApiUsers_GetAllUsers", "parameters": [ { "name": "roleids", "in": "query", "description": "Describes the role of the user.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "usertypes", "in": "query", "description": "Describes the user type of the user.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Staff", "RentalOwner", "Vendor" ] } } }, { "name": "status", "in": "query", "description": "Filters results by the status of the user. If no status is specified both `active` and `inactive` staff members will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Inactive", "Active" ] } }, { "name": "name", "in": "query", "description": "Filters results to only records whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "email", "in": "query", "description": "Filters results to only records whose email *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserMessage" } } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials do not have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 1 }, "x-path-sort-index": 1 }, "/v1/associations/{associationId}": { "get": { "tags": [ "Associations" ], "summary": "Retrieve an association", "description": "Retrieve a specific association.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociations_GetAssociationById", "parameters": [ { "name": "associationId", "in": "path", "description": "The association identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "put": { "tags": [ "Associations" ], "summary": "Update an association", "description": "Updates an association.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.

The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociations_UpdateAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 2 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/transactions/{transactionId}": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve a transaction", "description": "Retrieves a specific ownership account ledger transaction.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountsLedger_GetOwnershipAccountTransactionById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "description": "The ownership account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "description": "The transaction identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "x-path-sort-index": 2 }, "/v1/files/{fileId}": { "get": { "tags": [ "Files" ], "summary": "Retrieve a file", "description": "Retrieves the file metadata for a specific file. Note this endpoint will only return file metadata. To download files make requests to the Download File endpoint.

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFiles_GetFileById", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "put": { "tags": [ "Files" ], "summary": "Update a file", "description": "Updates a metadata of the file. \r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Documents > Files - `View` `Edit`", "operationId": "ExternalApiFiles_UpdateFile", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 2 }, "/v1/leases/{leaseId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve a lease", "description": "Retrieves a specific lease.\r\n

Rentals > Leases - `View`", "operationId": "ExternalApiLeases_GetLeaseById", "parameters": [ { "name": "leaseId", "in": "path", "description": "The lease identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "put": { "tags": [ "Leases" ], "summary": "Update a lease", "description": "Update a signed lease.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiLeases_UpdateLease", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeasePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 2 }, "/v1/leases/{leaseId}/transactions/{transactionId}": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve a lease transaction", "description": "Retrieves a specific lease transaction.\r\n

Required permission(s):

Rentals > Lease Transactions - `View`", "operationId": "ExternalApiLeaseLedgerTransactions_GetLeaseLedgerTransactionById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "x-path-sort-index": 2 }, "/v1/rentals/{propertyId}": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve a property", "description": "Retrieve a specific rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentals_GetRentalById", "parameters": [ { "name": "propertyId", "in": "path", "description": "The rental property identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "put": { "tags": [ "Rental Properties" ], "summary": "Update a property", "description": "Updates a rental property.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentals_UpdateRentalProperty", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalPropertyPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 2 }, "/v1/rentals/units/{unitId}/listing": { "get": { "tags": [ "Listings" ], "summary": "Retrieve a listing", "description": "Retrieves a specific listing.\r\n

Required permission(s):

Rentals > Listings - `View`\r\n
Rentals > Rental properties and units - `View`", "operationId": "ExternalApiListings_GetListingForUnitAsync", "parameters": [ { "name": "unitId", "in": "path", "description": "The rental unit identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "put": { "tags": [ "Listings" ], "summary": "Create/Update a listing", "description": "This endpoint can be used to both *create* and *update* a listing. If no listing exists for the unit one will be created, otherwise the existing listing will be updated. A unit can only ever have one active listing. \r\n

\r\nUpon creation the listing will post immediately to your Buildium public website, and will post to the selected syndicated sites within 24-48 hours. Updates to the listing will appear immediately in your Buildium public website and propagated to syndicated sites within 24-48 hours. \r\n

\r\nNote, the listing will automatically pull in the information, features, and media that exists for the property and unit details. \r\n

Rentals > Listings - `View` `Edit`\r\n
Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiListings_UpsertListingsAsync", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingMessage" } } } }, "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Listings" ], "summary": "Delete a listing", "description": "Deleting a listing will immediately remove it from your Buildium public website. The listing will also be removed\r\nfrom any syndicated sites within 24-48 hours.

Listings manually created on craigslist using the Buildium\r\nguided tool will not be removed. The listing must be removed using craigslist's tools provided in your craigslist account.\r\n

Required permission(s):

Rentals > Listings - `View` `Edit` `Delete`", "operationId": "ExternalApiListings_DelistUnit", "parameters": [ { "name": "unitId", "in": "path", "description": "The rental property unit identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 2 }, "/v1/users/{userId}": { "get": { "tags": [ "Administration" ], "summary": "Retrieve a user", "description": "Retrieve a specific user.\r\n

Required permission(s):

Administration > Users - `View`", "operationId": "ExternalApiUsers_GetUserById", "parameters": [ { "name": "userId", "in": "path", "description": "The user identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials do not have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 2 }, "x-path-sort-index": 2 }, "/v1/associations/ownershipaccounts/outstandingbalances": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve all outstanding balances", "description": "Retrieves a list of ownership account outstanding balances.\r\n

Required permission(s):

Associations > Outstanding Balances - `View`", "operationId": "ExternalApiOwnershipAccountOutstandingBalances_GetOwnershipAccountOutstandingBalances", "parameters": [ { "name": "associationid", "in": "query", "description": "Association unique identifier", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "ownershipaccountstatuses", "in": "query", "description": "List of ownership account statuses", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "ownershipaccountids", "in": "query", "description": "List of ownership account ids", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "pastdueemail", "in": "query", "description": "Status of notification of outstanding balances", "required": false, "schema": { "type": "string", "enum": [ "NoEmailAddress", "Sent" ] } }, { "name": "balanceduration", "in": "query", "description": "Duration of outstanding balances", "required": false, "schema": { "type": "string", "enum": [ "TotalBalance", "Balance0to30Days", "Balance31to60Days", "Balance61to90Days", "BalanceOver90Days" ] } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountOutstandingBalanceMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 3 }, "/v1/associations/units": { "get": { "tags": [ "Association Units" ], "summary": "Retrieve all units", "description": "Retrieves a list of association units.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationUnits_GetAllAssociationUnits", "parameters": [ { "name": "associationids", "in": "query", "description": "Filters results to only include Associations with matching IDs", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any association units that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any association units that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationUnitMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "post": { "tags": [ "Association Units" ], "summary": "Create a unit", "description": "Creates an association unit.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationUnits_CreateAssociationUnit", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationUnitsPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 3 }, "/v1/leases/outstandingbalances": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve all outstanding balances", "description": "Retrieves a list of leases that have outstanding balances. Leases with a zero or credit balance will not be returned in the results. \r\n

Required permission(s):

Rentals > Outstanding Balances - `View`", "operationId": "ExternalApiLeaseOutstandingBalances_GetLeaseOutstandingBalances", "parameters": [ { "name": "entitytype", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner" ] } }, { "name": "entityid", "in": "query", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "leasestatuses", "in": "query", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "leaseids", "in": "query", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "pastdueemail", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "NoEmailAddress", "Sent" ] } }, { "name": "balanceduration", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "TotalBalance", "Balance0to30Days", "Balance31to60Days", "Balance61to90Days", "BalanceOver90Days" ] } }, { "name": "evictionstatus", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "NotEvictionPending", "EvictionPending" ] } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseOutstandingBalanceMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 3 }, "/v1/rentals/units/listingcontacts": { "get": { "tags": [ "Listings" ], "summary": "Retrieve all listing contacts", "description": "Retrieves all listing contacts.\r\n

Required permission(s):

Rentals > Listings - `View`", "operationId": "ExternalApiListingContacts_GetAllListingContacts", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListingContactMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "post": { "tags": [ "Listings" ], "summary": "Create a listing contact", "description": "Create a listing contact. Note, at least one contact field (phone number, email or website) is required for the listing contact.\r\n

Required permission(s):

Rentals > Listings - `View` `Edit`", "operationId": "ExternalApiListingContacts_CreateListingContact", "requestBody": { "$ref": "#/components/requestBodies/ListingContactSaveMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingContactMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 3 }, "/v1/userroles": { "get": { "tags": [ "Administration" ], "summary": "Retrieve all user roles", "description": "Retrieves a list of user roles.\r\n

Required permission(s):

Administration > User Roles - `View`", "operationId": "ExternalApiUserRoles_GetAllUserRoles", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserRoleMessage" } } } } }, "400": { "description": "BadRequest", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials do not have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 3 }, "x-path-sort-index": 3 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/charges": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a charge", "description": "Creates a ledger charge.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`\r\n
", "operationId": "CreateOwnershipAccountLedgerCharge", "parameters": [ { "name": "ownershipAccountId", "in": "path", "description": "The ownership account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountLedgerChargePostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 4 }, "/v1/associations/units/{unitId}": { "get": { "tags": [ "Association Units" ], "summary": "Retrieve a unit", "description": "Retrieve a specific association unit.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationUnits_GetAssociationUnitById", "parameters": [ { "name": "unitId", "in": "path", "description": "The association unit identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "put": { "tags": [ "Association Units" ], "summary": "Update a unit", "description": "Updates an association unit.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationUnits_UpdateAssociationUnit", "parameters": [ { "name": "unitId", "in": "path", "description": "The identifier of the unit to update.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationUnitPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 4 }, "/v1/files/{fileId}/downloadrequest": { "post": { "tags": [ "Files" ], "summary": "Download a file", "description": "Downloading a file requires making two API requests. The first request to `/v1/files/{fileId}/downloadrequest` will return a secure URL that can be used to download the file contents. Note the download URL is transient and will expire after 5 minutes. \r\n

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFileDownload_GetFileDownloadUrlAsync", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "503": { "description": "The file download service is currently unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 4 }, "/v1/leases/{leaseId}/charges": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a charge", "description": "Creates a charge transaction on a specific lease ledger.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "CreateLeaseLedgerCharge", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseChargePostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Lease not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 4 }, "/v1/rentals/units/listingcontacts/{listingContactId}": { "get": { "tags": [ "Listings" ], "summary": "Retrieve a listing contact", "description": "Retrieves a specific listing contact.\r\n

Required permission(s):

Rentals > Listings - `View`", "operationId": "ExternalApiListingContacts_GetListingContactById", "parameters": [ { "name": "listingContactId", "in": "path", "description": "The listing contact identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingContactMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "put": { "tags": [ "Listings" ], "summary": "Update a listing contact", "description": "Update a listing contact. Note, at least one contact field (phone number, email or website) is required for the listing contact.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Listings - `View` `Edit`", "operationId": "ExternalApiListingContacts_UpdateListingContact", "parameters": [ { "name": "listingContactId", "in": "path", "description": "The listing contact identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ListingContactSaveMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingContactMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 4 }, "/v1/userroles/{userRoleId}": { "get": { "tags": [ "Administration" ], "summary": "Retrieve a user role", "description": "Retrieve a specific user role.\r\n

Required permission(s):

Administration > User Roles - `View`", "operationId": "ExternalApiUserRoles_GetUserRoleById", "parameters": [ { "name": "userRoleId", "in": "path", "description": "The user role identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRoleMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials do not have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 4 }, "x-path-sort-index": 4 }, "/v1/associations/ownershipaccounts": { "get": { "tags": [ "Ownership Accounts" ], "summary": "Retrieve all ownership accounts", "description": "Retrieves a list of ownership accounts.\r\n

Required permission(s):

Associations > Ownership accounts - `View`", "operationId": "ExternalApiOwnershipAccounts_GetAllOwnershipAccounts", "parameters": [ { "name": "ids", "in": "query", "description": "Filters results to the specified set of ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "associationids", "in": "query", "description": "Filters results to any ownership accounts who belong to the specified set of association ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "unitorowner", "in": "query", "description": "Filters results to any association whose unit or owner *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "datefrom", "in": "query", "description": "Filters results to any ownership account whose start date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "dateto", "in": "query", "description": "Filters results to any ownership account whose start date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "status", "in": "query", "description": "Filters results by the status of the association. If no status is specified, `active`, `past` and `future` associations will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "delinquencystatuses", "in": "query", "description": "Filters results by the delinquency status of the ownership account. If no status is specified, ownership accounts of any delinquency status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "post": { "tags": [ "Ownership Accounts" ], "summary": "Create an ownership account", "description": "Creates an ownership account.\r\n

Required permission(s):

Associations > Ownership accounts - `View` `Edit`\r\n
Associations > Owners - `View` `Edit`", "operationId": "ExternalApiOwnershipAccounts_CreateAssociationOwnershipAccount", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnershipAccountPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "An association ownership account already exists for this unit.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 5 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/charges/{chargeId}": { "put": { "tags": [ "Ownership Account Transactions" ], "summary": "Update a charge", "description": "Updates a charge.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`\r\n
", "operationId": "ExternalApiOwnershipAccountLedgerCharges_UpdateOwnershipAccountCharge", "parameters": [ { "name": "ownershipAccountId", "in": "path", "description": "The ownership account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "chargeId", "in": "path", "description": "The charge identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountLedgerChargePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "x-path-sort-index": 5 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/payments": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a payment", "description": "Creates a ledger payment.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountLedgerPayments_CreateOwnershipAccountLedgerPayment", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountLedgerPaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "x-path-sort-index": 5 }, "/v1/files/uploadrequests": { "post": { "tags": [ "Files" ], "summary": "Upload a file", "description": "Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\nThe first step in the file upload process is to submit the file metadata to `/v1/files/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\nUploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Documents > Files - `View` `Edit`", "operationId": "CreateUploadFileRequestAsync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "x-path-sort-index": 5 }, "/v1/leases/{leaseId}/charges/{chargeId}": { "put": { "tags": [ "Lease Transactions" ], "summary": "Update a charge", "description": "Updates a charge.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerChargesWrite_UpdateLeaseCharge", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "chargeId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseChargePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "x-path-sort-index": 5 }, "/v1/leases/{leaseId}/moveouts": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all move outs", "description": "Retrieves a list of move out dates for a given lease.\r\n

Required permission(s):

Rentals > Leases - `View`\r\n
Rentals > Tenants - `View`", "operationId": "ExternalApiLeaseMoveOuts_GetLeaseMoveOutInformationById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseMoveOutDataMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "post": { "tags": [ "Leases" ], "summary": "Create a move out", "description": "Creates move out data for a single tenant on a given lease.\r\n

Required permission(s):

Rentals > Leases - `View` `Edit`\r\n
Rentals > Tenants - `View` `Edit`", "operationId": "ExternalApiLeaseMoveOuts_CreateMoveOutData", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMoveOutDataPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMoveOutDataMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 7 }, "x-path-sort-index": 5 }, "/v1/rentals/{propertyId}/inactivationrequest": { "post": { "tags": [ "Rental Properties" ], "summary": "Inactivate a property", "description": "Inactivates a rental property and all associated units. Any associated property's owners that have no remaining active properties will be inactivated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalsActiveStatus_InactivateRentalProperty", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 5 }, "x-path-sort-index": 5 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}": { "get": { "tags": [ "Ownership Accounts" ], "summary": "Retrieve an ownership account", "description": "Retrieves a specific ownership account.\r\n

Required permission(s):

Associations > Ownership accounts - `View`", "operationId": "ExternalApiOwnershipAccounts_GetOwnershipAccountById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "description": "The ownership account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 6 }, "put": { "tags": [ "Ownership Accounts" ], "summary": "Update an ownership account", "description": "Updates an ownership account.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Ownership accounts - `View` `Edit`", "operationId": "ExternalApiOwnershipAccounts_UpdateAssociationOwnershipAccount", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnershipAccountPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 6 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/autoallocatedpayments": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a payment (auto allocated)", "description": "Creates a payment on the ownership account ledger. Note that the recorded payment will be automatically allocated to the general ledger accounts based on the payment allocation settings. These settings can be found under the Settings > Application Settings > Residents page in your account. If you'd like to specify the general ledger accounts the payment should apply to, please use the Create a payment endpoint. \r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountAutoAllocatedPayment_CreateOwnershipAccountAutoAllocatedPayment", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountAutoAllocatedPaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 6 }, "x-path-sort-index": 6 }, "/v1/leases/{leaseId}/moveouts/{tenantId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve a move out", "description": "Retrieves move out data for a single tenant on a given lease.\r\n

Required permission(s):

Rentals > Leases - `View`\r\n
Rentals > Tenants - `View`", "operationId": "ExternalApiLeaseMoveOuts_GetLeaseMoveOutDataByTenantId", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseMoveOutDataMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 6 }, "delete": { "tags": [ "Leases" ], "summary": "Delete a move out", "description": "Deletes move out data for a tenant on a given lease.\r\n

Required Permission(s):

Rentals > Leases - `View` `Edit`\r\n
Rentals > Tenants - `View`", "operationId": "ExternalApiLeaseMoveOuts_UndoTenantMoveout", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 8 }, "x-path-sort-index": 6 }, "/v1/leases/{leaseId}/payments": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a payment", "description": "Creates a lease ledger payment.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerPaymentsWrite_CreatePayment", "parameters": [ { "name": "leaseId", "in": "path", "description": "The lease unique identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerPaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 6 }, "x-path-sort-index": 6 }, "/v1/rentals/{propertyId}/reactivationrequest": { "post": { "tags": [ "Rental Properties" ], "summary": "Reactivate a property", "description": "Reactivates a rental property and all associated units. Any inactive rental owners assigned to this property will also be reactivated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalsActiveStatus_ReactivateRentalProperty", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 6 }, "x-path-sort-index": 6 }, "/v1/associations/owners": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve all owners", "description": "Retrieves a list of association owners.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationOwners_GetAllAssociationOwners", "parameters": [ { "name": "name", "in": "query", "description": "Filters results to only records whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "phone", "in": "query", "description": "Filters results to only records whose phone number *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "email", "in": "query", "description": "Filters results to only records whose email *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "associationids", "in": "query", "description": "Filters results to only records that belong to the specified set of association identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "statuses", "in": "query", "description": "Filters results to only records whose status is equal to the specified value.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "createddatetimeto", "in": "query", "description": "Filters results to only records that were created before this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "createddatetimefrom", "in": "query", "description": "Filters results to only records that were created after this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any association owners that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any association owners that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnerMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 7 }, "post": { "tags": [ "Association Owners" ], "summary": "Create an owner", "description": "Creates an association owner.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`\r\n
Associations > Ownership accounts - `View` `Edit`", "operationId": "ExternalApiAssociationOwners_CreateAssociationOwner", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerToExistingOwnershipAccountPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 7 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/credits": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a credit", "description": "Creates a ledger credit.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountLedgerCredits_CreateOwnershipAccountCredit", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountCreditPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 7 }, "x-path-sort-index": 7 }, "/v1/leases/{leaseId}/autoallocatedpayments": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a payment (auto allocated)", "description": "Creates a payment on the lease ledger. Note that the recorded payment will be automatically allocated to the general ledger accounts based on the payment allocation settings. These settings can be found under the Settings > Application Settings > Residents page in your account. If you'd like to specify the GL accounts the payment should apply to, please use the Create a payment endpoint.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseAutoAllocatedPayment_CreateLeaseAutoAllocatedPayment", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseAutoAllocatedPaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 7 }, "x-path-sort-index": 7 }, "/v1/rentals/{propertyId}/vendors": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve all preferred vendors", "description": "Retrieves all preferred vendors.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`\r\n
Maintenance > Vendors - `View`", "operationId": "ExternalApiRentalPreferredVendors_GetRentalPreferredVendors", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalPreferredVendorMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 7 }, "put": { "tags": [ "Rental Properties" ], "summary": "Update preferred vendors", "description": "Updates preferred vendors.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`\r\n
Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiRentalPreferredVendors_UpdateRentalPreferredVendors", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalPreferredVendorPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalPreferredVendorMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 8 }, "x-path-sort-index": 7 }, "/v1/associations/owners/{ownerId}": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve an owner", "description": "Retrieve a specific association owner.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationOwners_GetAssociationOwnerById", "parameters": [ { "name": "ownerId", "in": "path", "description": "The association owner identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 8 }, "put": { "tags": [ "Association Owners" ], "summary": "Update an owner", "description": "Updates an existing association owner.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationOwners_UpdateAssociationOwner", "parameters": [ { "name": "ownerId", "in": "path", "description": "The identifier of the association owner to update.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 8 }, "/v1/leases/{leaseId}/reversepayments": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a payment reversal", "description": "Reverses a lease ledger payment. Note, this action can only be taken on a payment that has been deposited. \r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`\r\n
Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerPaymentReversalsWrite_CreateLeaseReversePayment", "parameters": [ { "name": "leaseId", "in": "path", "description": "The lease unique identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerReversePaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 8 }, "x-path-sort-index": 8 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/refunds/{refundId}": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve a refund", "description": "Retrieves a refund.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiOwnershipAccountRefund_GetOwnershipAccountRefundById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "refundId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRefundMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 9 }, "x-path-sort-index": 9 }, "/v1/associations/tenants": { "get": { "tags": [ "Association Tenants" ], "summary": "Retrieve all tenants", "description": "Retrieves a list of association tenants.\r\n\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationTenants_GetAssociationTenants", "parameters": [ { "name": "name", "in": "query", "description": "Filters results to only records whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "phone", "in": "query", "description": "Filters results to only records whose phone number *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "email", "in": "query", "description": "Filters results to only records whose email *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "associationids", "in": "query", "description": "Filters results to only records that belong to the specified set of association identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "statuses", "in": "query", "description": "Filters results to only records whose status is equal to the specified value.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "createddatetimeto", "in": "query", "description": "Filters results to only records that were created before this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "createddatetimefrom", "in": "query", "description": "Filters results to only records that were created after this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any association owners that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any association owners that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationTenantMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 9 }, "post": { "tags": [ "Association Tenants" ], "summary": "Create a tenant", "description": "Creates an association tenant.\r\n\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationTenants_CreateAssociationTenant", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationTenantPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationTenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 9 }, "/v1/leases/{leaseId}/notes": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all notes", "description": "Retrieves all lease notes.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseNotes_GetLeaseNotes", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 9 }, "post": { "tags": [ "Leases" ], "summary": "Create a note", "description": "Creates a lease note.\r\n

Required permission(s):

Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiLeaseNotes_CreateLeaseNote", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 11 }, "x-path-sort-index": 9 }, "/v1/leases/{leaseId}/refunds/{refundId}": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve a refund", "description": "Retrieves a refund.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiLeaseLedgerRefunds_GetLeaseLedgerRefundById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "refundId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerRefundMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 9 }, "x-path-sort-index": 9 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/refunds": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a refund", "description": "Creates a refund.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountRefund_CreateOwnershipAccountRefund", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRefundPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRefundMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 10 }, "x-path-sort-index": 10 }, "/v1/associations/tenants/{tenantId}": { "get": { "tags": [ "Association Tenants" ], "summary": "Retrieve a tenant", "description": "Retrieves a specific association tenant.\r\n\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationTenants_GetAssociationTenantById", "parameters": [ { "name": "tenantId", "in": "path", "description": "The tenant identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationTenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 10 }, "put": { "tags": [ "Association Tenants" ], "summary": "Update a tenant", "description": "Updates an association tenant.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationTenants_UpdateAssociationTenant", "parameters": [ { "name": "tenantId", "in": "path", "description": "The identifier of the association tenant to update.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationTenantPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationTenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 10 }, "/v1/leases/{leaseId}/notes/{noteId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve a note", "description": "Retrieves a lease note.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseNotes_GetLeaseNoteByNoteId", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 10 }, "put": { "tags": [ "Leases" ], "summary": "Update a note", "description": "Updates a lease note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiLeaseNotes_UpdateLeaseNote", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 12 }, "x-path-sort-index": 10 }, "/v1/leases/{leaseId}/refunds": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a refund", "description": "Creates a refund.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerRefunds_CreateLeaseLedgerRefund", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerRefundPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerRefundMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 10 }, "x-path-sort-index": 10 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/applieddeposits": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a deposit withholding", "description": "Withholds an association owner deposit by reallocating the funds from a liability account to an income account to cover an expense(s).\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`\r\n Accounting > General Ledger Accounts - `View`", "operationId": "ExternalApiOwnershipAccountDepositWithholding_CreateOwnershipAccountDepositWithholding", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountDepositWithholdingPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 11 }, "x-path-sort-index": 11 }, "/v1/leases/{leaseId}/credits": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a credit", "description": "Creates a lease ledger credit.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerCreditsWrite_CreateLeaseCredit", "parameters": [ { "name": "leaseId", "in": "path", "description": "The lease unique identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerCreditPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 11 }, "x-path-sort-index": 11 }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringtransactions": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve all recurring transactions", "description": "Retrieves all recurring transactions for an ownership account.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountRecurringTransactions_GetAssociationRecurringTransaction", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 12 }, "x-path-sort-index": 12 }, "/v1/leases/{leaseId}/applieddeposits": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a deposit withholding", "description": "Withholds a resident deposit by reallocating the funds from a liability account to an income account to cover an expense(s).\r\n

Required permission(s):

Rentals > Lease Ledger - `View` `Edit`\r\n
Accounting > General Ledger Accounts - `View`", "operationId": "ExternalApiLeaseLedgerDepositWithholding_CreateLeaseLedgerDepositWithholding", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerDepositWithholdingPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 12 }, "x-path-sort-index": 12 }, "/v1/leases/{leaseId}/recurringtransactions": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve all recurring transactions", "description": "Retrieves all recurring transactions for a given lease.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseRecurringTransactions_GetLeaseRecurringTransactions", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 13 }, "x-path-sort-index": 13 }, "/v1/leases/renewals": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all upcoming renewals", "description": "Retrieves all upcoming lease renewals across all rental properties. \r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseRenewalsRead_GetAllLeaseRenewalsForAllProperties", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to only include leases whose unit belongs to the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "rentalownerids", "in": "query", "description": "Filters results to any lease whose unit belongs to a property with rental owner in the specified set of rental owner ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "esignaturestatuses", "in": "query", "description": "Filters result to any lease renewal with an esignature status that matches the given statuses.", "required": true, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Unknown", "NotSent", "ProcessingRequest", "AwaitingSignatures", "FullySigned", "PendingCancellation", "Cancelled", "Failed", "SentUsingAdobe" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseRenewalMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 13 }, "x-path-sort-index": 13 }, "/v1/leases/{leaseId}/renewals": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all renewals", "description": "Retrieves all renewals for a specific a lease.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseRenewalsRead_GetAllLeaseRenewals", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseRenewalMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 14 }, "post": { "tags": [ "Leases" ], "summary": "Create a lease renewal", "description": "Creates a lease renewal.\r\n

Required permission(s):

Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiLeaseRenewalsWrite_CreateLeaseRenewal", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRenewalPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRenewalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "x-path-sort-index": 14 }, "/v1/leases/{leaseId}/renewals/{renewalId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve a renewal", "description": "Retrieves a specific renewal for a given lease. \r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseRenewalsRead_GetLeaseRenewalById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "renewalId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRenewalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "x-path-sort-index": 15 }, "x-path-sort-index": 15 }, "/v1/administration/account": { "get": { "tags": [ "Administration" ], "summary": "Retrieve account info", "description": "Retrieves information related to the Buildium account. \r\n

Required permission(s):

Administration > Account Information - `View`", "operationId": "ExternalApiAccountInfo_GetAccountInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountInfoMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/administration/accountinglockperiod": { "get": { "tags": [ "Administration" ], "summary": "Retrieve accounting lock periods", "description": "Retrieves accounting lock periods.\r\n

Required permission(s):

Administration > Application Settings - `View`", "operationId": "ExternalApiAccountingLockPeriod_GetAccountingLockPeriodSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountingLockPeriodMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve all applicants", "description": "Retrieves all applicants.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicants_GetApplicants", "parameters": [ { "name": "entityid", "in": "query", "description": "Filters results to any applicant associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner" ] } }, { "name": "applicationstatuses", "in": "query", "description": "Filters results by the applicant application status. If no status is specified, applicants with an application in any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ] } } }, { "name": "unitids", "in": "query", "description": "Filters results to applicants associated to any of the specified rental property unit identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "name", "in": "query", "description": "Filters results to applicants whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "email", "in": "query", "description": "Filters results to applicants whose email *contains* the specified value", "required": false, "schema": { "type": "string" } }, { "name": "applicationsubmittedstartdate", "in": "query", "description": "Filters results to any applicant who submitted an application on or after the date specified.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "applicationsubmittedenddate", "in": "query", "description": "Filters results to any applicant who submitted an application on or prior to the date specified.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicantMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Applicants" ], "summary": "Create an applicant", "description": "Creates an applicant.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicants_CreateApplicant", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/{applicantId}": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve an applicant", "description": "Retrieves an applicant.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicants_GetApplicantById", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Applicants" ], "summary": "Update an applicant", "description": "Updates an applicant.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicants_UpdateApplicant", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/{applicantId}/applications": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve all applications", "description": "Retrieves all the applications for a given applicant.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantApplications_GetApplicationsForApplicant", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/{applicantId}/applications/{applicationId}": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve an application", "description": "Retrieves an application.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantApplications_GetApplicationForApplicantById", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "applicationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Applicants" ], "summary": "Update an application", "description": "Updates a rental application.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantApplications_UpdateApplication", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "applicationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/{applicantId}/notes": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve all applicant notes", "description": "Retrieves all applicant notes.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantNotes_GetAllApplicantNotes", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Applicants" ], "summary": "Create an applicant note", "description": "Creates an applicant note.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantNotes_CreateApplicantNote", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/{applicantId}/notes/{noteId}": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve an applicant note", "description": "Retrieves an applicant note.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantNotes_GetApplicantNoteById", "parameters": [ { "name": "applicantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/groups": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve all applicant groups", "description": "Retrieves all applicant groups.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantGroups_GetApplicantGroups", "parameters": [ { "name": "entitytype", "in": "query", "description": "Filters results to any applicant groups associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner" ] } }, { "name": "entityid", "in": "query", "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "applicationgroupstatuses", "in": "query", "description": "Filters results by the applicant group status. If no status is specified, applicant groups in any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ] } } }, { "name": "unitids", "in": "query", "description": "Filters results to applicant groups associated to any of the specified rental property unit identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "name", "in": "query", "description": "Filters results to applicant groups that includes applicants whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicantGroupMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Applicants" ], "summary": "Create an applicant group", "description": "Creates an applicant group.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantGroups_CreateApplicantGroup", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantGroupPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/groups/{applicantGroupId}": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve an applicant group", "description": "Retrieves an applicant group.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantGroups_GetApplicantGroupById", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Applicants" ], "summary": "Update an applicant group", "description": "Updates an applicant group.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantGroups_UpdateApplicantGroup", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantGroupPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicantGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/groups/{applicantGroupId}/notes": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve all applicant group notes", "description": "Retrieves all applicant group notes.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantGroupNotes_GetApplicantGroupNotes", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Applicants" ], "summary": "Create an applicant group note", "description": "Creates an applicant group note.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantGroupNotes_CreateApplicationGroupNote", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/applicants/groups/{applicantGroupId}/notes/{noteId}": { "get": { "tags": [ "Applicants" ], "summary": "Retrieve an applicant group note", "description": "Retrieves an applicant group note.\r\n

Required permission(s):

Rentals > Applicants - `View`", "operationId": "ExternalApiApplicantGroupNotes_GetApplicantGroupNoteByNoteId", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Applicants" ], "summary": "Update an applicant group note", "description": "Updates an applicant group note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Applicants - `View` `Edit`", "operationId": "ExternalApiApplicantGroupNotes_UpdateApplicationGroupNote", "parameters": [ { "name": "applicantGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/boardmembers": { "get": { "tags": [ "Board Members" ], "summary": "Retrieve all board members", "description": "Retrieves all association board members.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationBoardMembers_GetAllAssociationBoardMembers", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results to only records whose status is equal to the specified values.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Current", "Former", "Future" ] } } }, { "name": "boardpositiontypes", "in": "query", "description": "Filters results to only records whose board position type is equal to the specified values.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ] } } }, { "name": "createddatetimeto", "in": "query", "description": "Filters results to only records that were created before this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "createddatetimefrom", "in": "query", "description": "Filters results to only records that were created after this date. Must be formatted as `YYYY-MM-DD`.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationBoardMemberMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Board Members" ], "summary": "Create a board member", "description": "Creates a board member for a given association.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationBoardMembers_CreateBoardMember", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationBoardMemberPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationBoardMemberMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/boardmembers/{boardMemberId}": { "get": { "tags": [ "Board Members" ], "summary": "Retrieve a board member", "description": "Retrieves an association board member.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationBoardMembers_GetAssociationBoardMemberById", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "boardMemberId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationBoardMemberMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Board Members" ], "summary": "Update a board member", "description": "Updates a board member for a given association.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationBoardMembers_UpdateBoardMember", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "boardMemberId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationBoardMemberPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationBoardMemberMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Board Members" ], "summary": "Delete a board member", "description": "Deletes a board member. Note, this is a hard delete from the database and data can not be restored. \r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit` `Delete`", "operationId": "ExternalApiAssociationBoardMembers_DeleteBoardMember", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "boardMemberId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/epaysettings": { "get": { "tags": [ "Associations" ], "summary": "Retrieve ePay settings", "description": "Retrieves ePay settings for an association.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationsEPaySettings_GetEPaySettingsForAssociationById", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Associations" ], "summary": "Update ePay settings", "description": "Updates ePay settings for an association.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationsEPaySettings_UpdateEPaySettingsForAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/EPaySettingsPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/inactivationrequest": { "post": { "tags": [ "Associations" ], "summary": "Inactivate an association", "description": "Inactivates an association along with associated units and ownership accounts. \r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationActiveStatus_InactivateAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/meterreadings": { "get": { "tags": [ "Association Meter Readings" ], "summary": "Retrieve all meter readings", "description": "Retrieves all meter readings for an association.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationMeterReadingsRead_GetMeterReadingsForAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdatefrom", "in": "query", "description": "Filters results to any meter readings whose entry date that is greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "readingdateto", "in": "query", "description": "Filters results to any meter readings whose entry date is less than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertypes", "in": "query", "description": "Filters results to the specified meter types.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MeterReadingMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/meterreadings/summary": { "get": { "tags": [ "Association Meter Readings" ], "summary": "Retrieve all meter reading details", "description": "Retrieves all meter reading details for an association.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationMeterReadingDetails_GetAssociationMeterReadingDetailsAsync", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": true, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Association Meter Readings" ], "summary": "Create/Update meter reading details", "description": "This endpoint can be used to both create and update a meter reading detail for an association.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationMeterReadingDetailsUpsert_UpsertAssociationMeterReadingDetailsAsync", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": false, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "requestBody": { "$ref": "#/components/requestBodies/MeterReadingDetailsPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Association Meter Readings" ], "summary": "Delete meter reading details for a given date", "description": "Delete meter reading details for an association for a given date.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit` `Delete`", "operationId": "ExternalApiAssociationDeleteMeterReadingDetails_DeleteMeterReadingDetailsForAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": true, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/notes": { "get": { "tags": [ "Associations" ], "summary": "Retrieve all notes", "description": "Retrieves all notes.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationNotes_GetAssociationNotes", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Associations" ], "summary": "Create a note", "description": "Creates a note.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationNotes_CreateAssociationNote", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/notes/{noteId}": { "get": { "tags": [ "Associations" ], "summary": "Retrieve a note", "description": "Retrieves a note.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationNotes_GetAssociationNoteByNoteId", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Associations" ], "summary": "Update a note", "description": "Updates a note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationNotes_UpdateAssociationNote", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/reactivationrequest": { "post": { "tags": [ "Associations" ], "summary": "Reactivate an association", "description": "Reactivates an association along with associated units and ownership accounts. \r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationActiveStatus_ReactivateAssociation", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/{associationId}/vendors": { "get": { "tags": [ "Associations" ], "summary": "Retrieve all preferred vendors", "description": "Retrieves all preferred vendors.\r\n

Required permission(s):

Associations > Associations and units - `View`\r\n
Maintenance > Vendors - `View`", "operationId": "ExternalApiAssociationPreferredVendors_GetAssociationPreferredVendors", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationPreferredVendorMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Associations" ], "summary": "Update preferred vendors", "description": "Updates preferred vendors.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.

The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`\r\n
Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiAssociationPreferredVendors_UpdateAssociationPreferredVendors", "parameters": [ { "name": "associationId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationPreferredVendorPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationPreferredVendorMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/appliances": { "get": { "tags": [ "Appliances" ], "summary": "Retrieve all appliances", "description": "Retrieves all association appliances.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationAppliances_GetAssociationAppliances", "parameters": [ { "name": "associationids", "in": "query", "description": "Filters results to appliances associated to any of the specified association identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "unitids", "in": "query", "description": "Filters results to appliances associated to any of the specified association unit identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationApplianceMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Appliances" ], "summary": "Create an appliance", "description": "Creates an association appliance.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationAppliances_CreateAssociationAppliance", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationAppliancePostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/appliances/{applianceId}": { "get": { "tags": [ "Appliances" ], "summary": "Retrieve an appliance", "description": "Retrieves an association appliance by id.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationAppliances_GetAssociationApplianceById", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Appliances" ], "summary": "Update an appliance", "description": "Updates an association appliance.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationAppliances_UpdateAssociationAppliance", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationAppliancePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Appliances" ], "summary": "Delete an appliance", "description": "Deletes an associations appliance.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationAppliances_DeleteAssociationAppliances", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/appliances/{applianceId}/servicehistory": { "get": { "tags": [ "Appliances" ], "summary": "Retrieve all service history", "description": "Retrieves all of the service history records for an appliance.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationApplianceServiceHistory_GetAllAssociationApplianceServiceHistory", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationApplianceServiceHistoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Appliances" ], "summary": "Create a service history", "description": "Creates a service history for an appliance.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationApplianceServiceHistory_CreateAssociationApplianceServiceHistory", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceServiceHistoryPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceServiceHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/appliances/{applianceId}/servicehistory/{serviceHistoryId}": { "get": { "tags": [ "Appliances" ], "summary": "Retrieve a service history", "description": "Retrieves a specific service history record for a given appliance.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationApplianceServiceHistory_GetAssociationApplianceServiceHistoryById", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "serviceHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationApplianceServiceHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/banklockboxdata": { "get": { "tags": [ "Associations" ], "summary": "Retrieve all association bank lockbox data", "description": "Retrieves all association bank lockbox data.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationBankLockBoxData_GetBankLockBoxData", "parameters": [ { "name": "associationids", "in": "query", "description": "Filters results to only include Associations with matching IDs", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankLockboxDataMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/owners/{ownerId}/notes": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve all notes", "description": "Retrieves all association owner notes.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationOwnerNotes_GetAssociationOwnerNotes", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Association Owners" ], "summary": "Create a note", "description": "Creates an association owner note.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationOwnerNotes_CreateAssociationOwnerNote", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/owners/{ownerId}/notes/{noteId}": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve a note", "description": "Retrieves an association owner note.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationOwnerNotes_GetAssociationOwnerNoteByNoteId", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Association Owners" ], "summary": "Update a note", "description": "Updates an association owner note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationOwnerNotes_UpdateAssociationOwnerNote", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/owners/{ownerId}/units": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve all occupancy statuses", "description": "Retrieves the occupancy status for all of the units owned by the association owner. \r\n

Required permission(s):

Associations > Association owners and tenants - `View`
Associations > Ownership Accounts - `View`", "operationId": "ExternalApiAssociationOwnerUnits_GetUnitOccupancyStatusesForAssociationOwner", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnerUnitOccupancyStatusMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "503": { "description": "This service is currently unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/owners/{ownerId}/units/{unitId}": { "get": { "tags": [ "Association Owners" ], "summary": "Retrieve an occupancy status", "description": "Retrieves the owner occupancy status for an association unit.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`
Associations > Ownership Accounts - `View`", "operationId": "ExternalApiAssociationOwnerUnits_GetUnitOccupancyStatusesByIdForAssociationOwner", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerUnitOccupancyStatusMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "503": { "description": "This service is currently unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Association Owners" ], "summary": "Update occupancy status", "description": "Updates whether a unit is occupied by the association owner.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`
Associations > Ownership Accounts - `View`", "operationId": "ExternalApiAssociationOwnerUnits_UpdateAssociationOwnerOccupancyStatus", "parameters": [ { "name": "ownerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerUnitOccupancyPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssociationOwnerUnitOccupancyStatusMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "503": { "description": "This service is currently unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/notes": { "get": { "tags": [ "Ownership Accounts" ], "summary": "Retrieve all notes", "description": "Retrieves notes for an ownership account.\r\n

Required permission(s):

Associations > OwnershipAccounts - `View`", "operationId": "ExternalApiOwnershipAccountNotes_GetAssociationOwnershipAccountNotes", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Ownership Accounts" ], "summary": "Create a note", "description": "Creates a new ownership account note.\r\n

Required permission(s):

Associations > Ownership accounts - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountNotes_CreateAssociationOwnershipAccountNote", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/notes/{noteId}": { "get": { "tags": [ "Ownership Accounts" ], "summary": "Retrieve a note", "description": "Retrieves an ownership account note.\r\n

Required permission(s):

Associations > OwnershipAccounts - `View`", "operationId": "ExternalApiOwnershipAccountNotes_GetAssociationOwnershipAccountNoteByNoteId", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Ownership Accounts" ], "summary": "Update a note", "description": "Updates an association ownership account note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Ownership Accounts - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountNotes_UpdateAssociationOwnershipAccountNote", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/payments/{paymentId}": { "put": { "tags": [ "Ownership Account Transactions" ], "summary": "Update a payment", "description": "Updates a ledger payment.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountLedgerPayments_UpdateOwnershipAccountLedgerPayment", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountLedgerPaymentPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringcharges": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a recurring charge", "description": "Creates a recurring charge transaction that will post automatically on the specified ownership account ledger.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountChargeRecurringTransactions_CreateOwnershipAccountsChargeRecurringTransaction", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ChargeRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountChargeRecurringTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringcharges/{transactionId}": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve a recurring charge", "description": "Retrieves a recurring charge.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountChargeRecurringTransactions_GetOwnershipAccountsChargeRecurringTransactionById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountChargeRecurringTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringcredits": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a recurring credit", "description": "Creates a recurring credit transaction that will post automatically on the specified ownership account ledger.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountRecurringCredits_CreateOwnershipAccountCreditRecurringTransaction", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/CreditRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRecurringCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringcredits/{transactionId}": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve a recurring credit", "description": "Retrieves a recurring credit.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountRecurringCredits_GetOwnershipAccountRecurringCreditById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRecurringCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringpayments": { "post": { "tags": [ "Ownership Account Transactions" ], "summary": "Create a recurring payment", "description": "Creates a recurring payment that will post automatically on the specified ownership account ledger.\r\n

Required permission(s):

Associations > Ownership account transactions - `View` `Edit`", "operationId": "ExternalApiOwnershipAccountRecurringPayments_CreateOwnershipAccountRecurringPayment", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/PaymentRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRecurringPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/ownershipaccounts/{ownershipAccountId}/recurringpayments/{paymentId}": { "get": { "tags": [ "Ownership Account Transactions" ], "summary": "Retrieve a recurring payment", "description": "Retrieves a recurring payment.\r\n

Required permission(s):

Associations > Ownership account transactions - `View`", "operationId": "ExternalApiOwnershipAccountRecurringPayments_GetRecurringOwnershipAccountPaymentsById", "parameters": [ { "name": "ownershipAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OwnershipAccountRecurringPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/tenants/{tenantId}/notes": { "get": { "tags": [ "Association Tenants" ], "summary": "Retrieve all notes", "description": "Retrieves all association tenant notes.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationTenantNotes_GetAssociationTenantNotes", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Association Tenants" ], "summary": "Create a note", "description": "Creates an association tenant note.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationTenantNotes_CreateAssociationTenantNote", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/tenants/{tenantId}/notes/{noteId}": { "get": { "tags": [ "Association Tenants" ], "summary": "Retrieve a note", "description": "Retrieves an association tenant note.\r\n

Required permission(s):

Associations > Association owners and tenants - `View`", "operationId": "ExternalApiAssociationTenantNotes_GetAssociationTenantNoteById", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Association Tenants" ], "summary": "Update a note", "description": "Updates an association tenant note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiAssociationTenantNotes_UpdateAssociationTenantNote", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/units/{unitId}/notes": { "get": { "tags": [ "Association Units" ], "summary": "Retrieve all notes", "description": "Retrieves all association unit notes.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationUnitNotes_GetAssociationUnitNotes", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Association Units" ], "summary": "Create a note", "description": "Creates a new association unit note.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationUnitNotes_CreateAssociationUnitNote", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/associations/units/{unitId}/notes/{noteId}": { "get": { "tags": [ "Association Units" ], "summary": "Retrieve a note", "description": "Retrieves an association unit note.\r\n

Required permission(s):

Associations > Associations and units - `View`", "operationId": "ExternalApiAssociationUnitNotes_GetAssociationUnitNoteByNoteId", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Association Units" ], "summary": "Update a note", "description": "Updates an association unit note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiAssociationUnitNotes_UpdateAssociationUnitNote", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all bank accounts", "description": "Retrieves a list of bank accounts.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiBankAccounts_GetAllBankAccounts", "parameters": [ { "name": "bankaccountstatus", "in": "query", "description": "Filters results by the status of the bank account. If no status is specified, bank accounts with any status will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Active", "InActive" ] } }, { "name": "bankname", "in": "query", "description": "Filters results to any bank account whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "routingnumbers", "in": "query", "description": "Filters results to any bank accounts whose routing number *contains* the specified value.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a bank account", "description": "Creates a bank account.\r\n

Required permission(s):

Accounting > Banking - `View` `Edit`", "operationId": "ExternalApiBankAccounts_CreateBankAccount", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a bank account", "description": "Retrieves a specific bank account.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiBankAccounts_GetBankAccount", "parameters": [ { "name": "bankAccountId", "in": "path", "description": "The bank account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a bank account", "description": "Updates a bank account.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Banking - `View` `Edit`", "operationId": "ExternalApiBankAccounts_UpdateBankAccount", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all checks", "description": "Retrieves all bank account checks.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountChecks_GetBankAccountChecks", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "startdate", "in": "query", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountCheckMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a check", "description": "Creates a check.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountChecks_CreateBankAccountCheck", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks/{checkId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a check", "description": "Retrieves a bank account check.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountChecks_GetCheckForBankAccount", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a check", "description": "Updates a check.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountChecks_UpdateCheckForBankAccount", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks/{checkId}/files": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all files for a check", "description": "Retrieves the metadata for all files associated to the specified check.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountCheckFiles_GetFilesForBankAccountCheck", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountCheckFileMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks/{checkId}/files/{fileId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a file for a check", "description": "Retrieves the metadata for a specific file associated with the specified check.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountCheckFiles_GetBankAccountCheckFileById", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountCheckFileMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Bank Accounts" ], "summary": "Delete a file for a check", "description": "Deletes a file for a check\r\n

Required permission(s):

Accounting > BankAccounts - `View` `Edit` `Delete`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountCheckFiles_DeleteBankAccountCheckFile", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks/{checkId}/files/{fileId}/downloadrequests": { "post": { "tags": [ "Bank Accounts" ], "summary": "Download a file for a check", "description": "Downloads a specific file associated to the check.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountCheckFileDownloadRequests_DownloadCheckFile", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/checks/{checkId}/files/uploadrequests": { "post": { "tags": [ "Bank Accounts" ], "summary": "Upload a file for a check", "description": "Uploads a file and associates it to the specified check record.\r\n

Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\nThe first step in the file upload process is to submit the file metadata to `/v1/bankaccounts/{bankAccountId:int}/checks/{checkId:int}/files/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\nUploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Accounting > Checks - `View` `Edit`\r\nAccounting > General Ledger Transactions - `View` (Required for checks associated with a Company) ", "operationId": "ExternalApiBankAccountCheckFileUploads_CreateCheckUploadFileRequest", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "checkId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/FileNamePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/deposits": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all deposits", "description": "Retrieves all bank account deposits.\r\n

Required permission(s):

Accounting > BankAccount - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for deposits associated with a Company) ", "operationId": "ExternalApiBankAccountDeposits_GetBankAccountDeposits", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "startdate", "in": "query", "description": "Filters results to any deposits that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any deposits that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountDepositMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a deposit", "description": "Creates a deposit.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountDeposits_CreateBankAccountDeposit", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountDepositPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/deposits/{depositId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a deposit", "description": "Retrieves a bank account deposit.\r\n

Required permission(s):

Accounting > BankAccount - `View`\r\n
Accounting > General Ledger Transactions - `View` (Required for deposits associated with a Company) ", "operationId": "ExternalApiBankAccountDeposits_GetBankAccountDepositById", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "depositId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a deposit", "description": "Updates a deposit.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountDeposits_UpdateBankAccountDeposit", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "depositId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountDepositPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/quickdeposits": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all quick deposits", "description": "Retrieves all quick deposits.\r\n

Required permission(s):

Accounting > BankAccount - `View`", "operationId": "ExternalApiBankAccountQuickDeposits_GetAllQuickDeposits", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "startdate", "in": "query", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountQuickDepositMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a quick deposit", "description": "Creates a quick deposit.\r\n

Required permission(s):

Accounting > BankAccount - `View` `Edit`", "operationId": "ExternalApiBankAccountQuickDeposits_CreateQuickDeposit", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountQuickDepositSaveMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountQuickDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/quickdeposits/{quickDepositId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a quick deposit", "description": "Retrieves a quick deposit.\r\n

Required permission(s):

Accounting > BankAccount - `View`", "operationId": "ExternalApiBankAccountQuickDeposits_GetQuickDepositById", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "quickDepositId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountQuickDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a quick deposit", "description": "Updates a quick deposit.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountQuickDeposits_UpdateQuickDeposit", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "quickDepositId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountQuickDepositSaveMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountQuickDepositMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/transactions": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all transactions", "description": "Retrieves all bank account transactions.\r\n

\r\n Note: When using the `orderby` query string parameter, the only supported parameter is `EntryDate`.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiBankAccountTransactions_GetBankAccountTransactions", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "selectionentityid", "in": "query", "description": "Filters results to any transaction containing journal lines for an entity associated with the specified entity id value. The id must be of the type specified in SelectionEntityType.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "selectionentitytype", "in": "query", "description": "Specifies the type of entity that SelectionEntityId refers to.", "required": false, "schema": { "type": "string", "enum": [ "Company", "Rental", "RentalOwner", "Association" ] } }, { "name": "startdate", "in": "query", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/transactions/{transactionId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a transaction", "description": "Retrieves a specific bank account transaction.\r\n

Required permission(s):

Accounting > Bank Account - `View`", "operationId": "ExternalApiBankAccountTransactions_GetBankAccountTransactionById", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/transfers": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all transfers", "description": "Retrieves all bank account transfers.\r\n

Required permission(s):

Accounting > BankAccount - `View`", "operationId": "ExternalApiBankAccountTransfers_GetBankAccountTransfers", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "startdate", "in": "query", "description": "Filters results to any transfers that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transfers that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountTransferMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a transfer", "description": "Creates a bank account transfer.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountTransfers_CreateBankAccountTransfer", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountTransferSaveMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountTransferMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/transfers/{transferId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a transfer", "description": "Retrieves a bank account transfer.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiBankAccountTransfers_GetBankAccountTransferById", "parameters": [ { "name": "bankAccountId", "in": "path", "description": "The bank account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transferId", "in": "path", "description": "The transfer identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a transfer", "description": "Updates a bank account transfer.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountTransfers_UpdateBankAccountTransfer", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transferId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountTransferSaveMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountTransferMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/undepositedfunds": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all undeposited funds", "description": "Retrieve all bank account undeposited funds.\r\n

Required permission(s):

Accounting > Bank Accounts - `View`", "operationId": "ExternalApiBankAccountUndepositedFunds_GetUndepositedFunds", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UndepositedFundsMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/withdrawals": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve all withdrawals", "description": "Retrieves all bank account withdrawals.\r\n

Required permission(s):

Accounting > BankAccounts - `View`", "operationId": "ExternalApiBankAccountWithdrawals_GetBankAccountWithdrawals", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "startdate", "in": "query", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BankAccountWithdrawalMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bank Accounts" ], "summary": "Create a withdrawal", "description": "Creates a bank account withdrawal.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountWithdrawals_CreateWithdrawalForBankAccount", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountWithdrawalSaveMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWithdrawalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bankaccounts/{bankAccountId}/withdrawals/{withdrawalId}": { "get": { "tags": [ "Bank Accounts" ], "summary": "Retrieve a withdrawal", "description": "Retrieves a bank account withdrawal.\r\n

Required permission(s):

Accounting > BankAccounts - `View`", "operationId": "ExternalApiBankAccountWithdrawals_GetBankAccountWithdrawalById", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "withdrawalId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWithdrawalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bank Accounts" ], "summary": "Update a withdrawal", "description": "Updates a bank account withdrawal.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBankAccountWithdrawals_UpdateBankAccountWithdrawal", "parameters": [ { "name": "bankAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "withdrawalId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/BankAccountWithdrawalSaveMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWithdrawalMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills": { "get": { "tags": [ "Bills" ], "summary": "Retrieve all bills", "description": "Retrieves a list of bills.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBills_GetBillsAsync", "parameters": [ { "name": "entityid", "in": "query", "description": "Filters results to any bill containing line items associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "vendorid", "in": "query", "description": "Filters results to bills associated with a specific vendor.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "referencenumber", "in": "query", "description": "Filters results to bills whose reference number contains the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "paidstatus", "in": "query", "description": "Filters results by the bill's paid status. If no status is specified, bills with any status will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Paid", "Unpaid", "UncollectedMarkups" ] } }, { "name": "frompaiddate", "in": "query", "description": "Filters results to any bill whose paid date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "topaiddate", "in": "query", "description": "Filters results to any bill whose paid date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "approvalstatuses", "in": "query", "description": "Filters the results to bills matching the specified approval statuses. If no approval status is specified, bills with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "NotNeeded", "ApprovalRequired", "Approved", "Pending", "Rejected" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BillMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bills" ], "summary": "Create a bill", "description": "Creates a bill.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit`", "operationId": "ExternalApiBills_CreateBill", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}": { "get": { "tags": [ "Bills" ], "summary": "Retrieve a bill", "description": "Retrieves a single bill.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBills_GetBillById", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Bills" ], "summary": "Update a bill", "description": "Use this operation to update any of the writable fields of an existing bill resource. When updating this resource keep the following in mind:


Required permission(s):

Accounting > Bills - `View` `Edit`", "operationId": "ExternalApiBills_UpdateBill", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/files": { "get": { "tags": [ "Bills" ], "summary": "Retrieve all files for a bill", "description": "Retrieves the metadata for all files associated to the specified bill. To download the actual file view the [Download a bill file](#tag/Bills/operation/ExternalApiBillFileDownloadRequests_DownloadBillFile).\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBillsFiles_GetAllFilesForBill", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BillFileMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/files/{fileId}": { "get": { "tags": [ "Bills" ], "summary": "Retrieve a file for a bill", "description": "Retrieves the metadata for a specific file associated with the specified bill.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBillsFiles_GetBillFileById", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillFileMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Bills" ], "summary": "Delete a bill file", "description": "Deletes the specified file from a bill. The file will be permanently deleted from the Buildium platform and can not be recovered.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit` `Delete`", "operationId": "ExternalApiBillsFiles_DeleteBillFile", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/files/{fileId}/downloadrequest": { "post": { "tags": [ "Bills" ], "summary": "Download a bill file", "description": "Downloads a specific file associated to the bill.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBillFileDownloadRequests_DownloadBillFile", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/files/uploadrequests": { "post": { "tags": [ "Bills" ], "summary": "Upload a bill file", "description": "Uploads a file and associates it to the specified bill record.\r\n

Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\nThe first step in the file upload process is to submit the file metadata to `/v1/bills/{billId:int}/files/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\nUploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit`", "operationId": "ExternalApiBillFileUploads_CreateUploadFileRequest", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/FileNamePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/payments": { "get": { "tags": [ "Bills" ], "summary": "Retrieve all bill payments", "description": "Retrieves a list of bill payments for a specific bill.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBillPaymentsRead_GetBillPayments", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BillPaymentMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Bills" ], "summary": "Create a bill payment", "description": "Creates a bill payment.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit`\r\n Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBillPaymentsWrite_CreateBillPayment", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPaymentPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/{billId}/payments/{paymentId}": { "get": { "tags": [ "Bills" ], "summary": "Retrieve a bill payment", "description": "Retrieves specific bill payment.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiBillPaymentsRead_GetBillPaymentById", "parameters": [ { "name": "billId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/bills/payments": { "post": { "tags": [ "Bills" ], "summary": "Create a payment for multiple bills with one check", "description": "Creates a payment for multiple bills with one check.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit`\r\n Accounting > Bank Accounts - `View` `Edit`", "operationId": "ExternalApiBillPaymentsWrite_CreateMultipleBillPayments", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultipleBillPaymentsPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BillPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/budgets": { "get": { "tags": [ "Budgets" ], "summary": "Retrieve all budgets", "description": "Retrieves all budgets.\r\n

Required permission(s):

Accounting > Budgets - `View`", "operationId": "ExternalApiBudgets_GetBudgets", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to any budget associated to any of the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "fiscalyear", "in": "query", "description": "Filters results to any budgets that end in the given fiscal year. FiscalYear must be a positive number.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "name", "in": "query", "description": "Filters results to any budgets whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BudgetMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Budgets" ], "summary": "Create a budget", "description": "Creates a budget.\r\n

Required permission(s):

Accounting > Budgets - `View` `Edit`", "operationId": "ExternalApiBudgets_CreateBudget", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/budgets/{budgetId}": { "get": { "tags": [ "Budgets" ], "summary": "Retrieve a budget", "description": "Retrieves a budget.\r\n

Required permission(s):

Accounting > Budgets - `View`", "operationId": "ExternalApiBudgets_GetBudgetById", "parameters": [ { "name": "budgetId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Budgets" ], "summary": "Update a budget", "description": "Updates a budget.\r\n

Required permission(s):

Accounting > Budgets - `View` `Edit`", "operationId": "ExternalApiBudgets_UpdateBudget", "parameters": [ { "name": "budgetId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/clientleads": { "get": { "tags": [ "Client Leads" ], "summary": "Retrieve all client leads", "description": "Retrieves all client leads\r\n

\r\n Note: When using the `orderby` query string parameter, the only supported options are DateReceived.\r\n

Required permission(s):

Administration > All Property Management - `View`", "operationId": "ExternalApiClientLeads_GetClientLeads", "parameters": [ { "name": "leadstatuses", "in": "query", "description": "Filters results to any client leads that are in one of the given statuses.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Unknown", "New", "Contacting", "Qualifying", "Closing", "ClosedWon", "ClosedLost" ] } } }, { "name": "propertytypes", "in": "query", "description": "Filters results to any client leads that have a property in one of the given property types.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "SingleHomeUpToThreeHundredThousand", "SingleHomeThreeHundredToFiveHundredThousand", "SingleHomeFiveHundredThousandToOneMillion", "SingleHomeOverOneMillion", "MultiFamilyTwoToFourUnits", "MultiFamilyFiveToNineteenUnits", "MultiFamilyTwentyToFortyNineUnits", "MultiFamilyOverOneHundredUnits", "OfficeLessThanTenThousandSqFt", "OfficeTenThousandToOneHundredThousandSqFt", "OfficeOverOneHundredThousandSqFt", "RetailLessThanTenThousandSqFt", "RetailTenThousandToOneHundredThousandSqFt", "RetailOverOneHundredThousandSqFt", "LightManufacturingUpToOneHundredThousandSqFt", "LightManufacturingOverOneHundredThousandSqFt", "WarehouseUpToOneHundredThousandSqFt", "WarehouseOverOneHundredThousandSqFt", "VacationOneToTwoUnits", "VacationOverThreeUnits", "ParkingGarage", "OtherAssociation", "BiotechMissionCritical", "HOATwoToFortyNineUnits", "HOAFiftyToNinetyNineUnits", "HOAOverOneHundredUnits", "COATwoToFortyNineUnits", "COAFiftyToNinetyNineUnits", "COAOverOneHundredUnits", "MobileHomeCommunity" ] } } }, { "name": "datereceivedfrom", "in": "query", "description": "Filters results to any client leads that were received on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "datereceivedto", "in": "query", "description": "Filters results to any client leads that were received on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "includecreditedleads", "in": "query", "description": "This will also return client leads that were credited. By default credited leads will not be returned.", "required": false, "schema": { "type": "boolean" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClientLeadMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/clientleads/{clientLeadId}": { "get": { "tags": [ "Client Leads" ], "summary": "Retrieve a client lead", "description": "Retrieves a specific client lead\r\n

Required permission(s):

Administration > All Property Management - `View`", "operationId": "ExternalApiClientLeads_GetProspectiveClient", "parameters": [ { "name": "clientLeadId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClientLeadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/announcements": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all announcements", "description": "Retrieves all announcements.\r\n

Required permission(s):

Communications > Announcements - `View`", "operationId": "ExternalApiAnnouncements_GetAllAnnouncements", "parameters": [ { "name": "announcementdatefrom", "in": "query", "description": "Filters results to any announcements created on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "announcementdateto", "in": "query", "description": "Filters results to any announcements created on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "entityid", "in": "query", "description": "Filters results to any announcement associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is provided.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "senderid", "in": "query", "description": "Unique identifier of the user that published the announcement.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AnnouncementMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Communications" ], "summary": "Create an announcement", "description": "Creates and publishes an announcement.\r\n

Required permission(s):

Communications > Announcements - `View` `Edit`", "operationId": "ExternalApiAnnouncements_CreateAnnouncement", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnnouncementPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnnouncementMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/announcements/{announcementId}": { "get": { "tags": [ "Communications" ], "summary": "Retrieve an announcement", "description": "Retrieves an announcement.\r\n

Required permission(s):

Communications > Announcements - `View`", "operationId": "ExternalApiAnnouncements_GetAnnouncementById", "parameters": [ { "name": "announcementId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnnouncementMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/announcements/{announcementId}/expirationrequest": { "post": { "tags": [ "Communications" ], "summary": "Expire an announcement", "description": "Removes the announcement from the Resident Center immediately.\r\n

Required permission(s):

Communications > Announcements - `View` `Edit`", "operationId": "ExternalApiAnnouncementsExpiration_ExpireAnnouncement", "parameters": [ { "name": "announcementId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "NoContent" }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/announcements/{announcementId}/properties": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all announcement properties", "description": "Retrieves a list of association and/or rental properties whose residents received the announcement. An empty response collection indicates that the announcement was sent to all properties at the time of its creation.\r\n

Required permission(s):

Communications > Announcements - `View`", "operationId": "ExternalApiAnnouncementProperties_GetAnnouncementProperties", "parameters": [ { "name": "announcementId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PropertyMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/emails": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all emails", "description": "Retrieves all emails.\r\n

Required permission(s):

Communication > Emails - `View`", "operationId": "ExternalApiEmails_GetEmails", "parameters": [ { "name": "sentdatetimefrom", "in": "query", "description": "Filters results to any emails whose sent date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DDTHH:MM:SSZ. The maximum date range is 90 days.", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "sentdatetimeto", "in": "query", "description": "Filters results to any emails whose sent date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DDTHH:MM:SSZ. The maximum date range is 90 days.", "required": true, "schema": { "type": "string", "format": "date-time" } }, { "name": "subject", "in": "query", "description": "Filters results to any email whose subject *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "recipientnameoremail", "in": "query", "description": "Filters results to any email with a recipient whose name or email address *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "senderuserid", "in": "query", "description": "Filters results to only emails that were sent by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Communications" ], "summary": "Send an email", "description": "Sends an email to one or more recipients using the specified email template. \r\n

Required permission(s):

Communication > Emails - `View` `Edit`", "operationId": "ExternalApiEmailsWrite_CreateEmail", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailPostMessage" } } }, "required": true }, "responses": { "202": { "description": "Sent email." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/emails/{emailId}": { "get": { "tags": [ "Communications" ], "summary": "Retrieve an email", "description": "Retrieves the content of an email. To retrieve the recipients of the email see the [Retrieve all email recipients](#tag/Communications/operation/ExternalApiEmailRecipients_GetEmailRecipients) endpoint.\r\n

Required permission(s):

Communications > Emails - `View`", "operationId": "ExternalApiEmails_GetEmailById", "parameters": [ { "name": "emailId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/emails/{emailId}/recipients": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all email recipients", "description": "Retrieves all email recipients.\r\n

Required permission(s):

Communications > Email - `View`\r\n

Optional Permissions:


\r\n The following permissions are optional, but results with a missing permission will be filtered out.\r\n Maintenance > Vendors - `View` In order to retrieve recipients that are Vendors, you must have this permission.\r\n Administration > Users - `View` In order to see recipients that are Staff, you must have this permission.", "operationId": "ExternalApiEmailRecipients_GetEmailRecipients", "parameters": [ { "name": "emailId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailRecipientMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/phonelogs": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all phone logs", "description": "Retrieves all phone logs.\r\n

Required permission(s):

Communications > Timelines (Phone Logs) - `View`", "operationId": "ExternalApiPhoneLogs_GetPhoneLogs", "parameters": [ { "name": "fromdate", "in": "query", "description": "Filters results to any phone log whose call date is greater than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "todate", "in": "query", "description": "Filters results to any phone log whose call date is less than or equal to the specified value.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "loggedbystaffuserids", "in": "query", "description": "Filters results to any phone log that was logged by staff user(s).", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "subject", "in": "query", "description": "Filters results to any phone log whose subject *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "participantentityid", "in": "query", "description": "Filters results to any phone logs that match the participant identifier. Note, if a value is provided in this field the `ParticipantEntityType` must also be provided.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "participantentitytype", "in": "query", "description": "Filters results to any phone log with the specified participant type. This field is required if a value is provided for the `ParticipantEntityId` field.", "required": false, "schema": { "type": "string", "enum": [ "Vendor", "RentalOwner", "RentalTenant", "AssociationOwner" ] } }, { "name": "unitagreementid", "in": "query", "description": "Filters results to any phone log with the specified unit agreement identifier. Note, if a value is provided in this field the `UnitAgreementType` must also be provided.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitagreementtype", "in": "query", "description": "Filters results to any phone log with the specified unit agreement type. This field is required if a value is provided for the `UnitAgreementId` field.", "required": false, "schema": { "type": "string", "enum": [ "Lease", "OwnershipAccount" ] } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PhoneLogMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Communications" ], "summary": "Create a phone log", "description": "Creates a phone log.\r\n

Required permission(s):

Communications > Timelines (Phone Logs) - `View` `Edit`", "operationId": "ExternalApiPhoneLogs_CreatePhoneLog", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneLogPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneLogMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/phonelogs/{phoneLogId}": { "get": { "tags": [ "Communications" ], "summary": "Retrieve a phone log", "description": "Retrieves a specific phone log.\r\n

Required permission(s):

Communications > Timelines (Phone Logs) - `View`", "operationId": "ExternalApiPhoneLogs_GetPhoneLogById", "parameters": [ { "name": "phoneLogId", "in": "path", "description": "The phone log identifier", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneLogMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Communications" ], "summary": "Update a phone log", "description": "Update a phone log\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Communications > Timelines (Phone Logs) - `View` `Edit`", "operationId": "ExternalApiPhoneLogs_UpdatePhoneLog", "parameters": [ { "name": "phoneLogId", "in": "path", "description": "The phone log identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneLogPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PhoneLogMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/templates": { "get": { "tags": [ "Communications" ], "summary": "Retrieve all communication templates", "description": "Retrieves all mailing and email templates. A template is a tool in Buildium that allows you to create \"mail merge\" templates for emails and postal mailings to easily send common messages to residents, rental owners and vendors. \r\n

Required permission(s):

Communications > Mailing Templates - `View`\r\n

Optional Permissions:

Rentals > Tenants - `View`\r\n
Rentals > Property Rental owners - `View`\r\n
Associations > Association owners and tenants - `View`\r\n
Maintenance > Vendors - `View`\r\n
Rentals > Applicants - `View`", "operationId": "ExternalApiMailingTemplates_GetMailingTemplates", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MailingTemplateMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/communications/templates/{templateId}": { "get": { "tags": [ "Communications" ], "summary": "Retrieve a communication template", "description": "Retrieves a communication template. A template is a tool in Buildium that allows you to create \"mail merge\" templates for emails and postal mailings to easily send common messages to residents, rental owners and vendors.\r\n

Required permission(s):

Communications > Mailing Templates - `View`\r\n

Optional Permissions:

Rentals > Tenants - `View`\r\n
Rentals > Property Rental owners - `View`\r\n
Associations > Association owners and tenants - `View`\r\n
Maintenance > Vendors - `View`\r\n
Rentals > Applicants - `View`", "operationId": "ExternalApiMailingTemplates_GetMailingTemplatesById", "parameters": [ { "name": "templateId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MailingTemplateMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/files/{fileId}/sharing": { "get": { "tags": [ "Files" ], "summary": "Retrieve file share settings", "description": "Retrieves a file's share settings. Note, that the response JSON schema includes share setting fields for all file entity types, however only fields that pertain to the queried file entity type will be populated. For example, if a file of entity type Rental is retrieved only the fields in the Rental section of the response will have values.\r\n

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFileSharing_GetFileShareSettingsById", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileSharingMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Files" ], "summary": "Update file share settings", "description": "Updates a file's share settings. Note, can only update a file's share settings based on the file's entity type (ie: If the file belongs to a rental property, you can only update the rental file sharing settings). The response payload contains file share setting values for all file entity types, but the relevant setting values correlate to the file's entity type.\r\n

Required permission(s):

Documents > Files - `View` `Edit`", "operationId": "ExternalApiFileSharing_UpdateFileSharingSetting", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileSharingPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileSharingMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/files/categories": { "get": { "tags": [ "Files" ], "summary": "Retrieve all categories", "description": "Retrieves a list of file categories.\r\n

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFileCategories_GetFileCategories", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileCategoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Files" ], "summary": "Create a category", "description": "Creates a file category.\r\n

Required permission(s):

Documents > Files - `View` `Edit`", "operationId": "ExternalApiFileCategories_CreateFileCategory", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileCategoryPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/files/categories/{fileCategoryId}": { "get": { "tags": [ "Files" ], "summary": "Retrieve a category", "description": "Retrieves a specific file category.\r\n

Required permission(s):

Documents > Files - `View`", "operationId": "ExternalApiFileCategories_GetFileCategoryById", "parameters": [ { "name": "fileCategoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Files" ], "summary": "Update a category", "description": "Updates a file category. Note that file categories where `IsEditable` is `false` can not be updated.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Documents > Files - `View` `Edit`", "operationId": "ExternalApiFileCategories_UpdateFileCategory", "parameters": [ { "name": "fileCategoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileCategoryPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/generalledger": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve all general ledger entries", "description": "Retrieves all general ledger entries\r\n

Required permission(s):

Accounting > General Ledger Transactions - `View`", "operationId": "ExternalApiGeneralLedger_GetGeneralLedgerEntries", "parameters": [ { "name": "accountingbasis", "in": "query", "description": "The methodology in which revenues and expenses are recognized when calculating the balances. Specifying `Cash` calculates balances based on when money changes hands. Specifying `Accrual` calculates balances based on the period in which the transaction originally happened.", "required": true, "schema": { "type": "string", "enum": [ "Accrual", "Cash" ] } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` field refers to.", "required": false, "schema": { "type": "string", "enum": [ "Company", "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any general ledger entry containing line items associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "glaccountids", "in": "query", "description": "Filters results to entries whose general ledger account belongs to the specified set of general ledger account ids.", "required": true, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "startdate", "in": "query", "description": "Filters results to any entries whose start date is greater than or equal to the specified value.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any entries whose end date is less than or equal to the specified value.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GeneralLedgerMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/generalledger/journalentries": { "post": { "tags": [ "General Ledger" ], "summary": "Create a general journal entry", "description": "Creates a general journal entry.\r\n

Required permission(s):

Accounting > General Ledger Transactions - `View` `Edit`", "operationId": "ExternalApiGeneralLedgerJournalEntries_CreateGeneralJournalEntry", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GeneralJournalEntryPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GeneralLedgerTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/generalledger/journalentries/{journalEntryId}": { "put": { "tags": [ "General Ledger" ], "summary": "Update a general journal entry", "description": "Updates a general journal entry.\r\n

Required permission(s):

Accounting > General Ledger Transactions - `View` `Edit`", "operationId": "ExternalApiGeneralLedgerJournalEntries_UpdateGeneralJournalEntry", "parameters": [ { "name": "journalEntryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GeneralJournalEntryPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GeneralLedgerTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/generalledger/transactions": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve all general ledger transactions", "description": "Retrieves a list of general ledger transactions.\r\n

Required permission(s):

Accounting > General Ledger Transactions - `View`", "operationId": "ExternalApiGeneralLedgerTransactions_GetAllTransactions", "parameters": [ { "name": "selectionentityid", "in": "query", "description": "Filters results to any transaction containing journal lines for an entity associated with the specified entity id value. The id must be of the type specified in SelectionEntityType.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "selectionentitytype", "in": "query", "description": "Specifies the type of entity that SelectionEntityId refers to.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "startdate", "in": "query", "description": "Filters results to any transaction whose date is greater than or equal to the specified value.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "enddate", "in": "query", "description": "Filters results to any transaction whose date is less than or equal to the specified value.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "glaccountids", "in": "query", "description": "Filters results to transactions whose general ledger account belongs to the specified set of general ledger account ids.", "required": true, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GeneralLedgerTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/generalledger/transactions/{transactionId}": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve a general ledger transaction", "description": "Retrieves a specific general ledger transaction.\r\n

Required permission(s):

Accounting > General Ledger Transactions - `View`", "operationId": "ExternalApiGeneralLedgerTransactions_GetTransactionById", "parameters": [ { "name": "transactionId", "in": "path", "description": "The general ledger transaction identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GeneralLedgerTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/glaccounts": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve all general ledger accounts", "description": "Retrieves a list of general ledger accounts.

General ledger accounts are used to categorize transactions for accounting purposes.\r\n

Required permission(s):

Accounting > General Ledger Accounts - `View`", "operationId": "ExternalApiGeneralLedgerAccounts_GetAllGLAccounts", "parameters": [ { "name": "accounttypes", "in": "query", "description": "Filters results by the specified general ledger account types.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Asset", "Liability", "Equity", "Income", "Expense" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GLAccountMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "General Ledger" ], "summary": "Create a general ledger account", "description": "Creates a general ledger account.\r\n

Required permission(s):

Accounting > General Ledger Accounts - `View` `Edit`", "operationId": "ExternalApiGeneralLedgerAccounts_CreateGeneralLedgerAccount", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GLAccountPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GLAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/glaccounts/{glAccountId}": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve a general ledger account", "description": "Retrieves a specific general ledger account.\r\n

Required permission(s):

Accounting > General Ledger Accounts - `View`", "operationId": "ExternalApiGeneralLedgerAccounts_GetGlAccountById", "parameters": [ { "name": "glAccountId", "in": "path", "description": "The general ledger account identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GLAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "General Ledger" ], "summary": "Update a general ledger account", "description": "Updates a general ledger account.\r\n

Required permission(s):

Accounting > General Ledger Accounts - `View` `Edit`", "operationId": "ExternalApiGeneralLedgerAccounts_UpdateGLAccount", "parameters": [ { "name": "glAccountId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GLAccountPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GLAccountMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/glaccounts/balances": { "get": { "tags": [ "General Ledger" ], "summary": "Retrieve all general ledger account balances", "description": "Retrieves all general ledger account balances as of a given date. The response includes the total balance of each account along with the subtotals for any accounting entities (company, associations or rental properties) that have transactions assigned to the account.\r\n

Required permission(s):

Accounting > General Ledger Accounts - `View`", "operationId": "ExternalApiGLAccountBalances_GetGlAccountBalances", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that `EntityId` field refers to.", "required": false, "schema": { "type": "string", "enum": [ "Association", "Rental", "RentalOwner" ] } }, { "name": "entityid", "in": "query", "description": "Filters transactions used in calculating the general ledger account balances to only those containing journal lines for with the specified entity id value. The entity id specified must be of the type specified in `EntityType`.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "glaccountids", "in": "query", "description": "Filters results to the specified set of general ledger account identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "accountingbasis", "in": "query", "description": "The methodology in which revenues and expenses are recognized when calculating the balances. Specifying `Cash` calculates balances based on when money changes hands. Specifying `Accrual` calculates balances based on the period in which the transaction originally happened.", "required": true, "schema": { "type": "string", "enum": [ "Accrual", "Cash" ] } }, { "name": "asofdate", "in": "query", "description": "Indicates the end date through which the balances will be calculated. This will include all transactions in your account until this specified date.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GLAccountBalanceMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/epaysettings": { "get": { "tags": [ "Leases" ], "summary": "Retrieve ePay settings", "description": "Retrieves ePay settings for a lease.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiLeaseEpaySettings_GetLeaseEpaySettingsById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Leases" ], "summary": "Update ePay settings", "description": "Updates ePay settings for a lease\r\n

Required permission(s):

Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiLeaseEpaySettings_UpdateLeaseEpaySettings", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/EPaySettingsPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/payments/{paymentId}": { "put": { "tags": [ "Lease Transactions" ], "summary": "Update a payment", "description": "Updates a ledger payment.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseLedgerPaymentsWrite_UpdateLeaseLedgerPayment", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseLedgerPaymentPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringcharges": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a recurring charge", "description": "Creates a recurring charge transaction that will post automatically on the specified lease ledger.\r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseChargeRecurringTransactions_CreateLeaseChargeRecurringTransaction", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ChargeRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseChargeRecurringTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringcharges/{transactionId}": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve a recurring charge", "description": "Retrieves a recurring charge.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseChargeRecurringTransactions_GetLeaseChargeRecurringTransactionById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseChargeRecurringTransactionMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringcredits": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a recurring credit", "description": "Creates a recurring credit transaction on the specified lease ledger. \r\n

Required permission(s):

Rentals > Lease transactions - `View` `Edit`", "operationId": "ExternalApiLeaseRecurringCredits_CreateLeaseCreditRecurringTransaction", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/CreditRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRecurringCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringcredits/{transactionId}": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve a recurring credit", "description": "Retrieves a recurring credit.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseRecurringCredits_GetLeaseRecurringCreditById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactionId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRecurringCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringpayments": { "post": { "tags": [ "Lease Transactions" ], "summary": "Create a recurring payment", "description": "Creates a recurring payment that will post automatically on the specified lease ledger.\r\n

Required permission(s):

Rentals > Lease Transactions - `View` `Edit`", "operationId": "ExternalApiLeaseRecurringPayments_CreateLeaseRecurringPayment", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/PaymentRecurringTransactionPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRecurringPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/recurringpayments/{paymentId}": { "get": { "tags": [ "Lease Transactions" ], "summary": "Retrieve a recurring payment", "description": "Retrieves a recurring payment.\r\n

Required permission(s):

Rentals > Lease Transactions - `View`", "operationId": "ExternalApiLeaseRecurringPayments_GetRecurringLeasePaymentsById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "paymentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRecurringPaymentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/rent": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all rent schedules", "description": "The rent schedule provides details (dollar amount, day of the month, etc) of the recurring charges that are applied to the lease ledger each rent cycle. A lease may have more than one rent schedule associated with it if the rent terms change within the duration of the lease.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseRent_GetRent", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LeaseRentMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/rent/{rentId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve a rent schedule", "description": "Retrieves a specific rent schedule for a lease. The rent schedule provides details (dollar amount, day of the month, etc) of the recurring charges that are applied to the lease ledger each rent cycle.\r\n

Required permission(s):

Rentals > Lease transactions - `View`", "operationId": "ExternalApiLeaseRent_GetRentById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "rentId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaseRentMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/rentersinsurance": { "get": { "tags": [ "Leases" ], "summary": "Retrieve all insurance policies", "description": "Retrieves all renters insurance policies for a lease.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiRentersInsurance_GetRentersInsurancePolicies", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentersInsurancePolicyMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/{leaseId}/rentersinsurance/{policyId}": { "get": { "tags": [ "Leases" ], "summary": "Retrieve an insurance policy", "description": "Retrieves a renters insurance policy.\r\n

Required permission(s):

Rentals > Leases - `View`", "operationId": "ExternalApiRentersInsurance_GetRentersInsurancePolicyById", "parameters": [ { "name": "leaseId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "policyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentersInsurancePolicyMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/tenants": { "get": { "tags": [ "Rental Tenants" ], "summary": "Retrieve all tenants", "description": "Retrieves a list of tenants.\r\n

Required permission(s):

Rentals > Tenants - `View`", "operationId": "ExternalApiRentalTenants_GetAllTenants", "parameters": [ { "name": "buildingstatuses", "in": "query", "description": "Filters results by the status of the rental property the tenants are associated with. If no status is specified tenants in either `active` and `inactive` rental properties will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "InActive" ] } } }, { "name": "leasetermstatuses", "in": "query", "description": "Filters results to any tenant whose lease term matches the specified status. If no status is specified tenants with any lease terms status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "unitnumber", "in": "query", "description": "Filters results to any tenant whose unit number *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "name", "in": "query", "description": "Filters results to any tenant whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "phone", "in": "query", "description": "Filters results to any tenant whose phone number *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "email", "in": "query", "description": "Filters results to any tenant whose email *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "propertyids", "in": "query", "description": "Filters results to tenants whose rental unit belongs to the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "rentalownerids", "in": "query", "description": "Filters results to tenants whose rental unit belongs to a property with a rental owner in the specified set of rental owner ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any rental tenants that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any rental tenants that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TenantMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Tenants" ], "summary": "Create a tenant", "description": "Creates a rental tenant.\r\n

Required permission(s):

Rentals > Tenants - `View` `Edit`\r\n
Rentals > Leases - `View` `Edit`", "operationId": "ExternalApiRentalTenants_CreateRentalTenant", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalTenantPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/tenants/{tenantId}": { "get": { "tags": [ "Rental Tenants" ], "summary": "Retrieve a tenant", "description": "Retrieve a specific tenant.\r\n

Required permission(s):

Rentals > Tenants - `View`", "operationId": "ExternalApiRentalTenants_GetTenantById", "parameters": [ { "name": "tenantId", "in": "path", "description": "The tenant identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Tenants" ], "summary": "Update a tenant", "description": "Updates a rental tenant.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Tenants - `View` `Edit`", "operationId": "ExternalApiRentalTenants_UpdateRentalTenant", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalTenantPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TenantMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/tenants/{tenantId}/notes": { "get": { "tags": [ "Rental Tenants" ], "summary": "Retrieve all notes", "description": "Retrieves all tenant notes.\r\n

Required permission(s):

Rentals > Tenants - `View`", "operationId": "ExternalApiTenantNotes_GetAllTenantNotes", "parameters": [ { "name": "tenantId", "in": "path", "description": "The tenant identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Tenants" ], "summary": "Create a note", "description": "Creates a tenant note.\r\n

Required permission(s):

Rentals > Tenants - `View` `Edit`", "operationId": "ExternalApiTenantNotes_CreateTenantNote", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/leases/tenants/{tenantId}/notes/{noteId}": { "get": { "tags": [ "Rental Tenants" ], "summary": "Retrieve a note", "description": "Retrieves a tenant note.\r\n

Required permission(s):

Rentals > Tenants - `View`", "operationId": "ExternalApiTenantNotes_GetTenantNoteById", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Tenants" ], "summary": "Update a note", "description": "Updates a tenant note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Tenants - `View` `Edit`", "operationId": "ExternalApiTenantNotes_UpdateLeaseTenantNote", "parameters": [ { "name": "tenantId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/propertygroups": { "get": { "tags": [ "Property Groups" ], "summary": "Retrieve all property groups", "description": "Retrieves all property groups.\r\n

Required permission(s):

Rentals > Rental properties and units or - `View`\r\n
Associations > Associations and units - `View`", "operationId": "ExternalApiPropertyGroups_GetPropertyGroups", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to property groups that contain any of the specified property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "nameordescription", "in": "query", "description": "Filters results to any property group whose name or description contains the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PropertyGroupMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Property Groups" ], "summary": "Create a property group", "description": "Creates a property group.\r\n

Required permission(s):

Rentals > Rental properties and units or - `View` `Edit`\r\n Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiPropertyGroups_CreatePropertyGroup", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PropertyGroupPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PropertyGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/propertygroups/{propertyGroupId}": { "get": { "tags": [ "Property Groups" ], "summary": "Retrieve a property group", "description": "Retrieves a property group.\r\n

Required permission(s):

Rentals > Rental properties and units or - `View`\r\n Associations > Associations and units - `View`", "operationId": "ExternalApiPropertyGroups_GetPropertyGroupById", "parameters": [ { "name": "propertyGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PropertyGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Property Groups" ], "summary": "Update a property group", "description": "Updates a property group.\r\n

Required permission(s):

Rentals > Rental properties and units or - `View` `Edit`\r\n Associations > Associations and units - `View` `Edit`", "operationId": "ExternalApiPropertyGroups_UpdatePropertyGroup", "parameters": [ { "name": "propertyGroupId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PropertyGroupPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PropertyGroupMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/amenities": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve all amenities", "description": "Retrieve all the amenities for a rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalFeatures_GetFeaturesByRentalPropertyId", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalFeaturesMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Properties" ], "summary": "Update amenities", "description": "Updates the amenities for a rental property.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalFeatures_UpdateRentalFeatures", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalFeaturesPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalFeaturesMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/epaysettings": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve ePay settings", "description": "Retrieves ePay settings for a rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalEpaySettings_GetEPaySettingsForRentalProperty", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Properties" ], "summary": "Update ePay settings", "description": "Updates ePay settings for a rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalEpaySettings_UpdateEPaySettingsForRental", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/EPaySettingsPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve all property images", "description": "Retrieves all images for a rental property. Note this endpoint will only return file metadata such as file names and descriptions. To download files make requests to the [Download File](#tag/Rental-Properties/operation/ExternalApiRentalImageDownloadRequests_GetRentalImageDownloadUrlById) endpoint.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalImages_GetRentalImages", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalImageMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images/{imageId}": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve a property image", "description": "Retrieves a rental property image.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalImages_GetRentalImageById", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Properties" ], "summary": "Update a property image", "description": "Updates a rental property image.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalImages_UpdateRentalImage", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalImagePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Rental Properties" ], "summary": "Delete a property image", "description": "Deletes a rental property image.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit` `Delete`", "operationId": "ExternalApiRentalImages_DeleteRentalImage", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images/{imageId}/downloadrequests": { "post": { "tags": [ "Rental Properties" ], "summary": "Download a property image", "description": "Use this endpoint to create a temporary URL that can be used to download a property image. This URL expires after 5 minutes.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalImageDownloadRequests_GetRentalImageDownloadUrlById", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images/order": { "put": { "tags": [ "Rental Properties" ], "summary": "Update property image order", "description": "Updates the image display order within the Buildium web application and in any associated rental listings.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalImageOrder_ReorderRentalImages", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ImageReorderRequestPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalImageMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images/uploadrequests": { "post": { "tags": [ "Rental Properties" ], "summary": "Upload a rental image", "description": "Uploads an image and associates it to the specified rental record.\r\n

Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\n The first step in the file upload process is to submit the file metadata to `/v1/rentals/{rentalId}/images/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\n Uploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n 1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n 2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n 3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n 4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n 5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "CreateRentalImageUploadFileRequestAsync", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ListingEntityFilePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/images/videolinkrequests": { "post": { "tags": [ "Rental Properties" ], "summary": "Create an image for a rental using a video link", "description": "Creates an image for a rental using a video link.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalImageVideoLinkRequests_CreateVideoLinkRequest", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/VideoLinkRequestPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/meterreadings": { "get": { "tags": [ "Rental Meter Readings" ], "summary": "Retrieve all meter readings", "description": "Retrieves all meter readings for a rental property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalMeterReadingsRead_GetMeterReadingsForRental", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdatefrom", "in": "query", "description": "Filters results to any meter readings whose entry date that is greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "readingdateto", "in": "query", "description": "Filters results to any meter readings whose entry date is less than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertypes", "in": "query", "description": "Filters results to the specified meter types.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MeterReadingMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/meterreadings/summary": { "get": { "tags": [ "Rental Meter Readings" ], "summary": "Retrieve all meter reading details", "description": "Retrieves all meter reading details for a property.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalMeterReadingDetails_GetMeterReadingDetailsForRentalAsync", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": true, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Meter Readings" ], "summary": "Create/Update meter reading details", "description": "This endpoint can be used to both create and update a meter reading detail for a property.\r\n


Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalMeterReadingDetailsUpsert_UpsertMeterReadingDetailsForRentalAsync", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": false, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "requestBody": { "$ref": "#/components/requestBodies/MeterReadingDetailsPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "409": { "description": "There is a request conflict with the current state of the target resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Rental Meter Readings" ], "summary": "Delete meter reading details for a given date", "description": "Delete meter reading details for a property for a given date.\r\n

Required permission(s):

Rentals > Lease Transactions - `View` `Edit` `Delete`", "operationId": "ExternalApiRentalDeleteMeterReadingDetails_DeleteMeterReadingDetailsForRental", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "readingdate", "in": "query", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "metertype", "in": "query", "description": "Filters results to the specified meter type.", "required": true, "schema": { "type": "string", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ] } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/notes": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve all notes", "description": "Retrieves all notes.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalNotes_GetRentalNotes", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Properties" ], "summary": "Create a note", "description": "Creates a note.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalNotes_CreateRentalPropertyNote", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/{propertyId}/notes/{noteId}": { "get": { "tags": [ "Rental Properties" ], "summary": "Retrieve a note", "description": "Retrieves a note.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalNotes_GetRentalNoteByNoteId", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Properties" ], "summary": "Update a note", "description": "Updates a note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalNotes_UpdateRentalPropertyNote", "parameters": [ { "name": "propertyId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/appliances": { "get": { "tags": [ "Rental Appliances" ], "summary": "Retrieve all appliances", "description": "Retrieves all rental appliances.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalAppliances_GetRentalAppliances", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to appliances associated to any of the specified rental property identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "unitids", "in": "query", "description": "Filters results to appliances associated to any of the specified rental unit identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalApplianceMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Appliances" ], "summary": "Create an appliance", "description": "Creates a rental property appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalAppliances_CreateRentalAppliance", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalAppliancePostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/appliances/{applianceId}": { "get": { "tags": [ "Rental Appliances" ], "summary": "Retrieve an appliance", "description": "Retrieves a rental appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalAppliances_GetRentalApplianceById", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Appliances" ], "summary": "Update an appliance", "description": "Updates a rental appliance.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalAppliances_UpdateRentalAppliance", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalAppliancePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Rental Appliances" ], "summary": "Delete an appliance", "description": "Deletes an appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalAppliances_DeleteRentalAppliances", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/appliances/{applianceId}/servicehistory": { "get": { "tags": [ "Rental Appliances" ], "summary": "Retrieve all service history", "description": "Retrieves all of the service history records for an appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalApplianceServiceHistory_GetRentalApplianceServiceHistory", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalApplianceServiceHistoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Appliances" ], "summary": "Create a service history", "description": "Creates a service history record for an appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalApplianceServiceHistory_CreateRentalApplianceServiceHistory", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceServiceHistoryPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceServiceHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/appliances/{applianceId}/servicehistory/{serviceHistoryId}": { "get": { "tags": [ "Rental Appliances" ], "summary": "Retrieve a service history", "description": "Retrieves a specific service history record for a given appliance.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalApplianceServiceHistory_GetRentalApplianceServiceHistoryById", "parameters": [ { "name": "applianceId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "serviceHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalApplianceServiceHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/owners": { "get": { "tags": [ "Rental Owners" ], "summary": "Retrieve all owners", "description": "Retrieves a list of rental owners.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View`", "operationId": "ExternalApiRentalOwners_GetRentalOwners", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to any lease whose unit belongs to the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "status", "in": "query", "description": "Filters results by the status of the user. If no status is specified both `active` and `inactive` users will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Inactive", "Active" ] } }, { "name": "agreementdaysremaining", "in": "query", "description": "Filters results by the days remaining on their lease agreement.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "ownername", "in": "query", "description": "Filters results to any owner whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "phone", "in": "query", "description": "Filters results to any owner who has a phone number that *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any rental owners that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any rental owners that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalOwnerMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Owners" ], "summary": "Create an owner", "description": "Creates a rental owner.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View` `Edit`", "operationId": "ExternalApiRentalOwners_CreateRentalOwner", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/owners/{rentalOwnerId}": { "get": { "tags": [ "Rental Owners" ], "summary": "Retrieve an owner", "description": "Retrieves a specific rental owner.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View`", "operationId": "ExternalApiRentalOwners_GetRentalOwnerById", "parameters": [ { "name": "rentalOwnerId", "in": "path", "description": "The rental owner identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Owners" ], "summary": "Update an owner", "description": "Updates a rental owner.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View` `Edit`", "operationId": "ExternalApiRentalOwners_UpdateRentalOwner", "parameters": [ { "name": "rentalOwnerId", "in": "path", "description": "The identifier of the rental owner to update.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/owners/{rentalOwnerId}/notes": { "get": { "tags": [ "Rental Owners" ], "summary": "Retrieves all notes", "description": "Retrieves all rental owner notes.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View`", "operationId": "ExternalApiRentalOwnerNotes_GetRentalOwnerNotes", "parameters": [ { "name": "rentalOwnerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Owners" ], "summary": "Create a note", "description": "Creates a new Rental Owner note.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View` `Edit`", "operationId": "ExternalApiRentalOwnerNotes_CreateRentalOwnerNote", "parameters": [ { "name": "rentalOwnerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/owners/{rentalOwnerId}/notes/{noteId}": { "get": { "tags": [ "Rental Owners" ], "summary": "Retrieve a note", "description": "Retrieves a rental owner note.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View`", "operationId": "ExternalApiRentalOwnerNotes_GetRentalOwnerNoteById", "parameters": [ { "name": "rentalOwnerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Owners" ], "summary": "Update a note", "description": "Updates a Rental Owner note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Property Rental Owners - `View` `Edit`", "operationId": "ExternalApiRentalOwnerNotes_UpdateRentalOwnerNote", "parameters": [ { "name": "rentalOwnerId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve all units", "description": "Retrieves a list of rental property units.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnits_GetAllRentalUnits", "parameters": [ { "name": "propertyids", "in": "query", "description": "Filters results to rental units that belong to the specified set of property ids.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any rental units that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any rental units that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalUnitMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Units" ], "summary": "Create a unit", "description": "Creates a rental unit.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnits_CreateRentalUnit", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitsPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve a unit", "description": "Retrieves a specific rental property unit.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnits_GetRentalUnitById", "parameters": [ { "name": "unitId", "in": "path", "description": "The rental unit identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Units" ], "summary": "Update a unit", "description": "Updates a rental unit.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnits_UpdateRentalUnit", "parameters": [ { "name": "unitId", "in": "path", "description": "The identifier of the unit to update.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/amenities": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve all amenities", "description": "Retrieves all amenities for a rental unit.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitAmenities_GetFeaturesForRentalUnitById", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitFeaturesMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Units" ], "summary": "Update amenities", "description": "Updates the amenities for a rental unit.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitAmenities_UpdateRentalUnitFeatures", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitFeaturesPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitFeaturesMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve all unit images", "description": "Retrieves all images for a unit. Note this endpoint will only return file metadata such as file names and descriptions. To download files make requests to the [Download File](#tag/Rental-Units/operation/ExternalApiRentalUnitImageDownloadRequests_GetRentalUnitImageDownloadUrlById) endpoint.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitImages_GetRentalUnitImages", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalUnitImageMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images/{imageId}": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve a unit image", "description": "Retrieves a unit image.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitImages_GetRentalUnitImageById", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Units" ], "summary": "Update a unit image", "description": "Updates a unit image.\r\n

Required permission(s):

Rentals > Properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitImages_UpdateRentalUnitImage", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitImagePutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Rental Units" ], "summary": "Delete a unit image", "description": "Deletes a unit image.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit` `Delete`", "operationId": "ExternalApiRentalUnitImages_DeleteRentalUnitImage", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images/{imageId}/downloadrequests": { "post": { "tags": [ "Rental Units" ], "summary": "Download a unit image", "description": "Use this endpoint to create a temporary URL that can be used to download a unit image. This URL expires after 5 minutes.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitImageDownloadRequests_GetRentalUnitImageDownloadUrlById", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "imageId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images/order": { "put": { "tags": [ "Rental Units" ], "summary": "Update unit image order", "description": "Updates the image display order within the Buildium web application and in any associated rental listings.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitImageOrder_ReorderRentalUnitImages", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ImageReorderRequestPutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalUnitImageMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images/uploadrequests": { "post": { "tags": [ "Rental Units" ], "summary": "Upload a unit image", "description": "Uploads an image and associates it to the specified unit record.\r\n

Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\n The first step in the file upload process is to submit the file metadata to `/v1/rentals/units/{unitId:int}/images/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\n Uploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n 1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n 2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n 3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n 4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n 5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "CreateRentalUnitImageUploadFileRequestAsync", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/ListingEntityFilePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/images/videolinkrequests": { "post": { "tags": [ "Rental Units" ], "summary": "Create an image for a unit using a video link", "description": "Creates an image for a rental unit using a video link.\r\n

Required permission(s):

Rentals > Properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitImageVideoLinkRequests_CreateUnitVideoLinkRequest", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/VideoLinkRequestPostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalUnitImageMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/notes": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve all notes", "description": "Retrieves all rental unit notes.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitNotes_GetRentalUnitNotes", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Units" ], "summary": "Create a note", "description": "Creates a rental unit note.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitNotes_CreateRentalUnitNote", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/rentals/units/{unitId}/notes/{noteId}": { "get": { "tags": [ "Rental Units" ], "summary": "Retrieve a note", "description": "Retrieves a rental unit note.\r\n

Required permission(s):

Rentals > Rental properties and units - `View`", "operationId": "ExternalApiRentalUnitNotes_GetRentalUnitNoteByNoteId", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Units" ], "summary": "Update a note", "description": "Updates a rental unit note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Rentals > Rental properties and units - `View` `Edit`", "operationId": "ExternalApiRentalUnitNotes_UpdateNoteForRentalUnit", "parameters": [ { "name": "unitId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/residentCenterUsers": { "get": { "tags": [ "Resident Center" ], "summary": "Retrieve all resident center users", "description": "Retrieves all resident center users for both rentals and associations.\r\n

Required permission(s):

Communications > Resident Center Users - `View`\r\n
Rentals > Tenants - `View` is required to retrieve resident center users that are tenants.\r\n
Associations > Association owners and tenants - `View` is required to retrieve resident center users that are association owners.", "operationId": "ExternalApiResidentCenterUsers_GetResidentCenterUsers", "parameters": [ { "name": "unitagreementids", "in": "query", "description": "Filters results to any resident center user who is associated with the specified lease and/or association ownership account identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "userids", "in": "query", "description": "Filters results to any resident center user with the specified tenant and/or association owner identifiers.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "usertypes", "in": "query", "description": "Filters results to any resident center user with the specified types.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Tenant", "AssociationOwner" ] } } }, { "name": "residentcenteruserstatuses", "in": "query", "description": "Filters results to any resident center user with the specified resident center user statuses.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "AccountExistsButNoEmailSent", "PasswordSent", "EmailFailed", "SignedIn", "Blocked" ] } } }, { "name": "isautopayenabled", "in": "query", "description": "If true, filters results to any resident center users who have automatic payments scheduled for the future. If false, filters results to any resident center users\r\nwho do not have automatic payments scheduled for the future. If not provided, will not filter results based on automatic payments.", "required": false, "schema": { "type": "boolean" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ResidentCenterUserMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/retailcashusers": { "get": { "tags": [ "Resident Center" ], "summary": "Retrieve all retail cash users", "description": "Retrieves all retail cash users.\r\n

Required permission(s):

Rentals > Tenants - `View`\r\n OR\r\n Associations > Association owners and tenants - `View`", "operationId": "ExternalApiRetailCashRead_GetRetailCashUsers", "parameters": [ { "name": "entityid", "in": "query", "description": "Filters results to any users associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is provided.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "statuses", "in": "query", "description": "Filters results to any users whose lease is in one of the provided statuses.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Active", "Past", "Future" ] } } }, { "name": "name", "in": "query", "description": "Filters results to any users whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "unitaddress", "in": "query", "description": "Filters results to any users whose unit address *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "isaccountcreated", "in": "query", "description": "Filters results to any users whose retail cash account is created.", "required": false, "schema": { "type": "boolean" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RetailCashUserMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/retailcashusers/{userId}/{unitAgreementId}": { "get": { "tags": [ "Resident Center" ], "summary": "Retrieve a retail cash user", "description": "Retrieves a retail cash user.\r\n

Required permission(s):

Rentals > Tenants - `View`\r\n OR\r\n Associations > Association owners and tenants - `View`", "operationId": "ExternalApiRetailCashRead_GetRetailCashUser", "parameters": [ { "name": "userId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitAgreementId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetailCashUserMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Resident Center" ], "summary": "Update a retail cash user", "description": "Updates a retail cash user.\r\n

Required permission(s):

Rentals > Tenants - `View` `Edit`\r\n OR\r\n Associations > Association owners and tenants - `View` `Edit`", "operationId": "ExternalApiRetailCashWrite_UpdateRetailCashUser", "parameters": [ { "name": "userId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitAgreementId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetailCashUserPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetailCashUserMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve all tasks", "description": "Retrieves a list of all task/request types (Contact, Owner, Resident and To Do). Note, the response payload only contains fields common across all of the request types. To retrieve the full details of the task query the retrieve endpoint specific to the task type.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTasks_GetAllTasks", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "type", "in": "query", "description": "Filters results to any task associated with the task type specified.", "required": false, "schema": { "type": "string", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ] } }, { "name": "unitid", "in": "query", "description": "Filters results to any task associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitagreementid", "in": "query", "description": "Filters results to any task associated with the unit agreement identifier specified.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any tasks with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "tasktitle", "in": "query", "description": "Filters results to any task whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AllTasksMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve a task", "description": "Retrieves a specific task. This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's. Note, the response payload only contains fields common across all of the request types. To retrieve the full details of the task query the retrieve endpoint specific to the task type.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTasks_GetTaskById", "parameters": [ { "name": "taskId", "in": "path", "description": "The task identifier", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllTasksMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve all task history", "description": "Retrieves all task history records for a specific task.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskHistory_GetTaskHistories", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaskHistoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history/{taskHistoryId}": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve a task history", "description": "Retrieves a specific task history record for a task.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskHistory_GetTaskHistoryById", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Tasks" ], "summary": "Update a task history", "description": "Updates a specific task history record for a task.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiTaskHistory_UpdateTaskHistory", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskHistoryPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskHistoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history/{taskHistoryId}/files": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve all task history files", "description": "Retrieves the metadata for all files associated with a task history record.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskHistoryFiles_GetAllTaskHistoryFiles", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaskHistoryFileMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history/{taskHistoryId}/files/{fileId}": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve a task history file", "description": "Retrieves the metadata for a specific file associated with a task history record.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskHistoryFiles_GetTaskHistoryFileById", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskHistoryFileMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "delete": { "tags": [ "Tasks" ], "summary": "Delete task history file", "description": "Deletes a specific file from a task history record. The file will be permanently deleted from the Buildium platform an can not be recovered.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit` `Delete`", "operationId": "ExternalApiTaskHistoryFiles_DeleteTaskHistoryFile", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "204": { "description": "OK - No Content." }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history/{taskHistoryId}/files/{fileId}/downloadrequest": { "post": { "tags": [ "Tasks" ], "summary": "Download a task history file", "description": "Downloads a specific file associated to the task history record.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskHistoryFileDownloads_GetFileDownloadRequest", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "fileId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileDownloadMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "503": { "description": "The file download service is currently unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/{taskId}/history/{taskHistoryId}/files/uploadrequests": { "post": { "tags": [ "Tasks" ], "summary": "Upload a task history file", "description": "Uploads a file and associates it to the specified task history record.\r\n

This endpoint can be used for any task type - contact requests, rental owner requests, resident requests or to do's.\r\n

Uploading a file requires making two API requests. Each step is outlined below.\r\n

Step 1 - Save file metadata
\r\nThe first step in the file upload process is to submit the file metadata to `/v1/tasks/{taskId}/history/{taskHistoryId}/files/uploadrequests`. The response of this call will contain a URL and a collection of form data that will be used in step 2 to generate the request for the file binary upload.\r\n

NOTE: The response data will expire after 5 minutes. The file metadata will not be saved in the Buildium system if step 2 of this process is not completed successfully.\r\n

Step 2 - Upload the file binary
\r\nUploading the file binary will require using the response from step 1 to form a POST request to the Buildium file provider. Follow these steps to create the request:\r\n
\r\n1. Form a POST request using the value of the `BucketUrl` property as the URL. \r\n

\r\n2. Set the `Content-Type` header to `multipart/form-data`.\r\n

\r\n3. Copy the fields from the `FormData` property to this request as form-data key/value pairs.\r\n
NOTE: These values must added to the request form-data in the order they were received in the response.\r\n

\r\n4. Lastly create a form-data key named `file` and set the value to the file binary.\r\n
NOTE: This must be the last field in the form-data list.\r\n

This image shows what the POST request should look like if you're using Postman:\r\n

\r\n5. Send the POST request! A successful request will return with a `204 - NO CONTENT` HTTP response code. For any failure responses, please refer to AWS documentation on REST error responses.\r\n

NOTE: The file identifier is not generated in this response. To retrieve the file identifier, call `/v1/files` and pass the `PhysicalFileName` value received from the response of this endpoint into the `physicalfilenames` query parameter.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "UploadTaskHistoryFileRequestAsync", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "taskHistoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskHistoryFileUploadPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadTicketMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/categories": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve all task categories", "description": "Retrieves a list of task categories.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskCategories_GetAllTaskCategories", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaskCategoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Tasks" ], "summary": "Create a task category", "description": "Create a task category.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiTaskCategories_CreateTaskCategory", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskCategorySaveMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/categories/{taskCategoryId}": { "get": { "tags": [ "Tasks" ], "summary": "Retrieve a task category", "description": "Retrieves a specific task category.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiTaskCategories_GetTaskCategoryById", "parameters": [ { "name": "taskCategoryId", "in": "path", "description": "The task category identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Tasks" ], "summary": "Update a task category", "description": "Updates a task category.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiTaskCategories_UpdateTaskCategory", "parameters": [ { "name": "taskCategoryId", "in": "path", "description": "The task category identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskCategoryPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/contactrequests": { "get": { "tags": [ "Contact Requests" ], "summary": "Retrieve all contact requests", "description": "Retrieves a list of contact requests.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiContactRequestTasks_GetContactRequestTasks", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "unitid", "in": "query", "description": "Filters results to any task associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any tasks with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "tasktitle", "in": "query", "description": "Filters results to any task whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContactRequestTaskMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Contact Requests" ], "summary": "Create a contact request", "description": "Creates a contact request.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiContactRequestTasks_CreateContactRequestTask", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactRequestTaskPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/contactrequests/{contactRequestTaskId}": { "get": { "tags": [ "Contact Requests" ], "summary": "Retrieve a contact request", "description": "Retrieves a contact request.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiContactRequestTasks_GetContactRequestTaskById", "parameters": [ { "name": "contactRequestTaskId", "in": "path", "description": "The contact request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Contact Requests" ], "summary": "Update a contact request", "description": "Updates a contact request.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiContactRequestTasks_UpdateContactRequestTask", "parameters": [ { "name": "contactRequestTaskId", "in": "path", "description": "The contact request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactRequestTaskPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/rentalownerrequests": { "get": { "tags": [ "Rental Owner Requests" ], "summary": "Retrieve all rental owner requests", "description": "Retrieves all rental owner requests.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiRentalOwnerRequestTasks_GetAllRentalOwnerRequestTasks", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "unitid", "in": "query", "description": "Filters results to any task associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any tasks with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "tasktitle", "in": "query", "description": "Filters results to any task whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RentalOwnerRequestTaskMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Rental Owner Requests" ], "summary": "Create a rental owner request", "description": "Creates a rental owner request.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiRentalOwnerRequestTasks_CreateRentalOwnerRequestTask", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerRequestTaskPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/rentalownerrequests/{rentalOwnerRequestTaskId}": { "get": { "tags": [ "Rental Owner Requests" ], "summary": "Retrieve a rental owner request", "description": "Retrieves a specific rental owner request.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiRentalOwnerRequestTasks_GetRentalOwnerRequestTaskById", "parameters": [ { "name": "rentalOwnerRequestTaskId", "in": "path", "description": "The rental owner request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Owner Requests" ], "summary": "Update a rental owner request", "description": "Updates a rental owner request.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiRentalOwnerRequestTasks_UpdateRentalOwnerRequestTask", "parameters": [ { "name": "rentalOwnerRequestTaskId", "in": "path", "description": "The rental owner request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerRequestTaskPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/rentalownerrequests/{rentalOwnerRequestTaskId}/contributiondata": { "get": { "tags": [ "Rental Owner Requests" ], "summary": "Retrieve rental owner contribution request", "description": "Retrieves the contribution details for a rental owner contribution request.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiRentalOwnerRequestTasks_GetRentalOwnerRequestTaskContributionData", "parameters": [ { "name": "rentalOwnerRequestTaskId", "in": "path", "description": "The rental owner request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerContributionDataMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Rental Owner Requests" ], "summary": "Update a rental owner contribution request", "description": "Updates the contribution details for a rental owner contribution request.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiRentalOwnerRequestTasks_UpdateRentalOwnerRequestTaskContributionData", "parameters": [ { "name": "rentalOwnerRequestTaskId", "in": "path", "description": "The rental owner request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerContributionDataPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RentalOwnerContributionDataMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/residentrequests": { "get": { "tags": [ "Resident Requests" ], "summary": "Retrieve all resident requests", "description": "Retrieves a list of resident requests.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiResidentRequestTasks_GetResidentRequestTasks", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "unitid", "in": "query", "description": "Filters results to any task associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitagreementid", "in": "query", "description": "Filters results to any task associated with the unit agreement identifier specified.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any tasks with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "tasktitle", "in": "query", "description": "Filters results to any task whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ResidentRequestTaskMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Resident Requests" ], "summary": "Create a resident request", "description": "Creates a resident request.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiResidentRequestTasks_CreateResource", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResidentRequestTaskPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResidentRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/residentrequests/{residentRequestTaskId}": { "get": { "tags": [ "Resident Requests" ], "summary": "Retrieve a resident request", "description": "Retrieves a specific resident request.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiResidentRequestTasks_GetResidentRequestTask", "parameters": [ { "name": "residentRequestTaskId", "in": "path", "description": "The resident request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResidentRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Resident Requests" ], "summary": "Update a resident request", "description": "Update a resident request.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiResidentRequestTasks_UpdateResource", "parameters": [ { "name": "residentRequestTaskId", "in": "path", "description": "The resident request identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResidentRequestTaskPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResidentRequestTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/todorequests": { "get": { "tags": [ "To Do Requests" ], "summary": "Retrieve all to do requests", "description": "Retrieves a list of to do tasks.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiToDoTasks_GetToDoTasks", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "unitid", "in": "query", "description": "Filters results to any task associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any tasks with the specified category identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "tasktitle", "in": "query", "description": "Filters results to any task whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ToDoTaskMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "To Do Requests" ], "summary": "Create a to do request", "description": "Creates a to do task.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiToDoTasks_CreateToDoTask", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoTaskPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/tasks/todorequests/{toDoTaskId}": { "get": { "tags": [ "To Do Requests" ], "summary": "Retrieve a to do request", "description": "Retrieves a to do task.\r\n

Required permission(s):

Tasks > Tasks - `View`", "operationId": "ExternalApiToDoTasks_GetToDoTaskById", "parameters": [ { "name": "toDoTaskId", "in": "path", "description": "The to do task identifier", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "To Do Requests" ], "summary": "Update a to do request", "description": "Updates a to do task\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Tasks > Tasks - `View` `Edit`", "operationId": "ExternalApiToDoTasks_UpdateToDoTask", "parameters": [ { "name": "toDoTaskId", "in": "path", "description": "The to do task identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoTaskPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToDoTaskMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve all vendors", "description": "Retrieves a list of vendors.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendors_GetAllVendors", "parameters": [ { "name": "status", "in": "query", "description": "Filters results by the status of the vendor. If no status is specified both `active` and `inactive` vendors will be returned.", "required": false, "schema": { "type": "string", "enum": [ "Inactive", "Active" ] } }, { "name": "email", "in": "query", "description": "Filters results to any vendor whose email *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "website", "in": "query", "description": "Filters results to any vendor whose website *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "name", "in": "query", "description": "Filters results to any vendor whose name *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "insuranceexpiration", "in": "query", "description": "Filters results to any vendor whose insurance will expire in the specified date range.", "required": false, "schema": { "type": "string", "enum": [ "None", "Any", "Expired", "ThirtyDaysOrLess", "SixtyDaysOrLess", "NinetyDaysOrLess" ] } }, { "name": "phone", "in": "query", "description": "Filters results to any vendor who has a phone number that *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any vendors that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any vendors that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VendorMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Vendors" ], "summary": "Create a vendor", "description": "Creates a vendor.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendors_CreateVendor", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve a vendor", "description": "Retrieve a specific vendor.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendors_GetVendorById", "parameters": [ { "name": "vendorId", "in": "path", "description": "The vendor identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Vendors" ], "summary": "Update a vendor", "description": "Updates a vendor.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendors_UpdateVendor", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/credits": { "post": { "tags": [ "Vendors" ], "summary": "Create a credit", "description": "Creates a credit.\r\n

Required permission(s):

Accounting > Bills - `View` `Edit`", "operationId": "ExternalApiVendorCreditsWrite_CreateVendorCredit", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCreditPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/credits/{vendorCreditId}": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve a credit", "description": "Retrieves a credit.\r\n

Required permission(s):

Accounting > Bills - `View`", "operationId": "ExternalApiVendorCredits_GetVendorCredit", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "vendorCreditId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/notes": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve all notes", "description": "Retrieves all vendor notes.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendorNotes_GetVendorNotes", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "updateddatetimefrom", "in": "query", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "updateddatetimeto", "in": "query", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "lastupdatedbyuserid", "in": "query", "description": "Filters results to only notes that were last updated by the specified user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NoteMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Vendors" ], "summary": "Create a note", "description": "Creates a vendor note.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendorNotes_CreateVendorNote", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePostMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/notes/{noteId}": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve a note", "description": "Retrieves a vendor note.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendorNotes_GetVendorNoteByNoteId", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Vendors" ], "summary": "Update a note", "description": "Updates a vendor note.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendorNotes_UpdateVendorNote", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "noteId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/NotePutMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoteMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/refunds": { "post": { "tags": [ "Vendors" ], "summary": "Create a refund", "description": "Creates a refund.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`\r\n Accounting > Bank Accounts - `View`", "operationId": "ExternalApiVendorRefundsWrite_CreateVendorRefund", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorRefundPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorRefundMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/refunds/{vendorRefundId}": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve a refund", "description": "Retrieves a refund.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendorRefunds_GetVendorRefund", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "vendorRefundId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCreditMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/{vendorId}/transactions": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve all transactions", "description": "Retrieves all transactions for a given vendor.\r\n

Required permission(s):

Maintenance > Vendors - `View`\r\n
Accounting > General Ledger Transactions - `View`", "operationId": "ExternalApiVendorTransactions_GetAllVendorTransactions", "parameters": [ { "name": "vendorId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } }, { "name": "transactiondatefrom", "in": "query", "description": "Filters results to any vendor transaction whose entry date that is greater than or equal to the specified value. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "transactiondateto", "in": "query", "description": "Filters results to any vendor transaction whose entry date is less than or equal to the specified value. The maximum date range is 365 days.", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "transactiontypes", "in": "query", "description": "Filters results to any vendor transaction whose vendor transaction type matches the specified status. If no type is specified, vendor transactions with any type will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ] } } }, { "name": "referencenumber", "in": "query", "description": "Filters results to vendor transaction whose reference number contains the specified value. The reference number cannot exceed 40 characters.", "required": false, "schema": { "type": "string" } }, { "name": "memo", "in": "query", "description": "Filters results to vendor transaction whose memo contains the specified value. The memo cannot exceed 40 characters.", "required": false, "schema": { "type": "string" } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VendorTransactionMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/categories": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve all vendor categories", "description": "Retrieves a list of vendor categories.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendorCategories_GetAllVendorCategories", "parameters": [ { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/VendorCategoryMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Vendors" ], "summary": "Create a vendor category", "description": "Creates a vendor category.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendorCategories_CreateVendorCategory", "requestBody": { "$ref": "#/components/requestBodies/VendorCategorySaveMessage" }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/vendors/categories/{vendorCategoryId}": { "get": { "tags": [ "Vendors" ], "summary": "Retrieve a vendor category", "description": "Retrieves a specific vendor category.\r\n

Required permission(s):

Maintenance > Vendors - `View`", "operationId": "ExternalApiVendorCategories_GetVendorCategoryById", "parameters": [ { "name": "vendorCategoryId", "in": "path", "description": "The vendor category identifier.", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Vendors" ], "summary": "Update a vendor category", "description": "Updates a vendor category.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Maintenance > Vendors - `View` `Edit`", "operationId": "ExternalApiVendorCategories_UpdateVendorCategory", "parameters": [ { "name": "vendorCategoryId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "$ref": "#/components/requestBodies/VendorCategorySaveMessage" }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCategoryMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/workorders": { "get": { "tags": [ "Work Orders" ], "summary": "Retrieve all work orders", "description": "Retrieves a list of work orders.\r\n

Required permission(s):

Maintenance > Work Orders - `View`", "operationId": "ExternalApiWorkOrders_GetAllWorkOrders", "parameters": [ { "name": "entitytype", "in": "query", "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "required": false, "schema": { "type": "string", "enum": [ "Rental", "RentalOwner", "Association" ] } }, { "name": "entityid", "in": "query", "description": "Filters results to any work order associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "statuses", "in": "query", "description": "Filters results by the status of the task associated with the work order. If no status is specified, work orders with any status will be returned.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ] } } }, { "name": "type", "in": "query", "description": "Filters results to any work order with an associated task with the task type specified.", "required": false, "schema": { "type": "string", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ] } }, { "name": "unitid", "in": "query", "description": "Filters results to any work order associated with the unit identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "unitagreementid", "in": "query", "description": "Filters results to any work order associated with the unit agreement identifier specified.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "lastupdatedfrom", "in": "query", "description": "Filters results to any work orders were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "lastupdatedto", "in": "query", "description": "Filters results to any work orders were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedatefrom", "in": "query", "description": "Filters results to any work orders with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "duedateto", "in": "query", "description": "Filters results to any work orders with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "required": false, "schema": { "type": "string", "format": "date" } }, { "name": "taskcategoryid", "in": "query", "description": "Filters results to any work orders whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "priorities", "in": "query", "description": "Filters results to any work orders that have been assigned to the specified staff user identifier.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "string", "enum": [ "Low", "Normal", "High" ] } } }, { "name": "assignedtoid", "in": "query", "description": "Filters results to any work orders that have been assigned to the specified staff user identifier.", "required": false, "schema": { "type": "integer", "format": "int32" } }, { "name": "vendorids", "in": "query", "description": "Filters results to any work orders that have been assigned to the specified vendor identifier.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "amountfrom", "in": "query", "description": "Filters results to any work orders whose total amounts are equal or greater than the specified amount.", "required": false, "schema": { "type": "number", "format": "double" } }, { "name": "amountto", "in": "query", "description": "Filters results to any work orders whose total amounts are equal or less than the specified amount.", "required": false, "schema": { "type": "number", "format": "double" } }, { "name": "isbilled", "in": "query", "description": "Filters results to work orders that have an associated bill.", "required": false, "schema": { "type": "boolean" } }, { "name": "title", "in": "query", "description": "Filters results to any work orders whose title *contains* the specified value.", "required": false, "schema": { "type": "string" } }, { "name": "taskids", "in": "query", "description": "Filters results to work orders that have an associated to a task in the specified list.", "required": false, "explode": true, "schema": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, { "name": "orderby", "in": "query", "description": "`orderby` indicates the field(s) and direction to sort the results in the response. See Bulk Request Options for more information.", "required": false, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "`offset` indicates the position of the first record to return. The `offset` is zero-based and the default is 0.", "required": false, "schema": { "type": "integer" } }, { "name": "limit", "in": "query", "description": "`limit` indicates the maximum number of results to be returned in the response. `limit` can range between 1 and 1000 and the default is 50.", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "headers": { "X-Total-Count": { "description": "The total number of records available in the overall result set of the request.", "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkOrderMessage" } } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "post": { "tags": [ "Work Orders" ], "summary": "Create a work order", "description": "Creates a work order.\r\n

Required permission(s):

Maintenance > Work Orders - `View` `Edit`", "operationId": "ExternalApiWorkOrders_CreateWorkOrder", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkOrderPostMessage" } } }, "required": true }, "responses": { "201": { "description": "Created", "headers": { "Location": { "description": "The location to retrieve the created resource.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkOrderMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/v1/workorders/{workOrderId}": { "get": { "tags": [ "Work Orders" ], "summary": "Retrieve a work order", "description": "Retrieves a specific work order.\r\n

Required permission(s):

Maintenance > Work Orders - `View`", "operationId": "ExternalApiWorkOrders_GetWorkOrderById", "parameters": [ { "name": "workOrderId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkOrderMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } }, "put": { "tags": [ "Work Orders" ], "summary": "Update a work order", "description": "Updates a work order.\r\n

NOTE: Any field not included in the update request will be set to either an empty string or `null` in the database depending on the field definition.
The recommended workflow to ensure no data is inadvertently overwritten is to execute a `GET` request for the resource you're about to update and then use this response to fill any of the fields that are not being updated.\r\n

Required permission(s):

Maintenance > Work Orders - `View` `Edit`", "operationId": "ExternalApiWorkOrders_UpdateWorkOrder", "parameters": [ { "name": "workOrderId", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkOrderPutMessage" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkOrderMessage" } } } }, "400": { "description": "Unable to process the request due to malformed request syntax or invalid parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "The API key couldn't be authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "403": { "description": "The supplied credentials don't have permissions to access the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "404": { "description": "Resource not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "415": { "description": "The Content-Type header on the request is missing or contains an unsupported value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "The request data could not be used to fulfill the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } } }, "tags": [ { "name": "Bank Accounts", "description": "Bank account resources provide access to bank accounts." }, { "name": "Bills", "description": "Billing related resources." }, { "name": "Budgets", "description": "A budget is a tool to plan upcoming income and expenses. The Buildium platform allows you to manage budgets for all rental and association properties." }, { "name": "General Ledger", "description": "The General ledger tracks all debits and credits for every financial transaction over a period of time." }, { "name": "Associations", "description": "Association property resources providing access to associations and association notes." }, { "name": "Association Units", "description": "Association unit resources providing access to units and unit notes." }, { "name": "Appliances", "description": "Association appliance resources providing access to appliances and appliance history." }, { "name": "Association Owners", "description": "Association owners resources providing access to owners and owner notes." }, { "name": "Ownership Accounts", "description": "Association ownership account resources providing access to ownership accounts and ownership account notes." }, { "name": "Ownership Account Transactions", "description": "Ownership account transaction resources that allow for recording both one-time and recurring transactions such as charges, payments and credits on the ownership account ledger." }, { "name": "Association Tenants", "description": "Association tenants resources providing access to tenants and tenant notes." }, { "name": "Board Members", "description": "Board members make up a governing body that runs the association's affairs. In Buildium board members must be an [Association Owner](#tag/Association-Owners)." }, { "name": "Rental Properties", "description": "Rental property resources providing access to properties and property notes." }, { "name": "Rental Units", "description": "Rental property unit resources providing access to units and unit notes." }, { "name": "Rental Appliances", "description": "Rental property appliance resources providing access to appliances and appliance history." }, { "name": "Rental Owners", "description": "Rental property owner resources providing access to owners and owner notes." }, { "name": "Rental Tenants", "description": "Rental tenant resources providing access to tenant and tenant notes." }, { "name": "Leases", "description": "Lease resources providing access to rental property leases." }, { "name": "Lease Transactions", "description": "Lease transaction resources that allow for recording both one-time and recurring transactions such as charges, payments and credits on the lease ledger." }, { "name": "Listings", "description": "Rental listing resources providing access to rental listings and listing contacts." }, { "name": "Applicants", "description": "Rental applicant resources providing access to applicants, applications, applicant groups and applicant group notes." }, { "name": "Resident Center", "description": "Every Buildium account comes with a free Resident Center, which is also known as the resident portal. The Resident Center allows your residents to view their financial transactions, submit maintenance requests, and make payments online." }, { "name": "Tasks", "description": "In Buildium, tasks are anything that a staff member needs to do.

Adding a task is like adding another item to a to-do list.

Some tasks, like maintenance work, are requested by residents or owners. Other tasks, like a walk-through inspection or an apartment showing, are going to be created by staff members." }, { "name": "Contact Requests", "description": "Contact requests are created by a visitor to your public website, and is typically a task that requires you to follow up with someone by phone, text or email." }, { "name": "Rental Owner Requests", "description": "Rental owner requests are created by a rental owner through the Buildium rental owner portal. These tasks can also be created by staff within the Buildium web application. When a rental owner request is created, a notification will automatically be sent to the owner to let them know that the task has been created." }, { "name": "Resident Requests", "description": "Resident requests are created by a tenant or association owner through the resident portal site. These tasks can be created by staff within the Buildium web application. When a resident request is created, a notification will automatically be sent to the resident to let them know that the task has been created." }, { "name": "To Do Requests", "description": "A to do request is a catchall for anything that has to get done. This task type is created by and can only be viewed by staff users." }, { "name": "Work Orders", "description": "" }, { "name": "Vendors", "description": "A vendor represents a person, business, or entity that provides goods and/or services. Vendor categories can be used to organize vendors making them easy to retrieve later." }, { "name": "Communications", "description": "Communications resources providing access to announcements and phone logs." }, { "name": "Files", "description": "Buildium offers file and document storage that allows you to upload a variety of content types. Files can be associated to specific entities in Buildium such as properties, units, leases, tenants and more.

Files can be assigned categories when they are uploaded in Buildium making them easier to find later on when you want to retrieve them." }, { "name": "Property Groups", "description": "A property group is a collection of associations and/or rental properties in Buildium. Property groups are typically used as filter criteria to define which properties to return in a query. Common uses include: grouping properties by a region or a business unit." }, { "name": "Administration", "description": "Administration resources that allow for user management and Buildium account level settings." }, { "name": "Client Leads", "description": "Client lead resources providing access to leads that come from All Property Management. These endpoints will only return data if your Buildium account is linked to an account in All Property Management. This data is not available in sandbox accounts." }, { "name": "Rental Meter Readings", "description": "Meter reading resources for units on rental properties." }, { "name": "Association Meter Readings", "description": "Meter reading resources for units on associations." } ], "x-tagGroups": [ { "name": "Accounting", "tags": [ "Bank Accounts", "Bills", "Budgets", "General Ledger" ] }, { "name": "Associations", "tags": [ "Associations", "Association Units", "Appliances", "Association Owners", "Ownership Accounts", "Ownership Account Transactions", "Association Tenants", "Board Members", "Association Meter Readings" ] }, { "name": "Rentals", "tags": [ "Rental Properties", "Rental Units", "Rental Appliances", "Rental Owners", "Rental Tenants", "Leases", "Lease Transactions", "Listings", "Applicants", "Rental Meter Readings" ] }, { "name": "Residents", "tags": [ "Resident Center" ] }, { "name": "Maintenance", "tags": [ "Tasks", "Contact Requests", "Rental Owner Requests", "Resident Requests", "To Do Requests", "Work Orders", "Vendors" ] }, { "name": "Communications", "tags": [ "Communications" ] }, { "name": "Files", "tags": [ "Files" ] }, { "name": "Property Groups", "tags": [ "Property Groups" ] }, { "name": "Administration", "tags": [ "Administration" ] }, { "name": "All Property Management", "tags": [ "Client Leads" ] } ], "servers": [ { "url": "https://api.buildium.com" } ], "components": { "securitySchemes": { "clientId": { "type": "apiKey", "in": "header", "name": "x-buildium-client-id" }, "clientSecret": { "type": "apiKey", "in": "header", "name": "x-buildium-client-secret" } }, "requestBodies": { "VendorCategorySaveMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VendorCategorySaveMessage" } } }, "required": true }, "PaymentRecurringTransactionPostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentRecurringTransactionPostMessage" } } }, "required": true }, "EPaySettingsPutMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EPaySettingsPutMessage" } } }, "required": true }, "ListingEntityFilePostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingEntityFilePostMessage" } } }, "required": true }, "BankAccountWithdrawalSaveMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountWithdrawalSaveMessage" } } }, "required": true }, "CreditRecurringTransactionPostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRecurringTransactionPostMessage" } } }, "required": true }, "MeterReadingDetailsPutMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeterReadingDetailsPutMessage" } } }, "required": true }, "ListingContactSaveMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListingContactSaveMessage" } } }, "required": true }, "NotePostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotePostMessage" } } }, "required": true }, "NotePutMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotePutMessage" } } }, "required": true }, "ChargeRecurringTransactionPostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChargeRecurringTransactionPostMessage" } } }, "required": true }, "FileNamePostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileNamePostMessage" } } }, "required": true }, "BankAccountQuickDepositSaveMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountQuickDepositSaveMessage" } } }, "required": true }, "BankAccountTransferSaveMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankAccountTransferSaveMessage" } } }, "required": true }, "ImageReorderRequestPutMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImageReorderRequestPutMessage" } } }, "required": true }, "VideoLinkRequestPostMessage": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VideoLinkRequestPostMessage" } } }, "required": true } }, "schemas": { "AccountInfoMessage": { "description": "This is an object that represents account info.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Account unique identifier.", "type": "integer" }, "CompanyName": { "description": "Account company name.", "type": "string" }, "Url": { "description": "Url for this account.", "type": "string" }, "Contact": { "$ref": "#/components/schemas/ContactInfoMessage" }, "AccountingSettings": { "$ref": "#/components/schemas/AccountingSettingsMessage" } } }, "AccountingEntityMessage": { "description": "An object that represents an accounting entity.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The accounting entity unique identifier.", "type": "integer" }, "AccountingEntityType": { "description": "The type of accounting entity.", "enum": [ "Association", "Rental", "Company" ], "type": "string" }, "Href": { "description": "A link to the accounting entity resource.", "type": "string" }, "Unit": { "$ref": "#/components/schemas/UnitEntityMessage" } } }, "AccountingEntitySaveMessage": { "description": "Object to represent an Accounting Entity", "required": [ "Id", "AccountingEntityType" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the accounting entity", "type": "integer" }, "AccountingEntityType": { "description": "The type of the accounting entity", "enum": [ "Association", "Rental", "Company" ], "type": "string" }, "UnitId": { "format": "int32", "description": "The unit unique identifier for the accounting entity.", "type": "integer" } } }, "AccountingLockPeriodMessage": { "description": "Accounting lock period settings.", "type": "object", "properties": { "Global": { "$ref": "#/components/schemas/LockPeriodSettingsGlobalMessage" }, "Overrides": { "description": "Settings overrides for specific properties.", "type": "array", "items": { "$ref": "#/components/schemas/LockPeriodSettingsOverridesMessage" } }, "FinancialAdministratorUserIds": { "description": "A collection of identifiers for users that have been designated financial administrators. These users will have permission to add, edit, and delete transactions during a locked period. This won't conflict with any property-level permissions for this account. By default, account administrators have permission to add, edit, and delete transactions within a locked period.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "AccountingSettingsMessage": { "type": "object", "properties": { "AccountingBookId": { "format": "int32", "description": "The accounting book entity unique identifier.", "type": "integer" }, "DefaultBankAccountId": { "format": "int32", "description": "The default bank account unique identifier.", "type": "integer" }, "DefaultAccountingBasis": { "description": "The default accounting basis.", "enum": [ "Accrual", "Cash" ], "type": "string" }, "TrustAccountWarning": { "description": "Indicates the type of trust account warnings are enable within the account, if any.", "enum": [ "Off", "ByProperty", "ByRentalOwner" ], "type": "string" }, "FiscalYearEndMonth": { "format": "int32", "description": "The month the fiscal year ends.", "type": "integer" }, "FiscalYearEndDay": { "format": "int32", "description": "The day the fiscal year ends.", "type": "integer" } } }, "AddressMessage": { "description": "Address.", "type": "object", "properties": { "AddressLine1": { "description": "Address line 1 (e.g., street, PO Box, or company name).", "type": "string" }, "AddressLine2": { "description": "Address line 2 (e.g., apartment, suite, unit, or building).", "type": "string" }, "AddressLine3": { "description": "Address line 3", "type": "string" }, "City": { "description": "City, district, suburb, town, or village.", "type": "string" }, "State": { "description": "State, county, province, or region.", "type": "string" }, "PostalCode": { "description": "ZIP or postal code.", "type": "string" }, "Country": { "description": "Country.", "enum": [ "UnitedStates", "Afghanistan", "Akrotiri", "Albania", "Algeria", "AmericanSamoa", "Andorra", "Angola", "Anguilla", "Antarctica", "AntiguaandBarbuda", "Argentina", "Armenia", "Aruba", "AshmoreandCartierIslands", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "BassasdaIndia", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "BosniaandHerzegovina", "Botswana", "BouvetIsland", "Brazil", "BritishIndianOceanTerritory", "BritishVirginIslands", "Brunei", "Bulgaria", "BurkinaFaso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "CapeVerde", "CaymanIslands", "CentralAfricanRepublic", "Chad", "Chile", "China", "ChristmasIsland", "ClippertonIsland", "CocosIslands", "Colombia", "Comoros", "DemocraticRepublicOfTheCongo", "RepublicOfTheCongo", "CookIslands", "CoralSeaIslands", "CostaRica", "CotedIvoire", "Croatia", "Cuba", "Cyprus", "CzechRepublic", "Denmark", "Dhekelia", "Djibouti", "Dominica", "DominicanRepublic", "Ecuador", "Egypt", "ElSalvador", "EquatorialGuinea", "Eritrea", "Estonia", "Ethiopia", "EuropaIsland", "FalklandIslands", "FaroeIslands", "Fiji", "Finland", "France", "FrenchGuiana", "FrenchPolynesia", "FrenchSouthernandAntarcticLands", "Gabon", "Gambia", "GazaStrip", "Georgia", "Germany", "Ghana", "Gibraltar", "GloriosoIslands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "GuineaBissau", "Guyana", "Haiti", "HeardIslandandMcDonaldIslands", "VaticanCity", "Honduras", "HongKong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "IsleofMan", "Israel", "Italy", "Jamaica", "JanMayen", "Japan", "Jersey", "Jordan", "JuandeNovaIsland", "Kazakhstan", "Kenya", "Kiribati", "NorthKorea", "SouthKorea", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "MarshallIslands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "NavassaIsland", "Nepal", "Netherlands", "NetherlandsAntilles", "NewCaledonia", "NewZealand", "Nicaragua", "Niger", "Nigeria", "Niue", "NorfolkIsland", "NorthernMarianaIslands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "PapuaNewGuinea", "ParacelIslands", "Paraguay", "Peru", "Philippines", "PitcairnIslands", "Poland", "Portugal", "PuertoRico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "SaintHelena", "SaintKittsandNevis", "SaintLucia", "SaintPierreandMiquelon", "SaintVincentandtheGrenadines", "Samoa", "SanMarino", "SaoTomeandPrincipe", "SaudiArabia", "Senegal", "SerbiaandMontenegro", "Seychelles", "SierraLeone", "Singapore", "Slovakia", "Slovenia", "SolomonIslands", "Somalia", "SouthAfrica", "SouthGeorgiaandtheSouthSandwichIslands", "Spain", "SpratlyIslands", "SriLanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "TimorLeste", "Togo", "Tokelau", "Tonga", "TrinidadandTobago", "TromelinIsland", "Tunisia", "Turkey", "Turkmenistan", "TurksandCaicosIslands", "Tuvalu", "Uganda", "Ukraine", "UnitedArabEmirates", "UnitedKingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "VirginIslands", "WakeIsland", "WallisandFutuna", "WestBank", "WesternSahara", "Yemen", "Zambia", "Zimbabwe" ], "type": "string" } } }, "AllTasksMessage": { "description": "This object represents a task.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Task unique identifier.", "type": "integer" }, "TaskType": { "description": "The task type.", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ], "type": "string" }, "Category": { "$ref": "#/components/schemas/TaskCategoryResponseMessage" }, "Title": { "description": "Task title.", "type": "string" }, "Description": { "description": "Task description.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the task.", "type": "integer" }, "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "RequestedByUserEntity": { "$ref": "#/components/schemas/RequestedByUserEntityMessage" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the task.", "type": "integer" }, "TaskStatus": { "description": "Task status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Task priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Task due date.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "The date and time the task was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the task was last updated.", "type": "string" } } }, "AnnouncementMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the announcement.", "type": "integer" }, "Subject": { "description": "Subject line of the announcement.", "type": "string" }, "Body": { "description": "Content of the announcement.", "type": "string" }, "AnnouncementDate": { "format": "date", "description": "Date the announcement was published.", "type": "string" }, "ExpirationDate": { "format": "date", "description": "Indicates the date on which the announcement will be removed from the Resident Center.", "type": "string" }, "Channels": { "description": "List of the distribution channels the announcement was sent through.", "type": "array", "items": { "enum": [ "None", "ResidentCenter", "Email", "Sms" ], "type": "string" } }, "Sender": { "$ref": "#/components/schemas/AnnouncementSenderMessage" } } }, "AnnouncementPostMessage": { "required": [ "Subject", "Body", "NotifyAssociationTenants", "IncludeAlternateEmail", "PropertyIds" ], "type": "object", "properties": { "Subject": { "description": "The subject of the announcement. Note, this will only show up in announcements sent via email and in the Resident Center. The value cannot exceed 100 characters.", "type": "string" }, "Body": { "description": "The content of the announcement. The value cannot exceed 65535 characters. Note: if your message is over 140 characters, the announcement will not be sent via SMS. Announcement texts are available for US numbers only.", "type": "string" }, "ExpirationDate": { "format": "date", "description": "Optional date that indicates when the announcement should be removed from the Resident Center. If no date is provided the announcement will appear indefinitely The date must be formatted as YYYY-MM-DD.", "type": "string" }, "NotifyAssociationTenants": { "description": "Indicates whether to include notifying the association tenants in addition to the association owners when publishing the announcement. Note this is only pertains to announcements sent to residents of `Association` properties.", "type": "boolean" }, "IncludeAlternateEmail": { "description": "Indicates whether to send the announcement to alternate emails in addition to the main email addresses when publishing the announcement.", "type": "boolean" }, "PropertyIds": { "description": "A list of association and/or rental property unique identifiers whose residents should receive the announcement.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "AnnouncementSearchMessage": { "type": "object", "properties": { "AnnouncementDateFrom": { "format": "date", "description": "Filters results to any announcements created on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "AnnouncementDateTo": { "format": "date", "description": "Filters results to any announcements created on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any announcement associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is provided.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "SenderId": { "format": "int32", "description": "Unique identifier of the user that published the announcement.", "type": "integer" } } }, "AnnouncementSenderMessage": { "description": "The Buildium user who published the announcement.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the user who sent the announcement.", "type": "integer" }, "DisplayName": { "description": "Display name of the user who sent the announcement.", "type": "string" }, "Href": { "description": "A link to the user resource.", "type": "string" } } }, "ApiError": { "type": "object", "properties": { "Key": { "type": "string" }, "Value": { "type": "string" } } }, "ApiErrorResponse": { "type": "object", "properties": { "UserMessage": { "type": "string" }, "ErrorCode": { "type": "string" }, "Errors": { "type": "array", "items": { "$ref": "#/components/schemas/ApiError" } } } }, "ApplianceMessage": { "description": "Appliance information.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the appliance.", "type": "integer" }, "Name": { "description": "Name of the appliance.", "type": "string" }, "Make": { "description": "Make of the appliance.", "type": "string" }, "Model": { "description": "Model of the appliance.", "type": "string" }, "Description": { "description": "Description of the appliance.", "type": "string" } } }, "ApplicantApplicationMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental application unique identifier.", "type": "integer" }, "ApplicationNumber": { "description": "An alpha numeric value that can be used to uniquely identify the application. This is typically provided to an applicant to use as a reference when making inquiries about their application.", "type": "string" }, "ApplicationStatus": { "description": "Indicates the current application status.", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ], "type": "string" }, "ApplicationSubmittedDateTime": { "format": "date-time", "description": "Date and time the application was submitted.", "type": "string" } } }, "ApplicantGroupMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Applicant group unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the applicant group is associated with.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Rental property unit unique identifier that the applicant group is associated with.", "type": "integer" }, "ApplicationGroupStatus": { "description": "Indicates the current applicant group status. Note, this status is independent from individual application statuses within the group.", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ], "type": "string" }, "Applicants": { "description": "A collection of applicants in the group.", "type": "array", "items": { "$ref": "#/components/schemas/ApplicantMessage" } } } }, "ApplicantGroupPostMessage": { "required": [ "ApplicantIds" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "Rental property unit unique identifier to associate with the applicant group.", "type": "integer" }, "ApplicantIds": { "description": "The applicant unique identifiers to include in the applicant group. Note, that applicants can only be included in one applicant group.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "ApplicantGroupPutMessage": { "required": [ "ApplicantGroupStatus", "ApplicantIds" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "Rental property unit unique identifier to associate with the applicant group.", "type": "integer" }, "ApplicantGroupStatus": { "description": "Sets the status of the applicant group.", "enum": [ "Undecided", "Approved", "Rejected", "Cancelled", "Deferred" ], "type": "string" }, "ApplicantIds": { "description": "The applicant unique identifiers to include in the applicant group. Note, that applicants can only be included in one applicant group.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "ApplicantGroupSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Filters results to any applicant groups associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "enum": [ "Rental", "RentalOwner" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "type": "integer" }, "ApplicationGroupStatuses": { "description": "Filters results by the applicant group status. If no status is specified, applicant groups in any status will be returned.", "type": "array", "items": { "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ], "type": "string" } }, "UnitIds": { "description": "Filters results to applicant groups associated to any of the specified rental property unit identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Name": { "description": "Filters results to applicant groups that includes applicants whose name *contains* the specified value.", "type": "string" } } }, "ApplicantMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Applicant unique identifier.", "type": "integer" }, "ApplicantGroupId": { "format": "int32", "description": "Applicant group unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the applicant is associated with.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Rental property unit unique identifier that the applicant is associated with.", "type": "integer" }, "TenantId": { "format": "int32", "description": "The rental tenant identifier associated with the applicant. This value will be null if the applicant never transitioned into a tenant.", "type": "integer" }, "FirstName": { "description": "Applicant first name.", "type": "string" }, "LastName": { "description": "Applicant last name.", "type": "string" }, "Email": { "description": "Applicant email address.", "type": "string" }, "PhoneNumbers": { "description": "Applicant phone numbers.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "Status": { "description": "Applicant status.", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New", "Draft" ], "type": "string" }, "Applications": { "description": "A collection of applications associated with the applicant.", "type": "array", "items": { "$ref": "#/components/schemas/ApplicantApplicationMessage" } } } }, "ApplicantPostMessage": { "description": "This object represents an applicant.", "required": [ "FirstName", "LastName", "SendRentalApplicationEmail" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "The rental property unit unique identifier to associate with the applicant.", "type": "integer" }, "FirstName": { "description": "The first name of the applicant. The value can not exceed 127 characters.", "type": "string" }, "LastName": { "description": "The last name of the applicant. The value can not exceed 127 characters.", "type": "string" }, "Email": { "description": "The email address of the applicant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "SendRentalApplicationEmail": { "description": "Indicates whether to send the applicant an email with a link to the online rental application form.", "type": "boolean" } } }, "ApplicantPutMessage": { "required": [ "FirstName", "LastName" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "The rental property unit unique identifier to associate with the applicant.", "type": "integer" }, "FirstName": { "description": "The first name of the applicant. The value can not exceed 127 characters.", "type": "string" }, "LastName": { "description": "The last name of the applicant. The value can not exceed 127 characters.", "type": "string" }, "Email": { "description": "The email address of the applicant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" } } }, "ApplicantSearchMessage": { "type": "object", "properties": { "EntityId": { "format": "int32", "description": "Filters results to any applicant associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "type": "integer" }, "EntityType": { "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "enum": [ "Rental", "RentalOwner" ], "type": "string" }, "ApplicationStatuses": { "description": "Filters results by the applicant application status. If no status is specified, applicants with an application in any status will be returned.", "type": "array", "items": { "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ], "type": "string" } }, "UnitIds": { "description": "Filters results to applicants associated to any of the specified rental property unit identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Name": { "description": "Filters results to applicants whose name *contains* the specified value.", "type": "string" }, "Email": { "description": "Filters results to applicants whose email *contains* the specified value", "type": "string" }, "ApplicationSubmittedStartDate": { "format": "date-time", "description": "Filters results to any applicant who submitted an application on or after the date specified.", "type": "string" }, "ApplicationSubmittedEndDate": { "format": "date-time", "description": "Filters results to any applicant who submitted an application on or prior to the date specified.", "type": "string" } } }, "ApplicationMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental application unique identifier.", "type": "integer" }, "ApplicationNumber": { "description": "An alpha numeric value that can be used to uniquely identify the application. This is typically provided to an applicant to use as a reference when making inquiries about their application.", "type": "string" }, "ApplicationStatus": { "description": "Indicates the current application status.", "enum": [ "Undecided", "Approved", "Rejected", "AddedToLease", "Cancelled", "Deferred", "New" ], "type": "string" }, "ApplicationSubmittedDateTime": { "format": "date-time", "description": "Date and time the application was submitted.", "type": "string" }, "Application": { "description": "A submitted rental application.", "type": "array", "items": { "$ref": "#/components/schemas/ApplicationResponseMessage" } } } }, "ApplicationPutMessage": { "required": [ "ApplicationStatus" ], "type": "object", "properties": { "ApplicationStatus": { "description": "Sets the status of the application.", "enum": [ "Undecided", "Approved", "Rejected", "Cancelled", "Deferred" ], "type": "string" } } }, "ApplicationResponseFieldMessage": { "type": "object", "properties": { "FieldCategoryType": { "description": "Indicates the field category type the field is assigned. The `FieldCategoryType` can be used to identify specific data points within the application. For example, to identify the fields that contain the applicants full name you would filter the fields within the application where the `FieldCategoryType` is equal to `ApplicantName`.", "enum": [ "ApplicantName", "ApplicantEmail", "ApplicantSocialSecurityNumber", "ApplicantAlternateEmail", "ApplicantHomePhone", "ApplicantCellPhone", "ApplicantWorkPhone", "ApplicantFax", "ApplicantBirthDate", "ApplicantDriversLicense", "ApplicantCurrentAddress", "ApplicantAlternateAddress", "EmergencyContactName", "EmergencyContactRelationship", "EmergencyContactEmail", "EmergencyContactPhone", "OccupantName", "OccupantRelationship", "OccupantBirthDate", "OccupantEmail", "OccupantPhoneNumber", "CosignerName", "CosignerRelationship", "CosignerSocialSecurityNumber", "CosignerPhoneNumber", "CosignerEmail", "EmployerName", "EmployerAddress", "EmployerPhoneNumber", "EmployerEmail", "PositionHeld", "EmploymentDates", "MonthlyGrossSalary", "SupervisorName", "SupervisorTitle", "PetType", "PetName", "PetAge", "PetSpayedOrNeutered", "PetLicenseNumber", "PetWeight", "DesiredMoveInDate", "DesiredLeaseDuration", "DesiredRent", "DesiredNumberOfBedrooms", "DesiredNumberOfBathrooms", "ReferenceName", "ReferenceRelationship", "ReferencePhoneNumber", "ReferenceEmail", "RentalAddress", "RentalDates", "MonthlyRent", "ReasonForLeaving", "LandlordName", "LandlordPhoneNumber", "LandlordEmail", "VehicleMake", "VehicleModel", "VehicleColor", "VehicleYear", "VehicleLicensePlate", "AgreedTo", "AgreedBy", "CosignerAddress", "ApplicantAddress", "OtherComments", "EmailApplication", "OptInSms", "CosignerApplicationFullName", "CosignerApplicationRelationshipToApplicant", "CosignerApplicationSocialSecurityNumber", "CosignerApplicationPhoneNumber", "CosignerApplicationEmailAddress", "CosignerApplicationPrimaryAddress", "CosignerApplicationEmployerName", "CosignerApplicationEmployerAddress", "CosignerApplicationEmployerPhoneNumber", "CosignerApplicationEmployerEmail", "CosignerApplicationPositionHeld", "CosignerApplicationEmploymentDates", "CosignerApplicationMonthlyGrossSalary", "CosignerApplicationSupervisorName", "CosignerApplicationSupervisorTitle", "CosignerApplicationAgreedTo", "CosignerApplicationAgreedBy", "CosignerApplicationOtherComments" ], "type": "string" }, "FieldType": { "description": "Indicates the fields expected input value format and/or data type. For example, a field can be assigned a `FieldType` of `DateDayMonthYear` which indicates the input value must be a date containing a day, month and year.", "enum": [ "TextSingleLine", "Email", "DateDayMonthYear", "Number", "DateMonthYear", "DateYear", "GroupHeading", "NumberOfBathrooms", "NumberOfBedrooms", "PhoneNumber", "SocialSecurityNumber", "TextMultipleLines", "TrueFalse", "YesNo", "Currency", "FirstName", "LastName", "DateRangeFromDate", "DateRangeToDate", "AddressCountry", "AddressStreet", "AddressCity", "AddressState", "AddressZip", "DriversLicenseNumber", "DriversLicenseState", "Attachment" ], "type": "string" }, "FieldLabel": { "description": "A user defined description of the field. This value is typically displayed as the form field label on the application.", "type": "string" }, "Value": { "description": "The field input value from the applicant.", "type": "string" } } }, "ApplicationResponseMessage": { "type": "object", "properties": { "SectionLabel": { "description": "A user defined description of the application section.", "type": "string" }, "SectionType": { "description": "Indicates the application section type. The `SectionType` can be used to identify specific sections within the application.", "enum": [ "ApplicantInformation", "PropertyInformation", "RentalHistory", "Employment", "References", "Cosigners", "AdditionalOccupants", "Pets", "Vehicles", "TermsAndConditions", "Other", "CosignerInformation", "CosignerEmploymentHistory", "CosignerTermsAndConditions", "CosignerOther" ], "type": "string" }, "SectionResponses": { "description": "A collection of form fields within the section.", "type": "array", "items": { "$ref": "#/components/schemas/ApplicationSectionResponseMessage" } } } }, "ApplicationSectionResponseMessage": { "type": "object", "properties": { "SectionFields": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationResponseFieldMessage" } } } }, "AppliedVendorCreditMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The vendor credit id applied to the bill payment.", "type": "integer" }, "Href": { "description": "A link to the resource endpoint associated with the vendor credit.", "type": "string" } } }, "AssociationApplianceMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Appliance unique identifier.", "type": "integer" }, "AssociationId": { "format": "int32", "description": "Association unique identifier that the appliance belongs to.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Association unit unique identifier that the appliance belongs to.", "type": "integer" }, "Name": { "description": "Name of the appliance.", "type": "string" }, "Make": { "description": "Make of the appliance.", "type": "string" }, "Model": { "description": "Model of the appliance.", "type": "string" }, "Description": { "description": "Description of the appliance.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "Warranty end date of the appliance.", "type": "string" } } }, "AssociationAppliancePostMessage": { "required": [ "AssociationId", "Name" ], "type": "object", "properties": { "AssociationId": { "format": "int32", "description": "Association unique identifier that the appliance belongs to.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Association unit unique identifier that the appliance belongs to.", "type": "integer" }, "Name": { "description": "The name of the appliance. The name cannot exceed 100 characters.", "type": "string" }, "Make": { "description": "The make of the appliance. The make cannot exceed 30 characters.", "type": "string" }, "Model": { "description": "The model of the appliance. The model cannot exceed 30 characters.", "type": "string" }, "Description": { "description": "The description of the appliance. The description cannot exceed 500 characters.", "type": "string" }, "InstallDate": { "format": "date", "description": "The install date for the appliance's warranty. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "The end date for the appliance's warranty. The warranty's end date cannot be before the installed date, if it exists. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationAppliancePutMessage": { "required": [ "Name" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "The unit identifier the association appliance belongs to. Must be within the association property the appliance is in.", "type": "integer" }, "Name": { "description": "The name of the association appliance. The name cannot exceed 100 characters.", "type": "string" }, "Make": { "description": "The make of the association appliance. The make cannot exceed 30 characters.", "type": "string" }, "Model": { "description": "The model of the association appliance. The model cannot exceed 30 characters.", "type": "string" }, "Description": { "description": "The description of the association appliance. The description cannot exceed 500 characters.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "The end date for the association appliance's warranty. The warranty's end date cannot be before the installed date, if it exists. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationApplianceSearchMessage": { "type": "object", "properties": { "AssociationIds": { "description": "Filters results to appliances associated to any of the specified association identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UnitIds": { "description": "Filters results to appliances associated to any of the specified association unit identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "AssociationApplianceServiceHistoryMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Appliance service history unique identifier.", "type": "integer" }, "ServiceType": { "description": "Type of service performed.", "enum": [ "Installed", "Serviced", "Uninstalled" ], "type": "string" }, "Date": { "format": "date", "description": "Date of the service.", "type": "string" }, "Details": { "description": "Details of the service.", "type": "string" } } }, "AssociationApplianceServiceHistoryPostMessage": { "required": [ "ServiceType", "Date" ], "type": "object", "properties": { "ServiceType": { "description": "Specifies the type of service that occured.", "enum": [ "Installed", "Serviced", "Uninstalled" ], "type": "string" }, "Date": { "format": "date", "description": "Date the service was performed. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Details": { "description": "The service history details associated with the appliance. The description cannot exceed 100 characters.", "type": "string" } } }, "AssociationBoardMemberMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Association board member unique identifier.", "type": "integer" }, "AssociationOwnerId": { "format": "int32", "description": "Association owner unique identifier.", "type": "integer" }, "FirstName": { "description": "Association owner first name.", "type": "string" }, "LastName": { "description": "Association owner last name.", "type": "string" }, "Email": { "description": "Association owner email.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers of the association owner.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "BoardPositionType": { "description": "Indicates the board position held by the association owner.", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the association owner's term as board member", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the association owner's term as board member", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "Date and time when the board member was created.", "type": "string" } } }, "AssociationBoardMemberPostMessage": { "description": "This object represents the Board Member for an Association.", "required": [ "AssociationOwnerId", "BoardPositionType" ], "type": "object", "properties": { "AssociationOwnerId": { "format": "int32", "description": "The association owner's unique identifier.", "type": "integer" }, "BoardPositionType": { "description": "Indicates the board position held by the association owner.", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the association owners term as a board member. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the association owners term as a board member. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationBoardMemberPutMessage": { "description": "This object represents the Board Member for an Association.", "required": [ "BoardPositionType" ], "type": "object", "properties": { "BoardPositionType": { "description": "Indicates the board position held by the association owner.", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the association owners term as a board member. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the association owners term as a board member. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationBoardMemberSearchMessage": { "type": "object", "properties": { "Statuses": { "description": "Filters results to only records whose status is equal to the specified values.", "type": "array", "items": { "enum": [ "Current", "Former", "Future" ], "type": "string" } }, "BoardPositionTypes": { "description": "Filters results to only records whose board position type is equal to the specified values.", "type": "array", "items": { "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" } }, "CreatedDateTimeTo": { "format": "date-time", "description": "Filters results to only records that were created before this date. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "CreatedDateTimeFrom": { "format": "date-time", "description": "Filters results to only records that were created after this date. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationMessage": { "description": "This is an object that represents home owner associations.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Association unique identifier.", "type": "integer" }, "Name": { "description": "Association name.", "type": "string" }, "IsActive": { "description": "Indicates whether the association is active within the Buildium platform.", "type": "boolean" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that simply isn't disbursed in an owner draw.", "type": "number" }, "Description": { "description": "Description of the association.", "type": "string" }, "YearBuilt": { "format": "int32", "description": "Indicates the year the association was built. Null if no value is set.", "type": "integer" }, "OperatingBankAccount": { "description": "Primary bank account that an association uses for its income and expenses.", "type": "string" }, "OperatingBankAccountId": { "format": "int32", "description": "Primary bank account unique identifier that an association uses for its income and expenses.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "AssociationManager": { "$ref": "#/components/schemas/PropertyManagerMessage" }, "FiscalYearEndDay": { "format": "int32", "description": "The day the fiscal year ends for the association.", "type": "integer" }, "FiscalYearEndMonth": { "format": "int32", "description": "The month the fiscal year ends for the association.", "type": "integer" }, "TaxInformation": { "$ref": "#/components/schemas/AssociationTaxInformationMessage" } } }, "AssociationOwnerBoardTermMessage": { "description": "Board member term.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Board term unique identifier.", "type": "integer" }, "AssociationId": { "format": "int32", "description": "Association unique identifier.", "type": "integer" }, "BoardPositionType": { "description": "Indicates the board position held by the association owner.", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the board member term.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the board member term.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "Date and time the board member position was created.", "type": "string" } } }, "AssociationOwnerBoardTermPostMessage": { "description": "Board member term.", "required": [ "BoardPositionType" ], "type": "object", "properties": { "BoardPositionType": { "description": "Indicates the board position held by the association owner.", "enum": [ "President", "VicePresident", "Treasurer", "Secretary", "BoardMember" ], "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the board member term. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the board member term. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationOwnerMessage": { "description": "This object represents an owner of a unit(s) that exists within a home owner association.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier.", "type": "integer" }, "FirstName": { "description": "First name.", "type": "string" }, "LastName": { "description": "Last name.", "type": "string" }, "Email": { "description": "Email.", "type": "string" }, "AlternateEmail": { "description": "Alternate email.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers of the association user.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "PrimaryAddress": { "$ref": "#/components/schemas/AddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/AddressMessage" }, "Comment": { "description": "General comments.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/EmergencyContactMessage" }, "OwnershipAccounts": { "description": "List of associated ownership accounts.", "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } }, "MailingPreference": { "description": "Indicates the association owner's mailing preference.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" }, "Vehicles": { "description": "List of vehicles associated with the association owner.", "type": "array", "items": { "$ref": "#/components/schemas/VehicleMessage" } }, "OccupiesUnit": { "description": "Indicates if the association owner occupies a unit(s) within the association.", "type": "boolean" }, "BoardMemberTerms": { "description": "List of Board Member Terms for the given Association Owner(s)", "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnerBoardTermMessage" } }, "CreatedDateTime": { "format": "date-time", "description": "Date and time the association owner was created.", "type": "string" }, "TaxId": { "description": "Taxpayer identification number. Examples of United States identification numbers are Social Security number or a Employer Identification Number.", "type": "string" }, "DelinquencyStatus": { "description": "Indicates the delinquency status of the association owner.", "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ], "type": "string" } } }, "AssociationOwnerPostMessage": { "description": "This object represents the Association Owner to add when Creating a new OwnershipAccount", "required": [ "FirstName", "LastName", "PrimaryAddress", "IsOwnerOccupied" ], "type": "object", "properties": { "FirstName": { "description": "First name of the owner. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the owner. The value cannot exceed 127 characters.", "type": "string" }, "PrimaryAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "BoardMemberTerm": { "$ref": "#/components/schemas/AssociationOwnerBoardTermPostMessage" }, "IsOwnerOccupied": { "description": "Indicates if the association owner occupies a unit(s) within the association.", "type": "boolean" }, "Email": { "description": "Email of owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of owner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date Of Birth for the owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Comment": { "description": "Comments about the owner. The value cannot exceed 65,535 characters.", "type": "string" }, "MailingPreference": { "description": "Mailing preferences for the owner. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" }, "TaxId": { "description": "Taxpayer identification number of the owner. Examples of United States identification numbers are Social Security number or a Employer Identification Number. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`.", "type": "string" } } }, "AssociationOwnerPutMessage": { "required": [ "FirstName", "LastName", "PrimaryAddress" ], "type": "object", "properties": { "FirstName": { "description": "First name of the owner. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the owner. The value cannot exceed 127 characters.", "type": "string" }, "PrimaryAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "Email": { "description": "Email of the owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the owner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Comment": { "description": "Comments about the owner. The value cannot exceed 65,535 characters.", "type": "string" }, "MailingPreference": { "description": "Mailing preferences for the owner. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" }, "TaxId": { "description": "Taxpayer identification number of the owner. Examples of United States identification numbers are Social Security number or a Employer Identification Number. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`.", "type": "string" } } }, "AssociationOwnershipAccountMessage": { "description": "This object represents a home owner association ownership account.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Association ownership account unique identifier.", "type": "integer" }, "AssociationId": { "format": "int32", "description": "Association unique identifier that the ownership account belongs to.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Association unit unique identifier that the ownership account is related to.", "type": "integer" }, "Status": { "description": "Indicates the status of the ownership account.", "enum": [ "Active", "Past", "Future" ], "type": "string" }, "DateOfPurchase": { "format": "date", "description": "Date the unit(s) where purchased by the owner.", "type": "string" }, "DateOfSale": { "format": "date", "description": "Date the unit(s) where sold by the owner.", "type": "string" }, "Comments": { "description": "Comments about the ownership account.", "type": "string" }, "AssociationOwnerIds": { "description": "Association owners associated with the ownership account", "type": "array", "items": { "format": "int32", "type": "integer" } }, "DelinquencyStatus": { "description": "Indicates the delinquency status of the ownership account", "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ], "type": "string" } } }, "AssociationOwnershipAccountPostMessage": { "required": [ "UnitId", "DateOfPurchase", "SendWelcomeEmail", "ReplaceExistingOwnershipAccount" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "Association unit unique identifier that the ownership account is related to.", "type": "integer" }, "DateOfPurchase": { "format": "date", "description": "Date the unit was purchased by the owner. Must be formatted as YYYY-MM-DD. \r\nIf an existing association ownership account is being replaced then this date must be after the existing ownership accounts date of sale.", "type": "string" }, "AssociationFee": { "format": "double", "description": "Recurring association fee charge. If provided, a recurring transaction will be created that adds a charge in the amount specified to the ownership account ledger with the frequency indicated in RecurringFrequency.", "type": "number" }, "RecurringFrequency": { "description": "Indicates the frequency of the recurring association fee. This field is required if `AssociationFee` has a value.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "AssociationOwnerIds": { "description": "Current or former association owners to assign to this ownership account. Values must be an active association owner identifiers. The request must include at least one owner in this property OR the `AssociationOwners` property.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AssociationOwners": { "description": "Create new association owner(s) and assigns them to this new ownership account. The request must include at least one owner in this property OR the `AssociationOwnerIds` property.", "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnerPostMessage" } }, "SendWelcomeEmail": { "description": "Indicates whether to send an owner portal welcome email to all of the association owners assigned to this ownership account. Once the owners sign into the portal, they can make online payments, view important documents, submit requests, and more.", "type": "boolean" }, "ReplaceExistingOwnershipAccount": { "description": "Indicates whether to replace an ownership account if one already exists for this unit. \r\nIf this value is false and an ownership account exists the request will fail.This protects against inadvertently overwriting of an existing ownership account. \r\nIf the value is true and an ownership account exists then the existing ownership account will be marked as with a status of Past and the newly created ownership account will be Active for the unit.", "type": "boolean" } } }, "AssociationOwnershipAccountPutMessage": { "required": [ "DateOfPurchase" ], "type": "object", "properties": { "DateOfPurchase": { "format": "date", "description": "Date the unit was purchased by the owner. Must be formatted as YYYY-MM-DD.", "type": "string" } } }, "AssociationOwnershipAccountSearchMessage": { "type": "object", "properties": { "Ids": { "description": "Filters results to the specified set of ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AssociationIds": { "description": "Filters results to any ownership accounts who belong to the specified set of association ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UnitOrOwner": { "description": "Filters results to any association whose unit or owner *contains* the specified value.", "type": "string" }, "DateFrom": { "format": "date", "description": "Filters results to any ownership account whose start date is greater than or equal to the specified value.", "type": "string" }, "DateTo": { "format": "date", "description": "Filters results to any ownership account whose start date is less than or equal to the specified value.", "type": "string" }, "Status": { "description": "Filters results by the status of the association. If no status is specified, `active`, `past` and `future` associations will be returned.", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "DelinquencyStatuses": { "description": "Filters results by the delinquency status of the ownership account. If no status is specified, ownership accounts of any delinquency status will be returned.", "type": "array", "items": { "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ], "type": "string" } } } }, "AssociationOwnerToExistingOwnershipAccountPostMessage": { "description": "This object represents the Association Owner to add to an existing Ownership Account", "required": [ "OwnershipAccountId", "SendWelcomeEmail", "PrimaryAddress", "FirstName", "LastName", "IsOwnerOccupied" ], "type": "object", "properties": { "OwnershipAccountId": { "format": "int32", "description": "Ownership account Id for the owner.", "type": "integer" }, "SendWelcomeEmail": { "description": "Send a welcome email to any homeowner at the association", "type": "boolean" }, "PrimaryAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "FirstName": { "description": "First name of the owner. The value can not exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the owner. The value can not exceed 127 characters.", "type": "string" }, "BoardMemberTerm": { "$ref": "#/components/schemas/AssociationOwnerBoardTermPostMessage" }, "IsOwnerOccupied": { "description": "Indicates if the association owner occupies a unit(s) within the association.", "type": "boolean" }, "Email": { "description": "Email of owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of owner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date Of Birth for the owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Comment": { "description": "Comments about the owner. The value can not exceed 65,535 characters.", "type": "string" }, "MailingPreference": { "description": "Mailing preferences for the owner. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" }, "TaxId": { "description": "Taxpayer identification number of the owner. Examples of United States identification numbers are Social Security number or a Employer Identification Number. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`.", "type": "string" } } }, "AssociationOwnerUnitOccupancyPutMessage": { "required": [ "IsOccupied" ], "type": "object", "properties": { "IsOccupied": { "description": "Indicates whether the unit is occupied by the association owner.", "type": "boolean" } } }, "AssociationOwnerUnitOccupancyStatusMessage": { "type": "object", "properties": { "UnitId": { "format": "int32", "description": "Association unit unique identifier.", "type": "integer" }, "IsOccupied": { "description": "Indicates whether the unit is occupied by the association owner.", "type": "boolean" } } }, "AssociationPostMessage": { "required": [ "Name", "OperatingBankAccountId", "Address" ], "type": "object", "properties": { "Name": { "description": "Association name. The value cannot exceed 127 characters.", "type": "string" }, "OperatingBankAccountId": { "format": "int32", "description": "The primary bank account that an association uses for its income and expenses.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "IsActive": { "description": "Indicates whether the association is active within the Buildium platform. If no value is passed in the default is `true`.", "type": "boolean" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that isn't disbursed in an owner draw.", "type": "number" }, "Description": { "description": "Description of the association. The description cannot exceed 65,535 characters.", "type": "string" }, "YearBuilt": { "format": "int32", "description": "Indicates the year the association was established. If provided this value must be a four digit integer between 1000 and the current year.", "type": "integer" }, "PropertyManagerId": { "format": "int32", "description": "Indicates the staff member identifier that acts as the property manager for this association. Note, the staff member must have permissions to this association to be assigned as the property manager.\r\nLeave this field null if you don't want to assign a staff member to the association.", "type": "integer" }, "TaxInformation": { "$ref": "#/components/schemas/TaxInformationPostMessage" } } }, "AssociationPreferredVendorMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Preferred vendor unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the preferred vendor.", "type": "string" }, "LastName": { "description": "Last name of the preferred vendor.", "type": "string" }, "CompanyName": { "description": "Company name of the preferred vendor.", "type": "string" }, "PrimaryEmail": { "description": "Primary email for the preferred vendor.", "type": "string" }, "AlternateEmail": { "description": "Alternate email for the preferred vendor.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers of the preferred vendor.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "Website": { "description": "Website of the preferred vendor.", "type": "string" }, "IsCompany": { "description": "Indicates whether the preferred vendor is a company.", "type": "boolean" } } }, "AssociationPreferredVendorPutMessage": { "required": [ "VendorIds" ], "type": "object", "properties": { "VendorIds": { "description": "A list of vendor identifiers that will be assigned as preferred vendors to the specified association. The submitted list of identifiers will overwrite any existing preferred vendors. Leaving the array empty will remove all vendors from the association.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "AssociationPutMessage": { "required": [ "Name", "OperatingBankAccountId", "Address", "FiscalYearEndDay", "FiscalYearEndMonth" ], "type": "object", "properties": { "Name": { "description": "Association name. The value cannot exceed 127 characters.", "type": "string" }, "Description": { "description": "Description of the association. The value cannot exceed 65,535 characters.", "type": "string" }, "YearBuilt": { "format": "int32", "description": "Indicates the year the association was established. If provided this value must be a four digit integer between 1000 and the current year.", "type": "integer" }, "OperatingBankAccountId": { "format": "int32", "description": "The primary bank account that an association uses for its income and expenses.", "type": "integer" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that isn't disbursed in an owner draw.", "type": "number" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "PropertyManagerId": { "format": "int32", "description": "Indicates the staff member identifier that acts as the property manager for this association. Note, the staff member must have permissions to this association to be assigned as the property manager.\r\nSet this field to null if you don't want to assign a staff member to the association.", "type": "integer" }, "FiscalYearEndDay": { "format": "int32", "description": "The day the fiscal year ends for the association.", "type": "integer" }, "FiscalYearEndMonth": { "format": "int32", "description": "The month the fiscal year ends for the association.", "type": "integer" } } }, "AssociationSearchMessage": { "description": "This object represents a filter for a home owner association search.", "type": "object", "properties": { "Ids": { "description": "Filters results to the specified set of ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Location": { "description": "Filters results to any association whose city or state *contains* the specified value.", "type": "string" }, "Status": { "description": "Filters results by the status of the association. If no status is specified both `active` and `inactive` associations will be returned.", "enum": [ "Active", "InActive" ], "type": "string" }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any associations that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any associations that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "OperatingBankAccountIds": { "description": "Filters results to any associations associated to any of the specified set of operating bank account ids.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "AssociationTaxInformationMessage": { "description": "Association tax information.", "type": "object", "properties": { "TaxPayerIdType": { "description": "Indicates the type of tax payer id being specified in the request.", "enum": [ "SSN", "EIN" ], "type": "string" }, "TaxPayerId": { "description": "The tax payer identifier.", "type": "string" }, "TaxPayerName1": { "description": "Tax payer name line 1.", "type": "string" }, "TaxPayerName2": { "description": "Tax payer name line 2.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" } } }, "AssociationTenantMessage": { "description": "This object represents a home owner association tenant.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier.", "type": "integer" }, "FirstName": { "description": "First name.", "type": "string" }, "LastName": { "description": "Last name.", "type": "string" }, "Email": { "description": "Email.", "type": "string" }, "AlternateEmail": { "description": "Alternate email.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers of the association user.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "PrimaryAddress": { "$ref": "#/components/schemas/AddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/AddressMessage" }, "Comment": { "description": "General comments.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/EmergencyContactMessage" }, "OwnershipAccounts": { "description": "List of associated ownership accounts.", "type": "array", "items": { "$ref": "#/components/schemas/AssociationOwnershipAccountMessage" } }, "MoveInDate": { "format": "date", "description": "Move in date for the tenant.", "type": "string" }, "MoveOutDate": { "format": "date", "description": "Move out date for the tenant.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "Date and time the tenant was created.", "type": "string" } } }, "AssociationTenantPostMessage": { "required": [ "FirstName", "LastName", "PrimaryAddress", "OwnershipAccountId" ], "type": "object", "properties": { "FirstName": { "description": "First name of tenant. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of tenant. The value cannot exceed 127 characters.", "type": "string" }, "Email": { "description": "Email of tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of tenant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date of birth for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Comment": { "description": "Comments about the tenant. The value cannot exceed 65,535 characters.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "PrimaryAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MoveInDate": { "format": "date", "description": "Move in date for the tenant. This date is not editable and can only be set when creating the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "MoveOutDate": { "format": "date", "description": "Move out date for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "OwnershipAccountId": { "format": "int32", "description": "Ownership account id for the tenant.", "type": "integer" } } }, "AssociationTenantPutMessage": { "required": [ "FirstName", "LastName", "PrimaryAddress" ], "type": "object", "properties": { "FirstName": { "description": "First name of tenant. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of tenant. The value cannot exceed 127 characters.", "type": "string" }, "Email": { "description": "Email of tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of tenant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date of birth for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Comment": { "description": "Comments about the tenant. The value cannot exceed 65,535 characters.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "PrimaryAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MoveOutDate": { "format": "date", "description": "Move out date for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "AssociationUnitMessage": { "description": "This object represents a home owners association unit.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Association unit unique identifier.", "type": "integer" }, "AssociationId": { "format": "int32", "description": "Association unique identifier that the unit belongs to.", "type": "integer" }, "AssociationName": { "description": "Association name that the unit belongs to.", "type": "string" }, "UnitNumber": { "description": "Unit number.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" } } }, "AssociationUnitPutMessage": { "required": [ "UnitNumber", "Address" ], "type": "object", "properties": { "UnitNumber": { "description": "Unit Number. Must be unique within the association and cannot exceed 30 characters.", "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" } } }, "AssociationUnitSearchMessage": { "description": "This object represents a filter for a home owner association unit search", "type": "object", "properties": { "AssociationIds": { "description": "Filters results to only include Associations with matching IDs", "type": "array", "items": { "format": "int32", "type": "integer" } }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any association units that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any association units that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "AssociationUnitsPostMessage": { "required": [ "UnitNumber", "AssociationId", "Address" ], "type": "object", "properties": { "UnitNumber": { "description": "Unit number. Must be unique within the association and cannot exceed 30 characters.", "type": "string" }, "AssociationId": { "format": "int32", "description": "Association unique identifier that the unit belongs to.", "type": "integer" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" } } }, "AssociationUserSearchMessage": { "type": "object", "properties": { "Name": { "description": "Filters results to only records whose name *contains* the specified value.", "type": "string" }, "Phone": { "description": "Filters results to only records whose phone number *contains* the specified value.", "type": "string" }, "Email": { "description": "Filters results to only records whose email *contains* the specified value.", "type": "string" }, "AssociationIds": { "description": "Filters results to only records that belong to the specified set of association identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Statuses": { "description": "Filters results to only records whose status is equal to the specified value.", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "CreatedDateTimeTo": { "format": "date-time", "description": "Filters results to only records that were created before this date. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "CreatedDateTimeFrom": { "format": "date-time", "description": "Filters results to only records that were created after this date. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any association owners that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any association owners that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "BankAccountCheckAccountingEntitySaveMessage": { "required": [ "Id", "AccountingEntityType" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "The accounting entity unique identifier.", "type": "integer" }, "AccountingEntityType": { "description": "The type of accounting entity.", "enum": [ "Association", "Rental", "Company" ], "type": "string" }, "UnitId": { "format": "int32", "description": "The unit unique identifier for the accounting entity.", "type": "integer" } } }, "BankAccountCheckFileMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "File unique identifier.", "type": "integer" }, "Title": { "description": "The title of the file.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Size": { "format": "int64", "description": "Size of the file, in kilobytes.", "type": "integer" }, "ContentType": { "description": "MIME type of the file.", "type": "string" }, "UploadedDateTime": { "format": "date-time", "description": "Date and time the file was uploaded.", "type": "string" } } }, "BankAccountCheckLineMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the line item.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "General ledger account unique identifier the line item is related to.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "BankAccountCheckLineSaveMessage": { "required": [ "GLAccountId", "AccountingEntity", "Amount" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/BankAccountCheckAccountingEntitySaveMessage" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "BankAccountCheckMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Check unique identifier.", "type": "integer" }, "Payee": { "$ref": "#/components/schemas/BankAccountCheckPayeeMessage" }, "CheckNumber": { "description": "Check number.", "type": "string" }, "EntryDate": { "format": "date", "description": "Date the check was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the check, if applicable.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all `Journal.Lines.Amount` entries in the check.", "type": "number" }, "Lines": { "description": "A collection of line items associated with the check.", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountCheckLineMessage" } } } }, "BankAccountCheckPayeeMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The payee user identifier.", "type": "integer" }, "Type": { "description": "The entity type for the payee.", "enum": [ "Vendor", "RentalOwner" ], "type": "string" }, "Href": { "description": "A link to the resource endpoint associated with the payee.", "type": "string" } } }, "BankAccountCheckPayeeSaveMessage": { "required": [ "Id", "Type" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "The payee user identifier.", "type": "integer" }, "Type": { "description": "The payee entity type.", "enum": [ "Vendor", "RentalOwner" ], "type": "string" } } }, "BankAccountCheckPostMessage": { "required": [ "Payee", "EntryDate", "Lines" ], "type": "object", "properties": { "Payee": { "$ref": "#/components/schemas/BankAccountCheckPayeeSaveMessage" }, "CheckNumber": { "description": "Check number.", "type": "string" }, "EntryDate": { "format": "date", "description": "Date the check was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the check, if applicable.", "type": "string" }, "Lines": { "description": "A collection of line items to associate with the check.", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountCheckLineSaveMessage" } } } }, "BankAccountCheckPutMessage": { "required": [ "Payee", "EntryDate", "Lines" ], "type": "object", "properties": { "Payee": { "$ref": "#/components/schemas/BankAccountCheckPayeeSaveMessage" }, "CheckNumber": { "description": "Check number.", "type": "string" }, "EntryDate": { "format": "date", "description": "Date the check was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the check, if applicable.", "type": "string" }, "Lines": { "description": "A collection of line items to associate with the check.", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountCheckLineSaveMessage" } } } }, "BankAccountCheckSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "StartDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankAccountDepositLineMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the line item.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount is recorded.", "type": "integer" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "BankAccountDepositLineSaveMessage": { "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "BankAccountDepositMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Deposit unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the deposit was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the deposit, if applicable.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all `Journal.Lines.Amount` entries in the deposit.", "type": "number" }, "Lines": { "description": "A collection of line items associated with the deposit.", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountDepositLineMessage" } }, "PaymentTransactionIds": { "description": "A collection of payment transaction identifiers that were included in this deposit transaction.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "BankAccountDepositPostMessage": { "required": [ "EntryDate" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the deposit was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the deposit, if applicable.", "type": "string" }, "Lines": { "description": "A collection of line items to associate with the deposit.", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountDepositLineSaveMessage" } }, "PaymentTransactionIds": { "description": "A collection of payment transaction identifiers that were included in this deposit transaction.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "BankAccountDepositPutMessage": { "required": [ "EntryDate", "Lines" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the deposit was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the deposit, if applicable.", "type": "string" }, "Lines": { "description": "", "type": "array", "items": { "$ref": "#/components/schemas/BankAccountDepositLineSaveMessage" } } } }, "BankAccountDepositSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "StartDate": { "format": "date", "description": "Filters results to any deposits that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any deposits that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankAccountMessage": { "description": "This is an object that represents a bank account.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Bank account unique identifier.", "type": "integer" }, "GLAccount": { "$ref": "#/components/schemas/GLAccountMessage" }, "CheckPrintingInfo": { "$ref": "#/components/schemas/CheckPrintingInfoMessage" }, "ElectronicPayments": { "$ref": "#/components/schemas/ElectronicPaymentsMessage" }, "Name": { "description": "Bank Account name.", "type": "string" }, "Description": { "description": "Bank account description.", "type": "string" }, "BankAccountType": { "description": "Type of bank account. Values are `Checking` or `Savings`.", "type": "string" }, "Country": { "description": "The country the bank account is in.", "enum": [ "UnitedStates", "Afghanistan", "Akrotiri", "Albania", "Algeria", "AmericanSamoa", "Andorra", "Angola", "Anguilla", "Antarctica", "AntiguaandBarbuda", "Argentina", "Armenia", "Aruba", "AshmoreandCartierIslands", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "BassasdaIndia", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "BosniaandHerzegovina", "Botswana", "BouvetIsland", "Brazil", "BritishIndianOceanTerritory", "BritishVirginIslands", "Brunei", "Bulgaria", "BurkinaFaso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "CapeVerde", "CaymanIslands", "CentralAfricanRepublic", "Chad", "Chile", "China", "ChristmasIsland", "ClippertonIsland", "CocosIslands", "Colombia", "Comoros", "DemocraticRepublicOfTheCongo", "RepublicOfTheCongo", "CookIslands", "CoralSeaIslands", "CostaRica", "CotedIvoire", "Croatia", "Cuba", "Cyprus", "CzechRepublic", "Denmark", "Dhekelia", "Djibouti", "Dominica", "DominicanRepublic", "Ecuador", "Egypt", "ElSalvador", "EquatorialGuinea", "Eritrea", "Estonia", "Ethiopia", "EuropaIsland", "FalklandIslands", "FaroeIslands", "Fiji", "Finland", "France", "FrenchGuiana", "FrenchPolynesia", "FrenchSouthernandAntarcticLands", "Gabon", "Gambia", "GazaStrip", "Georgia", "Germany", "Ghana", "Gibraltar", "GloriosoIslands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "GuineaBissau", "Guyana", "Haiti", "HeardIslandandMcDonaldIslands", "VaticanCity", "Honduras", "HongKong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "IsleofMan", "Israel", "Italy", "Jamaica", "JanMayen", "Japan", "Jersey", "Jordan", "JuandeNovaIsland", "Kazakhstan", "Kenya", "Kiribati", "NorthKorea", "SouthKorea", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "MarshallIslands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "NavassaIsland", "Nepal", "Netherlands", "NetherlandsAntilles", "NewCaledonia", "NewZealand", "Nicaragua", "Niger", "Nigeria", "Niue", "NorfolkIsland", "NorthernMarianaIslands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "PapuaNewGuinea", "ParacelIslands", "Paraguay", "Peru", "Philippines", "PitcairnIslands", "Poland", "Portugal", "PuertoRico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "SaintHelena", "SaintKittsandNevis", "SaintLucia", "SaintPierreandMiquelon", "SaintVincentandtheGrenadines", "Samoa", "SanMarino", "SaoTomeandPrincipe", "SaudiArabia", "Senegal", "SerbiaandMontenegro", "Seychelles", "SierraLeone", "Singapore", "Slovakia", "Slovenia", "SolomonIslands", "Somalia", "SouthAfrica", "SouthGeorgiaandtheSouthSandwichIslands", "Spain", "SpratlyIslands", "SriLanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "TimorLeste", "Togo", "Tokelau", "Tonga", "TrinidadandTobago", "TromelinIsland", "Tunisia", "Turkey", "Turkmenistan", "TurksandCaicosIslands", "Tuvalu", "Uganda", "Ukraine", "UnitedArabEmirates", "UnitedKingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "VirginIslands", "WakeIsland", "WallisandFutuna", "WestBank", "WesternSahara", "Yemen", "Zambia", "Zimbabwe" ], "type": "string" }, "AccountNumber": { "description": "Bank account number.", "type": "string" }, "RoutingNumber": { "description": "Bank routing number.", "type": "string" }, "IsActive": { "description": "Bank Account Status", "type": "boolean" }, "Balance": { "format": "double", "description": "Bank Account balance", "type": "number" }, "AccountNumberUnmasked": { "description": "Unmasked bank account number", "type": "string" } } }, "BankAccountPostMessage": { "required": [ "Name", "BankAccountType", "Country" ], "type": "object", "properties": { "CheckPrintingInfo": { "$ref": "#/components/schemas/CheckPrintingInfoPostMessage" }, "Name": { "description": "Bank account name.", "type": "string" }, "Description": { "description": "Bank account description.", "type": "string" }, "BankAccountType": { "description": "Type of bank account.", "enum": [ "Checking", "Savings" ], "type": "string" }, "Country": { "description": "The country the bank account exists in.", "enum": [ "UnitedStates", "Afghanistan", "Akrotiri", "Albania", "Algeria", "AmericanSamoa", "Andorra", "Angola", "Anguilla", "Antarctica", "AntiguaandBarbuda", "Argentina", "Armenia", "Aruba", "AshmoreandCartierIslands", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "BassasdaIndia", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "BosniaandHerzegovina", "Botswana", "BouvetIsland", "Brazil", "BritishIndianOceanTerritory", "BritishVirginIslands", "Brunei", "Bulgaria", "BurkinaFaso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "CapeVerde", "CaymanIslands", "CentralAfricanRepublic", "Chad", "Chile", "China", "ChristmasIsland", "ClippertonIsland", "CocosIslands", "Colombia", "Comoros", "DemocraticRepublicOfTheCongo", "RepublicOfTheCongo", "CookIslands", "CoralSeaIslands", "CostaRica", "CotedIvoire", "Croatia", "Cuba", "Cyprus", "CzechRepublic", "Denmark", "Dhekelia", "Djibouti", "Dominica", "DominicanRepublic", "Ecuador", "Egypt", "ElSalvador", "EquatorialGuinea", "Eritrea", "Estonia", "Ethiopia", "EuropaIsland", "FalklandIslands", "FaroeIslands", "Fiji", "Finland", "France", "FrenchGuiana", "FrenchPolynesia", "FrenchSouthernandAntarcticLands", "Gabon", "Gambia", "GazaStrip", "Georgia", "Germany", "Ghana", "Gibraltar", "GloriosoIslands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "GuineaBissau", "Guyana", "Haiti", "HeardIslandandMcDonaldIslands", "VaticanCity", "Honduras", "HongKong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "IsleofMan", "Israel", "Italy", "Jamaica", "JanMayen", "Japan", "Jersey", "Jordan", "JuandeNovaIsland", "Kazakhstan", "Kenya", "Kiribati", "NorthKorea", "SouthKorea", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "MarshallIslands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "NavassaIsland", "Nepal", "Netherlands", "NetherlandsAntilles", "NewCaledonia", "NewZealand", "Nicaragua", "Niger", "Nigeria", "Niue", "NorfolkIsland", "NorthernMarianaIslands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "PapuaNewGuinea", "ParacelIslands", "Paraguay", "Peru", "Philippines", "PitcairnIslands", "Poland", "Portugal", "PuertoRico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "SaintHelena", "SaintKittsandNevis", "SaintLucia", "SaintPierreandMiquelon", "SaintVincentandtheGrenadines", "Samoa", "SanMarino", "SaoTomeandPrincipe", "SaudiArabia", "Senegal", "SerbiaandMontenegro", "Seychelles", "SierraLeone", "Singapore", "Slovakia", "Slovenia", "SolomonIslands", "Somalia", "SouthAfrica", "SouthGeorgiaandtheSouthSandwichIslands", "Spain", "SpratlyIslands", "SriLanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "TimorLeste", "Togo", "Tokelau", "Tonga", "TrinidadandTobago", "TromelinIsland", "Tunisia", "Turkey", "Turkmenistan", "TurksandCaicosIslands", "Tuvalu", "Uganda", "Ukraine", "UnitedArabEmirates", "UnitedKingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "VirginIslands", "WakeIsland", "WallisandFutuna", "WestBank", "WesternSahara", "Yemen", "Zambia", "Zimbabwe" ], "type": "string" }, "AccountNumber": { "description": "Bank account number.", "type": "string" }, "RoutingNumber": { "description": "Bank routing number. If the bank is in Canada, the routing number should be provided as a zero followed by the three digit institution number, followed by the five digit transit number.", "type": "string" } } }, "BankAccountPutMessage": { "required": [ "CheckPrintingInfo", "Name", "BankAccountType", "Country" ], "type": "object", "properties": { "CheckPrintingInfo": { "$ref": "#/components/schemas/CheckPrintingInfoPutMessage" }, "Name": { "description": "Bank account name.", "type": "string" }, "Description": { "description": "Bank account description.", "type": "string" }, "BankAccountType": { "description": "Type of bank account.", "enum": [ "Checking", "Savings" ], "type": "string" }, "Country": { "description": "The country the bank account exists in.", "enum": [ "UnitedStates", "Afghanistan", "Akrotiri", "Albania", "Algeria", "AmericanSamoa", "Andorra", "Angola", "Anguilla", "Antarctica", "AntiguaandBarbuda", "Argentina", "Armenia", "Aruba", "AshmoreandCartierIslands", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "BassasdaIndia", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "BosniaandHerzegovina", "Botswana", "BouvetIsland", "Brazil", "BritishIndianOceanTerritory", "BritishVirginIslands", "Brunei", "Bulgaria", "BurkinaFaso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "CapeVerde", "CaymanIslands", "CentralAfricanRepublic", "Chad", "Chile", "China", "ChristmasIsland", "ClippertonIsland", "CocosIslands", "Colombia", "Comoros", "DemocraticRepublicOfTheCongo", "RepublicOfTheCongo", "CookIslands", "CoralSeaIslands", "CostaRica", "CotedIvoire", "Croatia", "Cuba", "Cyprus", "CzechRepublic", "Denmark", "Dhekelia", "Djibouti", "Dominica", "DominicanRepublic", "Ecuador", "Egypt", "ElSalvador", "EquatorialGuinea", "Eritrea", "Estonia", "Ethiopia", "EuropaIsland", "FalklandIslands", "FaroeIslands", "Fiji", "Finland", "France", "FrenchGuiana", "FrenchPolynesia", "FrenchSouthernandAntarcticLands", "Gabon", "Gambia", "GazaStrip", "Georgia", "Germany", "Ghana", "Gibraltar", "GloriosoIslands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "GuineaBissau", "Guyana", "Haiti", "HeardIslandandMcDonaldIslands", "VaticanCity", "Honduras", "HongKong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "IsleofMan", "Israel", "Italy", "Jamaica", "JanMayen", "Japan", "Jersey", "Jordan", "JuandeNovaIsland", "Kazakhstan", "Kenya", "Kiribati", "NorthKorea", "SouthKorea", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "MarshallIslands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "NavassaIsland", "Nepal", "Netherlands", "NetherlandsAntilles", "NewCaledonia", "NewZealand", "Nicaragua", "Niger", "Nigeria", "Niue", "NorfolkIsland", "NorthernMarianaIslands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "PapuaNewGuinea", "ParacelIslands", "Paraguay", "Peru", "Philippines", "PitcairnIslands", "Poland", "Portugal", "PuertoRico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "SaintHelena", "SaintKittsandNevis", "SaintLucia", "SaintPierreandMiquelon", "SaintVincentandtheGrenadines", "Samoa", "SanMarino", "SaoTomeandPrincipe", "SaudiArabia", "Senegal", "SerbiaandMontenegro", "Seychelles", "SierraLeone", "Singapore", "Slovakia", "Slovenia", "SolomonIslands", "Somalia", "SouthAfrica", "SouthGeorgiaandtheSouthSandwichIslands", "Spain", "SpratlyIslands", "SriLanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "TimorLeste", "Togo", "Tokelau", "Tonga", "TrinidadandTobago", "TromelinIsland", "Tunisia", "Turkey", "Turkmenistan", "TurksandCaicosIslands", "Tuvalu", "Uganda", "Ukraine", "UnitedArabEmirates", "UnitedKingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "VirginIslands", "WakeIsland", "WallisandFutuna", "WestBank", "WesternSahara", "Yemen", "Zambia", "Zimbabwe" ], "type": "string" }, "AccountNumber": { "description": "Bank account number.", "type": "string" }, "RoutingNumber": { "description": "Bank routing number. If the bank is in Canada, the routing number should be provided as a zero followed by the three digit institution number, followed by the five digit transit number.", "type": "string" } } }, "BankAccountQuickDepositMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Quick deposit unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the quick deposit was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the quick deposit, if applicable.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Amount included in the quick deposit.", "type": "number" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "OffsetGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as a label for this deposit.", "type": "integer" } } }, "BankAccountQuickDepositSaveMessage": { "required": [ "EntryDate", "OffsetGLAccountId", "Amount", "AccountingEntity" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the quick deposit was recorded.", "type": "string" }, "OffsetGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as a label for this deposit. For instance, if you're depositing money collected from a washing machine, you might select the \"Laundry income\" account.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount to be deposited.", "type": "number" }, "Memo": { "description": "Memo associated with the quick deposit.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" } } }, "BankAccountQuickDepositSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "StartDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankAccountSearchMessage": { "description": "This object represents a filter for a bank account search.", "type": "object", "properties": { "BankAccountStatus": { "description": "Filters results by the status of the bank account. If no status is specified, bank accounts with any status will be returned.", "enum": [ "Active", "InActive" ], "type": "string" }, "BankName": { "description": "Filters results to any bank account whose name *contains* the specified value.", "type": "string" }, "RoutingNumbers": { "description": "Filters results to any bank accounts whose routing number *contains* the specified value.", "type": "array", "items": { "type": "string" } } } }, "BankAccountTransactionMessage": { "description": "Bank account transaction.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "TransactionType": { "description": "Type of transaction.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "CheckNumber": { "description": "Check number associated with the transaction, if applicable.", "type": "string" }, "Memo": { "description": "Memo associated with the transaction, if applicable.", "type": "string" }, "Amount": { "format": "double", "description": "The total amount of the transaction.", "type": "number" }, "ReconciliationStatus": { "description": "Indicates the reconciliation status of the transaction.", "enum": [ "Unknown", "UnReconciled", "Cleared", "Reconciled" ], "type": "string" }, "PaidBy": { "description": "The entity that made the payment.", "type": "array", "items": { "$ref": "#/components/schemas/PaidByMessage" } }, "PaidTo": { "description": "The entity that received the payment.", "type": "array", "items": { "$ref": "#/components/schemas/PayeeMessage" } }, "Balance": { "format": "double", "description": "The bank account balance after this transaction was applied.", "type": "number" } } }, "BankAccountTransactionSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "SelectionEntityId": { "format": "int32", "description": "Filters results to any transaction containing journal lines for an entity associated with the specified entity id value. The id must be of the type specified in SelectionEntityType.", "type": "integer" }, "SelectionEntityType": { "description": "Specifies the type of entity that SelectionEntityId refers to.", "enum": [ "Company", "Rental", "RentalOwner", "Association" ], "type": "string" }, "StartDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankAccountTransferAccountingEntitySaveMessage": { "required": [ "Id", "AccountingEntityType" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "The accounting entity unique identifier.", "type": "integer" }, "AccountingEntityType": { "description": "The type of accounting entity.", "enum": [ "Association", "Rental", "Company" ], "type": "string" }, "UnitId": { "format": "int32", "description": "The unit unique identifier for the accounting entity.", "type": "integer" } } }, "BankAccountTransferMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Transfer unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the transfer was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the transfer, if applicable.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "TotalAmount": { "format": "double", "description": "Total amount of the transfer.", "type": "number" }, "TransferToBankAccountId": { "format": "int32", "description": "Bank account identifier the money was transferred to.", "type": "integer" } } }, "BankAccountTransferSaveMessage": { "required": [ "EntryDate", "TransferToBankAccountId", "TotalAmount", "AccountingEntity" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "The date the transfer was recorded.", "type": "string" }, "TransferToBankAccountId": { "format": "int32", "description": "Bank account identifier the money will be transferred to.", "type": "integer" }, "TotalAmount": { "format": "double", "description": "Total amount to transfer.", "type": "number" }, "Memo": { "description": "Memo associated with the transfer, if applicable.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/BankAccountTransferAccountingEntitySaveMessage" } } }, "BankAccountTransferSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "StartDate": { "format": "date", "description": "Filters results to any transfers that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transfers that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankAccountWithdrawalMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Withdrawal unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the withdrawal was recorded.", "type": "string" }, "Memo": { "description": "Memo associated with the withdrawal, if applicable.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Total amount of the withdrawal.", "type": "number" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "OffsetGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting GL account acts as a label for this withdrawal. For instance, if you're withdrawing money due to a bank fee, you might select the \"Bank fees\" expense account.", "type": "integer" } } }, "BankAccountWithdrawalSaveMessage": { "required": [ "EntryDate", "OffsetGLAccountId", "Amount", "AccountingEntity" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the withdrawal was recorded.", "type": "string" }, "OffsetGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as a label for this withdrawal. For instance, if you're withdrawing money due to a bank fee, you might select the \"Bank fees\" expense account.", "type": "integer" }, "Amount": { "format": "double", "description": "Withdrawal amount.", "type": "number" }, "Memo": { "description": "Memo associated with the withdrawal, if applicable.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" } } }, "BankAccountWithdrawalSearchMessage": { "required": [ "StartDate", "EndDate" ], "type": "object", "properties": { "StartDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transactions that were recorded on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" } } }, "BankLockboxDataAssociationMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Association unique identifier.", "type": "integer" }, "Name": { "description": "Association name.", "type": "string" }, "OperatingBankAccountId": { "format": "int32", "description": "Primary bank account that an association uses for its income and expenses.", "type": "integer" } } }, "BankLockboxDataAssociationOwnerMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Association owner unique identifier.", "type": "integer" }, "FirstName": { "description": "Association owner first name.", "type": "string" }, "LastName": { "description": "Association owner last name.", "type": "string" }, "Email": { "description": "Association owner email.", "type": "string" }, "AlternateEmail": { "description": "Association owner alternate email.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers associated with the association owner.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "DelinquencyStatus": { "description": "Indicates the delinquency status of the association owner.", "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ], "type": "string" } } }, "BankLockboxDataMessage": { "type": "object", "properties": { "Association": { "$ref": "#/components/schemas/BankLockboxDataAssociationMessage" }, "OwnershipAccounts": { "description": "Information about ownership accounts that belong to the association.", "type": "array", "items": { "$ref": "#/components/schemas/BankLockboxDataOwnershipAccountMessage" } } } }, "BankLockboxDataOwnershipAccountMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Association ownership account unique identifier.", "type": "integer" }, "UnitNumber": { "description": "Unit number of the unit for this ownership account.", "type": "string" }, "UnitAddress": { "$ref": "#/components/schemas/AddressMessage" }, "DelinquencyStatus": { "description": "Indicates the delinquency status of the ownership account", "enum": [ "NoDelinquency", "InCollections", "InForeclosure", "Foreclosed" ], "type": "string" }, "AssociationOwners": { "description": "Association owners for this ownership account.", "type": "array", "items": { "$ref": "#/components/schemas/BankLockboxDataAssociationOwnerMessage" } } } }, "BankLockboxDataSearchMessage": { "type": "object", "properties": { "AssociationIds": { "description": "Filters results to only include Associations with matching IDs", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "BillFileMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "File unique identifier.", "type": "integer" }, "Title": { "description": "The title of the file.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Size": { "format": "int64", "description": "Size of the file, in kilobytes.", "type": "integer" }, "ContentType": { "description": "MIME type of the file.", "type": "string" }, "UploadedDateTime": { "format": "date-time", "description": "Date and time the file was uploaded.", "type": "string" } } }, "BillLineMessage": { "description": "Bill line items.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The bill line item unique identifier.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "GLAccount": { "$ref": "#/components/schemas/GLAccountMessage" }, "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "Markup": { "$ref": "#/components/schemas/BillMarkupMessage" }, "Memo": { "description": "Description of the line item.", "type": "string" } } }, "BillLinePostMessage": { "description": "Bill line item.", "required": [ "AccountingEntity", "GlAccountId", "Amount" ], "type": "object", "properties": { "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The following general ledger accounts are not valid: Accounts Payable, Accounts Receivable, Undeposited Funds or any general leger account referencing a bank account.", "type": "integer" }, "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "Markup": { "$ref": "#/components/schemas/BillMarkupSaveMessage" }, "Memo": { "description": "Memo for the line item. The value cannot exceed 240 characters.", "type": "string" } } }, "BillLinePutMessage": { "description": "Bill line item.", "required": [ "AccountingEntity", "GlAccountId", "Amount" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "Bill line item unique identifier.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The following general ledger accounts are not valid: Accounts Payable, Accounts Receivable, Undeposited Funds or any general leger account referencing a bank account.", "type": "integer" }, "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "Markup": { "$ref": "#/components/schemas/BillMarkupSaveMessage" }, "Memo": { "description": "Memo for the line item. The value cannot exceed 240 characters.", "type": "string" } } }, "BillMarkupMessage": { "description": "Bill mark up.", "type": "object", "properties": { "Amount": { "format": "double", "description": "The mark up amount.", "type": "number" }, "Type": { "description": "The markup type.", "enum": [ "Percent", "Amount" ], "type": "string" } } }, "BillMarkupSaveMessage": { "description": "Bill mark up.", "required": [ "Amount", "Type" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "The mark up amount. The value should be relative to the markup `Type`. If the mark up `Type` is `Percent` the value cannot exceed 100.", "type": "number" }, "Type": { "description": "The markup type.", "enum": [ "Percent", "Amount" ], "type": "string" } } }, "BillMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Bill unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the bill.", "type": "string" }, "DueDate": { "format": "date", "description": "The date that payment is due to the vendor.", "type": "string" }, "PaidDate": { "format": "date", "description": "The date that payment was made to the vendor.", "type": "string" }, "Memo": { "description": "A description of what the invoice was for.", "type": "string" }, "VendorId": { "format": "int32", "description": "Unique identifier of the vendor who submitted the bill.", "type": "integer" }, "WorkOrderId": { "format": "int32", "description": "Unique identifier of the work order associated with this bill.", "type": "integer" }, "ReferenceNumber": { "description": "The invoice or reference number that the vendor assigned to the invoice.", "type": "string" }, "ApprovalStatus": { "description": "The current approval status for the bill.", "enum": [ "NotNeeded", "ApprovalRequired", "Approved", "Pending", "Rejected" ], "type": "string" }, "Lines": { "description": "A collection of line items associated with the bill.", "type": "array", "items": { "$ref": "#/components/schemas/BillLineMessage" } } } }, "BillPaymentAccountingEntityMessage": { "description": "The accounting entity associated with the payment line item.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The accounting entity unique identifier.", "type": "integer" }, "AccountingEntityType": { "description": "Indicates the type of the accounting entity.", "enum": [ "Association", "Rental", "Company" ], "type": "string" }, "UnitId": { "format": "int32", "description": "The unit unique identifier for the accounting entity", "type": "integer" } } }, "BillPaymentLineMessage": { "description": "Payment line items.", "type": "object", "properties": { "AccountingEntity": { "$ref": "#/components/schemas/BillPaymentAccountingEntityMessage" }, "GLAccountId": { "format": "int32", "description": "The general ledger account the line item is allocated to.", "type": "integer" }, "Amount": { "format": "double", "description": "Line item amount.", "type": "number" } } }, "BillPaymentLinePostMessage": { "required": [ "BillLineId", "Amount" ], "type": "object", "properties": { "BillLineId": { "format": "int32", "description": "The unique identifier of the bill line item toward which the payment is being made.", "type": "integer" }, "Amount": { "format": "double", "description": "The amount that is being paid toward the bill line item.", "type": "number" } } }, "BillPaymentMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Bill payment unique identifier.", "type": "integer" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the payment was made from.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the payment was made.", "type": "string" }, "Memo": { "description": "A high-level description of the payment.", "type": "string" }, "CheckNumber": { "description": "Number of the check used to make the payment.", "type": "string" }, "PaidBillIds": { "description": "A collection of bill identifiers that the payment was applied to.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AppliedVendorCredits": { "description": "A collection of vendor credits that was applied in the bill payment.", "type": "array", "items": { "$ref": "#/components/schemas/AppliedVendorCreditMessage" } }, "Lines": { "description": "A collection of payment line items.", "type": "array", "items": { "$ref": "#/components/schemas/BillPaymentLineMessage" } } } }, "BillPaymentPostMessage": { "required": [ "BankAccountId", "EntryDate", "Lines" ], "type": "object", "properties": { "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the payment was made from.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the payment was made.", "type": "string" }, "Memo": { "description": "A high-level description of the payment. The value cannot exceed 240 characters.", "type": "string" }, "CheckNumber": { "description": "Number of the check used to make the payment. The value cannot exceed 30 characters.", "type": "string" }, "Lines": { "description": "A collection of payment line items.", "type": "array", "items": { "$ref": "#/components/schemas/BillPaymentLinePostMessage" } } } }, "BillPostMessage": { "description": "This object represents a bill.", "required": [ "Date", "DueDate", "VendorId", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date that the bill was received. This date typically corresponds with a Bill Received Date, Invoice Date, or Invoice Received Date from an invoice. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDate": { "format": "date", "description": "The date that payment is due to the vendor. The due date must be after the value in the `Date` field. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "A description of what the invoice was for. The value cannot exceed 245 characters.", "type": "string" }, "VendorId": { "format": "int32", "description": "The unique identifier of the vendor or supplier who sent you an invoice.", "type": "integer" }, "WorkOrderId": { "format": "int32", "description": "Unique identifier of the work order associated with this bill.", "type": "integer" }, "ReferenceNumber": { "description": "The reference or invoice number that the vendor assigned to the invoice. The value cannot exceed 40 characters.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the bill.", "type": "array", "items": { "$ref": "#/components/schemas/BillLinePostMessage" } } } }, "BillPutMessage": { "description": "This object represents a bill.", "required": [ "Date", "DueDate", "VendorId" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date that an invoice was received. This date typically corresponds with a Bill Received Date, Invoice Date, or Invoice Received Date from an invoice. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDate": { "format": "date", "description": "The date that payment for a bill is due to the vendor. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "A description of what the invoice was for. The value cannot exceed 245 characters.", "type": "string" }, "VendorId": { "format": "int32", "description": "The unique identifier of the vendor or supplier who sent you an invoice.", "type": "integer" }, "ReferenceNumber": { "description": "The reference or invoice number that the vendor assigned to the invoice. The value cannot exceed 40 characters.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the bill.", "type": "array", "items": { "$ref": "#/components/schemas/BillLinePutMessage" } } } }, "BillSearchMessage": { "type": "object", "properties": { "EntityId": { "format": "int32", "description": "Filters results to any bill containing line items associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "type": "integer" }, "EntityType": { "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "VendorId": { "format": "int32", "description": "Filters results to bills associated with a specific vendor.", "type": "integer" }, "ReferenceNumber": { "description": "Filters results to bills whose reference number contains the specified value.", "type": "string" }, "PaidStatus": { "description": "Filters results by the bill's paid status. If no status is specified, bills with any status will be returned.", "enum": [ "Paid", "Unpaid", "UncollectedMarkups" ], "type": "string" }, "FromPaidDate": { "format": "date", "description": "Filters results to any bill whose paid date is greater than or equal to the specified value.", "type": "string" }, "ToPaidDate": { "format": "date", "description": "Filters results to any bill whose paid date is less than or equal to the specified value.", "type": "string" }, "ApprovalStatuses": { "description": "Filters the results to bills matching the specified approval statuses. If no approval status is specified, bills with any status will be returned.", "type": "array", "items": { "enum": [ "NotNeeded", "ApprovalRequired", "Approved", "Pending", "Rejected" ], "type": "string" } } } }, "BudgetDetailsMessage": { "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier the budget is related to.", "type": "integer" }, "GLAccountSubType": { "description": "Describes the subtype of the general ledger account.", "enum": [ "CurrentAsset", "FixedAsset", "CurrentLiability", "LongTermLiability", "Equity", "Income", "NonOperatingIncome", "OperatingExpenses", "NonOperatingExpenses" ], "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all monthly amounts in the budget.", "type": "number" }, "MonthlyAmounts": { "$ref": "#/components/schemas/BudgetMonthlyAmountsMessage" } } }, "BudgetDetailsSaveMessage": { "required": [ "GLAccountId", "MonthlyAmounts" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account identifier to record the budget details under.", "type": "integer" }, "MonthlyAmounts": { "$ref": "#/components/schemas/BudgetMonthlyAmountsSaveMessage" } } }, "BudgetMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Budget unique identifier.", "type": "integer" }, "Name": { "description": "Name of the budget.", "type": "string" }, "StartDate": { "format": "date", "description": "Start date of the budget.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the budget.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "Details": { "description": "The details of the budget.", "type": "array", "items": { "$ref": "#/components/schemas/BudgetDetailsMessage" } } } }, "BudgetMonthlyAmountsMessage": { "type": "object", "properties": { "January": { "format": "double", "description": "The amount for January.", "type": "number" }, "February": { "format": "double", "description": "The amount for February.", "type": "number" }, "March": { "format": "double", "description": "The amount for March.", "type": "number" }, "April": { "format": "double", "description": "The amount for April.", "type": "number" }, "May": { "format": "double", "description": "The amount for May.", "type": "number" }, "June": { "format": "double", "description": "The amount for June.", "type": "number" }, "July": { "format": "double", "description": "The amount for July.", "type": "number" }, "August": { "format": "double", "description": "The amount for August.", "type": "number" }, "September": { "format": "double", "description": "The amount for September.", "type": "number" }, "October": { "format": "double", "description": "The amount for October.", "type": "number" }, "November": { "format": "double", "description": "The amount for November.", "type": "number" }, "December": { "format": "double", "description": "The amount for December.", "type": "number" } } }, "BudgetMonthlyAmountsSaveMessage": { "required": [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], "type": "object", "properties": { "January": { "format": "double", "description": "The amount for January.", "type": "number" }, "February": { "format": "double", "description": "The amount for February.", "type": "number" }, "March": { "format": "double", "description": "The amount for March.", "type": "number" }, "April": { "format": "double", "description": "The amount for April.", "type": "number" }, "May": { "format": "double", "description": "The amount for May.", "type": "number" }, "June": { "format": "double", "description": "The amount for June.", "type": "number" }, "July": { "format": "double", "description": "The amount for July.", "type": "number" }, "August": { "format": "double", "description": "The amount for August.", "type": "number" }, "September": { "format": "double", "description": "The amount for September.", "type": "number" }, "October": { "format": "double", "description": "The amount for October.", "type": "number" }, "November": { "format": "double", "description": "The amount for November.", "type": "number" }, "December": { "format": "double", "description": "The amount for December.", "type": "number" } } }, "BudgetPostMessage": { "required": [ "Name", "PropertyId", "StartMonth", "FiscalYear", "Details" ], "type": "object", "properties": { "Name": { "description": "Name of the budget.", "type": "string" }, "PropertyId": { "format": "int32", "description": "Property unique identifier that the budget belongs to.", "type": "integer" }, "StartMonth": { "description": "The month the fiscal year starts for the budget.", "enum": [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], "type": "string" }, "FiscalYear": { "format": "int32", "description": "The fiscal year for the budget. The value must be formatted as YYYY.", "type": "integer" }, "Details": { "description": "The financial details associated with the budget.", "type": "array", "items": { "$ref": "#/components/schemas/BudgetDetailsSaveMessage" } } } }, "BudgetPutMessage": { "required": [ "Name", "Details" ], "type": "object", "properties": { "Name": { "description": "Name of the budget.", "type": "string" }, "Details": { "description": "The financial details associated with the budget.", "type": "array", "items": { "$ref": "#/components/schemas/BudgetDetailsSaveMessage" } } } }, "BudgetSearchMessage": { "type": "object", "properties": { "PropertyIds": { "description": "Filters results to any budget associated to any of the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "FiscalYear": { "format": "int32", "description": "Filters results to any budgets that end in the given fiscal year. FiscalYear must be a positive number.", "type": "integer" }, "Name": { "description": "Filters results to any budgets whose name *contains* the specified value.", "type": "string" } } }, "CancellationToken": { "type": "object", "properties": { "IsCancellationRequested": { "type": "boolean" }, "CanBeCanceled": { "type": "boolean" }, "WaitHandle": { "$ref": "#/components/schemas/WaitHandle" } } }, "CCPaymentsMessage": { "description": "Credit card payment settings.", "type": "object", "properties": { "PaymentsEnabled": { "description": "Indicates whether credit card payments are enabled in the Buildium Resident Center for all residents of this property.", "type": "boolean" } } }, "CCPaymentsPutMessage": { "description": "Credit card payment settings.", "required": [ "PaymentsEnabled" ], "type": "object", "properties": { "PaymentsEnabled": { "description": "Indicates whether credit card payments are enabled in the Buildium Resident Center for all residents of this property. Note, to enable credit card payments the operating bank account for the property must have credit card payments provisioned.", "type": "boolean" } } }, "ChargeRecurringTransactionPostMessage": { "required": [ "GLAccountId", "Amount", "FirstOccurrenceDate", "PostDaysInAdvance", "Frequency" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier under which the charge amount will be recorded. The general ledger account can only be an income or liability account.", "type": "integer" }, "Amount": { "format": "double", "description": "The amount to record when applying the charge to the lease ledger.", "type": "number" }, "Memo": { "description": "Memo associated with the recurring charge. This value cannot exceed 65 characters.", "type": "string" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the charge will first be processed. This value along with the `Frequency` is also used as the basis for the date set on the transactions in future occurrences.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the charge will post on the lease ledger. This setting can be used to add the charge to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022. Note, the value must be between 0 to 45 or set to 60, 75 or 90.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring charge will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "UntilEndOfTerm", "SpecificNumber" ], "type": "string" }, "NumberOfOccurrences": { "format": "int32", "description": "Indicates the number of times the recurring transaction should be processed. This value is required if the `Duration` field is set to `SpecificNumber`. This value can not exceed 100.", "type": "integer" } } }, "ChargeRecurringTransactionPutMessage": { "required": [ "Id", "GLAccountId", "Amount", "FirstOccurrenceDate", "PostDaysInAdvance", "Frequency" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier for the charge.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier under which the charge amount will be recorded. The general ledger account can only be an income or liability account.", "type": "integer" }, "Amount": { "format": "double", "description": "The amount to record when applying the charge to the lease ledger.", "type": "number" }, "Memo": { "description": "Memo associated with the recurring charge. This value cannot exceed 65 characters.", "type": "string" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the charge will first be processed. This value along with the `Frequency` is also used as the basis for the date set on the transactions in future occurrences.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the charge will post on the lease ledger. This setting can be used to add the charge to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022. Note, the value must be between 0 to 45 or set to 60, 75 or 90.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring charge will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "UntilEndOfTerm", "SpecificNumber" ], "type": "string" }, "NumberOfOccurrences": { "format": "int32", "description": "Indicates the number of times the recurring transaction should be processed. This value is required if the `Duration` field is set to `SpecificNumber`. This value can not exceed 100.", "type": "integer" } } }, "CheckPrintingInfoMessage": { "type": "object", "properties": { "EnableRemoteCheckPrinting": { "description": "Indicates whether remote check printing is enabled.", "type": "boolean" }, "EnableLocalCheckPrinting": { "description": "Indicates whether local check printing is enabled.", "type": "boolean" }, "CheckLayoutType": { "description": "The check layout type.", "enum": [ "Voucher1StubBottomMemo1Signature", "Voucher2StubBottomMemo1Signature", "Voucher2StubBottomMemo2Signatures", "Voucher2StubTopMemo", "Voucher2StubsPrePrintedLayout" ], "type": "string" }, "SignatureHeading": { "description": "The check signature heading.", "type": "string" }, "FractionalNumber": { "description": "The fractional form of the routing number. Typically is used to identify the bank of the check in cases where the MICR is unreadable.", "type": "string" }, "BankInformationLine1": { "description": "Bank information line 1.", "type": "string" }, "BankInformationLine2": { "description": "Bank information line 2.", "type": "string" }, "BankInformationLine3": { "description": "Bank information line 3.", "type": "string" }, "BankInformationLine4": { "description": "Bank information line 4.", "type": "string" }, "BankInformationLine5": { "description": "Bank information line 5.", "type": "string" }, "CompanyInformationLine1": { "description": "Company information 1.", "type": "string" }, "CompanyInformationLine2": { "description": "Company information 2.", "type": "string" }, "CompanyInformationLine3": { "description": "Company information 3.", "type": "string" }, "CompanyInformationLine4": { "description": "Company information 4.", "type": "string" }, "CompanyInformationLine5": { "description": "Company information 5.", "type": "string" } } }, "CheckPrintingInfoPostMessage": { "type": "object", "properties": { "EnableRemoteCheckPrinting": { "description": "Indicates whether remote check printing is enabled.", "type": "boolean" }, "EnableLocalCheckPrinting": { "description": "Indicates whether local check printing is enabled.", "type": "boolean" }, "CheckLayoutType": { "description": "The check layout type. Defaults to `Voucher2StubsPrePrintedLayout` if not specified.", "enum": [ "Voucher1StubBottomMemo1Signature", "Voucher2StubBottomMemo1Signature", "Voucher2StubBottomMemo2Signatures", "Voucher2StubTopMemo", "Voucher2StubsPrePrintedLayout" ], "type": "string" }, "SignatureHeading": { "description": "The signature heading. Defaults to \"VOID AFTER 90 DAYS\" if not specified.", "type": "string" }, "FractionalNumber": { "description": "The fractional form of the routing number. Typically is used to identify the bank of the check in cases where the MICR is unreadable.", "type": "string" }, "BankInformationLine1": { "description": "Bank information line 1.", "type": "string" }, "BankInformationLine2": { "description": "Bank information line 2.", "type": "string" }, "BankInformationLine3": { "description": "Bank information line 3.", "type": "string" }, "BankInformationLine4": { "description": "Bank information line 4.", "type": "string" }, "BankInformationLine5": { "description": "Bank information line 5.", "type": "string" }, "CompanyInformationLine1": { "description": "Company information 1. Defaults to the company name from the account if not specified.", "type": "string" }, "CompanyInformationLine2": { "description": "Company information 2. Defaults to the company address if not specified.", "type": "string" }, "CompanyInformationLine3": { "description": "Company information 3. Defaults to the company address if not specified.", "type": "string" }, "CompanyInformationLine4": { "description": "Company information 4. Defaults to the company address if not specified.", "type": "string" }, "CompanyInformationLine5": { "description": "Company information 5. Defaults to the company address if not specified.", "type": "string" } } }, "CheckPrintingInfoPutMessage": { "required": [ "EnableRemoteCheckPrinting", "EnableLocalCheckPrinting", "CheckLayoutType" ], "type": "object", "properties": { "EnableRemoteCheckPrinting": { "description": "Indicates whether remote check printing is enabled.", "type": "boolean" }, "EnableLocalCheckPrinting": { "description": "Indicates whether local check printing is enabled.", "type": "boolean" }, "CheckLayoutType": { "description": "The check layout type.", "enum": [ "Voucher1StubBottomMemo1Signature", "Voucher2StubBottomMemo1Signature", "Voucher2StubBottomMemo2Signatures", "Voucher2StubTopMemo", "Voucher2StubsPrePrintedLayout" ], "type": "string" }, "SignatureHeading": { "description": "The signature heading.", "type": "string" }, "FractionalNumber": { "description": "The fractional form of the routing number. Typically is used to identify the bank of the check in cases where the MICR is unreadable.", "type": "string" }, "BankInformationLine1": { "description": "Bank information line 1.", "type": "string" }, "BankInformationLine2": { "description": "Bank information line 2.", "type": "string" }, "BankInformationLine3": { "description": "Bank information line 3.", "type": "string" }, "BankInformationLine4": { "description": "Bank information line 4.", "type": "string" }, "BankInformationLine5": { "description": "Bank information line 5.", "type": "string" }, "CompanyInformationLine1": { "description": "Company information 1.", "type": "string" }, "CompanyInformationLine2": { "description": "Company information 2.", "type": "string" }, "CompanyInformationLine3": { "description": "Company information 3.", "type": "string" }, "CompanyInformationLine4": { "description": "Company information 4.", "type": "string" }, "CompanyInformationLine5": { "description": "Company information 5.", "type": "string" } } }, "ClientLeadCreditRequestMessage": { "description": "Lead credit request.", "type": "object", "properties": { "CreditStatus": { "description": "Indicates the current status of the credit.", "enum": [ "Approved", "Declined", "Requested" ], "type": "string" }, "CreditReason": { "description": "Indicates the reason a credit was requested.", "enum": [ "AccidentalFormSubmission", "DuplicateLead", "InvalidContactInformation", "JobSeeker", "Tenant", "Vendor", "WrongPropertyType", "WrongZipCode", "Other" ], "type": "string" }, "Comments": { "description": "Additional comments about the credit request.", "type": "string" }, "RequestDate": { "format": "date", "description": "The date the credit was requested.", "type": "string" } } }, "ClientLeadMessage": { "description": "This is an object that represents a client lead", "type": "object", "properties": { "Id": { "format": "int32", "description": "Client lead unique identifier.", "type": "integer" }, "DateReceived": { "format": "date-time", "description": "The date the lead was received.", "type": "string" }, "Name": { "description": "The name of the lead.", "type": "string" }, "Email": { "description": "The email of the lead.", "type": "string" }, "PhoneNumber": { "description": "The phone number of the lead.", "type": "string" }, "PricePaid": { "format": "double", "description": "The price paid for the lead.", "type": "number" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "PropertyType": { "description": "The property type of the lead's property.", "enum": [ "SingleHomeUpToThreeHundredThousand", "SingleHomeThreeHundredToFiveHundredThousand", "SingleHomeFiveHundredThousandToOneMillion", "SingleHomeOverOneMillion", "MultiFamilyTwoToFourUnits", "MultiFamilyFiveToNineteenUnits", "MultiFamilyTwentyToFortyNineUnits", "MultiFamilyOverOneHundredUnits", "OfficeLessThanTenThousandSqFt", "OfficeTenThousandToOneHundredThousandSqFt", "OfficeOverOneHundredThousandSqFt", "RetailLessThanTenThousandSqFt", "RetailTenThousandToOneHundredThousandSqFt", "RetailOverOneHundredThousandSqFt", "LightManufacturingUpToOneHundredThousandSqFt", "LightManufacturingOverOneHundredThousandSqFt", "WarehouseUpToOneHundredThousandSqFt", "WarehouseOverOneHundredThousandSqFt", "VacationOneToTwoUnits", "VacationOverThreeUnits", "ParkingGarage", "OtherAssociation", "BiotechMissionCritical", "HOATwoToFortyNineUnits", "HOAFiftyToNinetyNineUnits", "HOAOverOneHundredUnits", "COATwoToFortyNineUnits", "COAFiftyToNinetyNineUnits", "COAOverOneHundredUnits", "MobileHomeCommunity" ], "type": "string" }, "Comments": { "description": "Additional comments submitted for the lead.", "type": "string" }, "LeadStatus": { "description": "The current status of the client lead.", "enum": [ "Unknown", "New", "Contacting", "Qualifying", "Closing", "ClosedWon", "ClosedLost" ], "type": "string" }, "CreditRequest": { "$ref": "#/components/schemas/ClientLeadCreditRequestMessage" } } }, "ClientLeadSearchMessage": { "description": "This object represents a filter for a client lead search.", "type": "object", "properties": { "LeadStatuses": { "description": "Filters results to any client leads that are in one of the given statuses.", "type": "array", "items": { "enum": [ "Unknown", "New", "Contacting", "Qualifying", "Closing", "ClosedWon", "ClosedLost" ], "type": "string" } }, "PropertyTypes": { "description": "Filters results to any client leads that have a property in one of the given property types.", "type": "array", "items": { "enum": [ "SingleHomeUpToThreeHundredThousand", "SingleHomeThreeHundredToFiveHundredThousand", "SingleHomeFiveHundredThousandToOneMillion", "SingleHomeOverOneMillion", "MultiFamilyTwoToFourUnits", "MultiFamilyFiveToNineteenUnits", "MultiFamilyTwentyToFortyNineUnits", "MultiFamilyOverOneHundredUnits", "OfficeLessThanTenThousandSqFt", "OfficeTenThousandToOneHundredThousandSqFt", "OfficeOverOneHundredThousandSqFt", "RetailLessThanTenThousandSqFt", "RetailTenThousandToOneHundredThousandSqFt", "RetailOverOneHundredThousandSqFt", "LightManufacturingUpToOneHundredThousandSqFt", "LightManufacturingOverOneHundredThousandSqFt", "WarehouseUpToOneHundredThousandSqFt", "WarehouseOverOneHundredThousandSqFt", "VacationOneToTwoUnits", "VacationOverThreeUnits", "ParkingGarage", "OtherAssociation", "BiotechMissionCritical", "HOATwoToFortyNineUnits", "HOAFiftyToNinetyNineUnits", "HOAOverOneHundredUnits", "COATwoToFortyNineUnits", "COAFiftyToNinetyNineUnits", "COAOverOneHundredUnits", "MobileHomeCommunity" ], "type": "string" } }, "DateReceivedFrom": { "format": "date-time", "description": "Filters results to any client leads that were received on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DateReceivedTo": { "format": "date-time", "description": "Filters results to any client leads that were received on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "IncludeCreditedLeads": { "description": "This will also return client leads that were credited. By default credited leads will not be returned.", "type": "boolean" } } }, "ContactDetailMessage": { "description": "Contact information.", "type": "object", "properties": { "FirstName": { "description": "Contact first name.", "type": "string" }, "LastName": { "description": "Contact last name.", "type": "string" }, "Email": { "description": "Contact email.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/ContactDetailPhoneMessage" } } }, "ContactDetailPhoneMessage": { "description": "Contact phone numbers.", "type": "object", "properties": { "Home": { "description": "Home phone number.", "type": "string" }, "Work": { "description": "Work phone number.", "type": "string" }, "Mobile": { "description": "Mobile phone number.", "type": "string" } } }, "ContactDetailSaveMessage": { "description": "The contact details of the person who made the request.", "required": [ "FirstName" ], "type": "object", "properties": { "FirstName": { "description": "First name of the contact.", "type": "string" }, "LastName": { "description": "Last name of the contact.", "type": "string" }, "Email": { "description": "Email of the contact.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/ContactDetailSavePhoneMessage" } } }, "ContactDetailSavePhoneMessage": { "description": "Contact phone numbers.", "type": "object", "properties": { "Home": { "description": "Home phone number. If provided, the value must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" }, "Work": { "description": "Work phone number. If provided, the value must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" }, "Mobile": { "description": "Mobile phone number. If provided, the value must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" } } }, "ContactInfoMessage": { "description": "Contact information.", "type": "object", "properties": { "FirstName": { "description": "Contact first name.", "type": "string" }, "LastName": { "description": "Contact last name.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "PhoneNumber": { "description": "Contact phone number.", "type": "string" } } }, "ContactRequestTaskMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Request unique identifier.", "type": "integer" }, "Category": { "$ref": "#/components/schemas/TaskCategoryResponseMessage" }, "Title": { "description": "Request title.", "type": "string" }, "Description": { "description": "Request description.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the request.", "type": "integer" }, "ContactDetail": { "$ref": "#/components/schemas/ContactDetailMessage" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "The date and time the request was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the request was last updated.", "type": "string" } } }, "ContactRequestTaskPostMessage": { "required": [ "Title", "AssignedToUserId", "TaskStatus", "Priority", "ContactDetail" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Request description. The description can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "ContactDetail": { "$ref": "#/components/schemas/ContactDetailSaveMessage" } } }, "ContactRequestTaskPutMessage": { "required": [ "Title", "AssignedToUserId", "TaskStatus", "Priority", "ContactDetail" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Message": { "description": "Description of the request update. The message can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "ContactDetail": { "$ref": "#/components/schemas/ContactDetailSaveMessage" } } }, "ContactRequestTaskSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "UnitId": { "format": "int32", "description": "Filters results to any task associated with the unit identifier.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any tasks with the specified category identifier.", "type": "integer" }, "Priorities": { "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "type": "integer" }, "TaskTitle": { "description": "Filters results to any task whose title *contains* the specified value.", "type": "string" } } }, "CosignerMessage": { "description": "This object represents a rental property cosigner.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Cosigner unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the cosigner.", "type": "string" }, "LastName": { "description": "Last name of the cosigner.", "type": "string" }, "Email": { "description": "Email for the cosigner.", "type": "string" }, "AlternateEmail": { "description": "Alternate Email for the cosigner.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers for the cosigner.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "CreatedDateTime": { "format": "date-time", "description": "Created date of this cosigner record.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/AddressMessage" }, "MailingPreference": { "description": "Mailing preference for the cosigner.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" } } }, "CreatedByUserMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the user.", "type": "string" }, "LastName": { "description": "Last name of the user.", "type": "string" }, "Href": { "description": "A link to the user resource.", "type": "string" } } }, "CreditRecurringTransactionPostMessage": { "required": [ "CreditType", "PostDaysInAdvance", "Frequency", "FirstOccurrenceDate" ], "type": "object", "properties": { "CreditType": { "description": "Indicates how the credit will be applied.\r\n", "enum": [ "WaiveUnpaid", "Exchange", "PreviouslyDeposited" ], "type": "string" }, "OffsettingGLAccountId": { "format": "int32", "description": "Sets the offsetting general ledger account identifier for the credit.\r\n
This value must be provided when the `CreditType` field is set to `Exchange` or `PreviouslyDeposited`.\r\n
When the `CreditType` is `Exchange` this must be an *expense* general ledger account type.\r\n
When the `CreditType` is `PreviouslyDeposited` this must be an *equity* general ledger account type.", "type": "integer" }, "PostingRuleGlAccountId": { "format": "int32", "description": "Indicates whether to apply a posting rule when processing the transaction that would only record the credit if a prior payment has been made.\r\n

\r\nSet the field value to the Rent Income general ledger account identifier if the credit should only be recorded when a payment was made and applied to the Rent Income general ledger account.\r\n

\r\nSet the field value to the Accounts Receivable general ledger account identifier if the credit should only be recorded when a payment was made and applied to *any* general ledger account.\r\n

\r\nSet the field value to null to always record the credit.", "type": "integer" }, "Lines": { "description": "Line items describing how the credit is to be allocated when the recurring credit is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLinePostMessage" } }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the credit will post on the lease ledger. This setting can be used to add the credit to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022. Note, the value must be between 0 to 45 or set to 60, 75 or 90.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring credit will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring credit will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "UntilEndOfTerm", "SpecificNumber" ], "type": "string" }, "NumberOfOccurrences": { "format": "int32", "description": "Indicates the number of times the recurring credit should be processed. This value is required if the `Duration` field is set to `SpecificNumber`. This value can not exceed 100.", "type": "integer" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the credit will first be processed. This value along with the `Frequency` is also used as the basis for the date set on the transactions in future occurrences.", "type": "string" }, "Memo": { "description": "Memo associated with the recurring credit. This value cannot exceed 65 characters.", "type": "string" } } }, "DepositDetailMessage": { "description": "Deposit details.", "type": "object", "properties": { "BankGLAccountId": { "format": "int32", "description": "Bank account general ledger identifier.", "type": "integer" }, "PaymentTransactions": { "description": "Collection of payments that were included in the bank deposit transaction.", "type": "array", "items": { "$ref": "#/components/schemas/PaymentTransactionsMessage" } } } }, "EFTPaymentsMessage": { "description": "Electronic payment settings.", "type": "object", "properties": { "PaymentsEnabled": { "description": "Indicates whether EFT payments are enabled in the Buildium Resident Center for all residents of this property.", "type": "boolean" } } }, "EFTPaymentsPutMessage": { "description": "Electronic payment settings.", "required": [ "PaymentsEnabled" ], "type": "object", "properties": { "PaymentsEnabled": { "description": "Indicates whether EFT payments are enabled in the Buildium Resident Center for all residents of this property. Note, to enable EFT payments the operating bank account for the property must have EFT payments provisioned.", "type": "boolean" } } }, "ElectronicPaymentsMessage": { "type": "object", "properties": { "DebitTransactionLimit": { "format": "double", "description": "Debit transaction limit", "type": "number" }, "CreditTransactionLimit": { "format": "double", "description": "Credit transaction limit", "type": "number" }, "DebitMonthlyLimit": { "format": "double", "description": "Monthly debt limit", "type": "number" }, "CreditMonthlyLimit": { "format": "double", "description": "Monthly credit limit", "type": "number" }, "ResidentEFTConvienceFeeAmount": { "format": "double", "description": "Fee charged per transaction by EFT", "type": "number" }, "ResidentCreditCardConvenienceFeeAmount": { "format": "double", "description": "Fee charged per transaction by Credit Card", "type": "number" }, "CreditCardServiceFeePercentage": { "format": "double", "description": "Fee charged for using a Credit Card in transactions", "type": "number" }, "IsCreditCardServiceFeePaidByResident": { "description": "Whether the credit card service fee is paid by residents", "type": "boolean" } } }, "EmailMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Email unique identifier.", "type": "integer" }, "SentDateTime": { "format": "date-time", "description": "The date and time the email was sent.", "type": "string" }, "Subject": { "description": "Email subject.", "type": "string" }, "Sender": { "$ref": "#/components/schemas/EmailSenderMessage" } } }, "EmailPostMessage": { "required": [ "TemplateId", "Subject", "IncludeAlternateEmails", "ExcludeDelinquentRecipients", "IncludeAssociationTenants" ], "type": "object", "properties": { "TemplateId": { "format": "int32", "description": "Unique identifier of the email template to use for the body of the email. Any tokens present in the template will be replaced based on the recipient(s) of the email.", "type": "integer" }, "Subject": { "description": "Email subject.", "type": "string" }, "IncludeAlternateEmails": { "description": "Indicates whether to send the email to the recipient's primary and alternate email addresses.", "type": "boolean" }, "ExcludeDelinquentRecipients": { "description": "Indicates whether to exclude sending emails to association owners that are flagged as delinquent. This only applies to association recipients.", "type": "boolean" }, "IncludeAssociationTenants": { "description": "Indicates whether to include association tenants. Only applies to association properties.", "type": "boolean" }, "PropertyIds": { "description": "A list of association and/or rental property unique identifiers to send the email to. Cannot be populated if 'RecipientIds' is present.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "RecipientIds": { "description": "A list of individual unique identifiers to send the email to. Cannot be populated if 'PropertyIds' is present.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "EmailRecipientMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Recipient unique identifier.", "type": "integer" }, "Name": { "description": "Name of the recipient.", "type": "string" }, "Email": { "description": "Email address of the recipient.", "type": "string" }, "RecipientType": { "description": "The type of recipient.", "enum": [ "Tenant", "AssociationOwner", "RentalOwner", "AssociationTenant", "Applicant", "Vendor", "Staff" ], "type": "string" }, "Href": { "description": "A link to the resource associated with the recipient.", "type": "string" } } }, "EmailSearchMessage": { "required": [ "SentDateTimeFrom", "SentDateTimeTo" ], "type": "object", "properties": { "SentDateTimeFrom": { "format": "date-time", "description": "Filters results to any emails whose sent date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DDTHH:MM:SSZ. The maximum date range is 90 days.", "type": "string" }, "SentDateTimeTo": { "format": "date-time", "description": "Filters results to any emails whose sent date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DDTHH:MM:SSZ. The maximum date range is 90 days.", "type": "string" }, "Subject": { "description": "Filters results to any email whose subject *contains* the specified value.", "type": "string" }, "RecipientNameOrEmail": { "description": "Filters results to any email with a recipient whose name or email address *contains* the specified value.", "type": "string" }, "SenderUserId": { "format": "int32", "description": "Filters results to only emails that were sent by the specified user identifier.", "type": "integer" } } }, "EmailSenderMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the user.", "type": "string" }, "LastName": { "description": "Last name of the user.", "type": "string" }, "Href": { "description": "A link to the user resource.", "type": "string" } } }, "EmergencyContactMessage": { "description": "This is an object that represents an emergency contact.", "type": "object", "properties": { "Name": { "description": "Emergency contact name", "type": "string" }, "RelationshipDescription": { "description": "Emergency contact relationship to the person.", "type": "string" }, "Phone": { "description": "Emergency contact phone number", "type": "string" }, "Email": { "description": "Emergency contact email address.", "type": "string" } } }, "EPaySettingsMessage": { "type": "object", "properties": { "EFTPayments": { "$ref": "#/components/schemas/EFTPaymentsMessage" }, "CreditCardPayments": { "$ref": "#/components/schemas/CCPaymentsMessage" }, "OfflinePayments": { "$ref": "#/components/schemas/OfflinePaymentsMessage" } } }, "EPaySettingsPutMessage": { "required": [ "EFTPayments", "CreditCardPayments", "OfflinePayments" ], "type": "object", "properties": { "EFTPayments": { "$ref": "#/components/schemas/EFTPaymentsPutMessage" }, "CreditCardPayments": { "$ref": "#/components/schemas/CCPaymentsPutMessage" }, "OfflinePayments": { "$ref": "#/components/schemas/OfflinePaymentsPutMessage" } } }, "FileCategoryMessage": { "description": "File category.", "type": "object", "properties": { "Id": { "format": "int32", "description": "File category unique identifier.", "type": "integer" }, "Name": { "description": "Name of the file category.", "type": "string" }, "IsEditable": { "description": "Indicates whether the category is editable.", "type": "boolean" } } }, "FileCategoryPostMessage": { "description": "File category.", "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "Name of the file category. The value cannot exceed 100 characters.", "type": "string" } } }, "FileCategoryPutMessage": { "description": "File Category", "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "Name of the file category. The value cannot exceed 100 characters.", "type": "string" } } }, "FileDownloadMessage": { "type": "object", "properties": { "DownloadUrl": { "description": "A transient URL that can be used to download the requested file. This URL expires after 5 minutes.", "type": "string" } } }, "FileEntityMessage": { "description": "The entity the file is associated to.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Entity unique identifier.", "type": "integer" }, "EntityType": { "description": "The entity type.", "enum": [ "Account", "Association", "AssociationOwner", "AssociationUnit", "Lease", "OwnershipAccount", "PublicAsset", "Rental", "RentalOwner", "RentalUnit", "Tenant", "Vendor" ], "type": "string" }, "Href": { "description": "A link to the entity resource.", "type": "string" } } }, "FileMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "File unique identifier.", "type": "integer" }, "FileEntity": { "$ref": "#/components/schemas/FileEntityMessage" }, "CategoryId": { "format": "int32", "description": "The category identifier assigned to this file.", "type": "integer" }, "Title": { "description": "Title of the file.", "type": "string" }, "Description": { "description": "Description of the file.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Size": { "format": "int32", "description": "Size of the file. Unit of measure is bytes.", "type": "integer" }, "ContentType": { "description": "MIME type of the file.", "type": "string" }, "UploadedDateTime": { "format": "date-time", "description": "Date the file was uploaded.", "type": "string" } } }, "FileNamePostMessage": { "required": [ "FileName" ], "type": "object", "properties": { "FileName": { "description": "Name of file being uploaded. The value can not exceed 255 characters.", "type": "string" } } }, "FilePutMessage": { "required": [ "Title", "CategoryId" ], "type": "object", "properties": { "Title": { "description": "The title of the file. The value cannot exceed 255 characters.", "type": "string" }, "Description": { "description": "A description of the file. The value cannot exceed 65000 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign to this file.", "type": "integer" } } }, "FileSearchMessage": { "description": "An object that contains search criteria for retrieving files.", "type": "object", "properties": { "EntityId": { "format": "int32", "description": "Filters results to any file associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "type": "integer" }, "EntityType": { "description": "Specifies the type of entity that `EntityId` refers to. This field is required if `EntityId` is specified.", "enum": [ "Account", "Association", "AssociationOwner", "AssociationUnit", "Lease", "OwnershipAccount", "PublicAsset", "Rental", "RentalOwner", "RentalUnit", "Tenant", "Vendor" ], "type": "string" }, "CategoryId": { "format": "int32", "description": "Filters results to any file associated with the specified category identifier.", "type": "integer" }, "TitleOrDescription": { "description": "Filters results to files whose title or description *contains* the specified value.", "type": "string" }, "UploadedFrom": { "format": "date", "description": "Filters results to any files that were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "UploadedTo": { "format": "date", "description": "Filters results to any files that were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "PhysicalFileNames": { "description": "Filters results to any files with a `PhysicalFileName`exactly matching one of the provided values.", "type": "array", "items": { "type": "string" } } } }, "FileSharingAccountMessage": { "description": "The file share settings for the account file entity type.", "type": "object", "properties": { "AllResidents": { "description": "Indicates whether file is shared with all residents via the Resident Center.", "type": "boolean" }, "PropertyIds": { "description": "A list of rental property unique identifiers whose residents should receive the file.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AllRentalOwners": { "description": "Indicates whether file is shared with all rental owners via the portal.", "type": "boolean" }, "RentalOwnerIds": { "description": "A list of rental owner unique identifiers that should receive the file.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "WebsiteVisitors": { "description": "Indicates whether file is shared with anyone visiting the company's public site.", "type": "boolean" } } }, "FileSharingAccountPutMessage": { "description": "The file share settings for the account file entity type.", "type": "object", "properties": { "AllResidents": { "description": "Indicates whether file is shared with all residents via the Resident Center.", "type": "boolean" }, "PropertyIds": { "description": "A list of rental property unique identifiers whose residents should receive the file.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AllRentalOwners": { "description": "Indicates whether file is shared with all rental owners via the portal.", "type": "boolean" }, "RentalOwnerIds": { "description": "A list of rental owner unique identifiers that should receive the file.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "WebsiteVisitors": { "description": "Indicates whether file is shared with anyone visiting the company's public site.", "type": "boolean" } } }, "FileSharingAssociationMessage": { "description": "The file share settings for the association file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association. Note: file is automatically shared when file is shared with association owners.", "type": "boolean" } } }, "FileSharingAssociationOwnerMessage": { "description": "The file share settings for the association owner file entity type.", "type": "object", "properties": { "AssociationOwner": { "description": "Indicates whether file is shared with the association owner.", "type": "boolean" } } }, "FileSharingAssociationOwnerPutMessage": { "description": "The file share settings for the association owner file entity type.", "type": "object", "properties": { "AssociationOwner": { "description": "Indicates whether file is shared with the association owner.", "type": "boolean" } } }, "FileSharingAssociationPutMessage": { "description": "The file share settings for the association file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association. Note: file is automatically shared when file is shared with association owners.", "type": "boolean" } } }, "FileSharingAssociationUnitMessage": { "description": "The file share settings for the association unit file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" } } }, "FileSharingAssociationUnitPutMessage": { "description": "The file share settings for the association unit file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" } } }, "FileSharingCommitteeMessage": { "description": "The file share settings for the committee file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" }, "Committee": { "description": "Indicates whether file is shared with association committee.", "type": "boolean" } } }, "FileSharingCommitteePutMessage": { "description": "The file share settings for the committee file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" }, "Committee": { "description": "Indicates whether file is shared with association committee.", "type": "boolean" } } }, "FileSharingLeaseMessage": { "description": "The file share settings for the lease file entity type.", "type": "object", "properties": { "Tenants": { "description": "Indicates whether file is shared with tenants on the lease.", "type": "boolean" }, "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" } } }, "FileSharingLeasePutMessage": { "description": "The file share settings for the lease file entity type.", "type": "object", "properties": { "Tenants": { "description": "Indicates whether file is shared with tenants on the lease.", "type": "boolean" }, "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" } } }, "FileSharingMessage": { "type": "object", "properties": { "Account": { "$ref": "#/components/schemas/FileSharingAccountMessage" }, "Rental": { "$ref": "#/components/schemas/FileSharingRentalMessage" }, "RentalUnit": { "$ref": "#/components/schemas/FileSharingRentalUnitMesage" }, "Lease": { "$ref": "#/components/schemas/FileSharingLeaseMessage" }, "Tenant": { "$ref": "#/components/schemas/FileSharingTenantMessage" }, "RentalOwner": { "$ref": "#/components/schemas/FileSharingRentalOwnerMessage" }, "Association": { "$ref": "#/components/schemas/FileSharingAssociationMessage" }, "AssociationUnit": { "$ref": "#/components/schemas/FileSharingAssociationUnitMessage" }, "OwnershipAccount": { "$ref": "#/components/schemas/FileSharingOwnershipAccountMessage" }, "AssociationOwner": { "$ref": "#/components/schemas/FileSharingAssociationOwnerMessage" }, "Vendor": { "$ref": "#/components/schemas/FileSharingVendorMessage" }, "Committee": { "$ref": "#/components/schemas/FileSharingCommitteeMessage" } } }, "FileSharingOwnershipAccountMessage": { "description": "The file share settings for the ownership account file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" } } }, "FileSharingOwnershipAccountPutMessage": { "description": "The file share settings for the ownership account file entity type.", "type": "object", "properties": { "AssociationOwners": { "description": "Indicates whether file is shared with association owners.", "type": "boolean" }, "BoardMembers": { "description": "Indicates whether file is shared with board members of the association.", "type": "boolean" } } }, "FileSharingPutMessage": { "type": "object", "properties": { "Account": { "$ref": "#/components/schemas/FileSharingAccountPutMessage" }, "Rental": { "$ref": "#/components/schemas/FileSharingRentalPutMessage" }, "RentalUnit": { "$ref": "#/components/schemas/FileSharingRentalUnitPutMesage" }, "Lease": { "$ref": "#/components/schemas/FileSharingLeasePutMessage" }, "Tenant": { "$ref": "#/components/schemas/FileSharingTenantPutMessage" }, "RentalOwner": { "$ref": "#/components/schemas/FileSharingRentalOwnerPutMessage" }, "Association": { "$ref": "#/components/schemas/FileSharingAssociationPutMessage" }, "AssociationUnit": { "$ref": "#/components/schemas/FileSharingAssociationUnitPutMessage" }, "OwnershipAccount": { "$ref": "#/components/schemas/FileSharingOwnershipAccountPutMessage" }, "AssociationOwner": { "$ref": "#/components/schemas/FileSharingAssociationOwnerPutMessage" }, "Vendor": { "$ref": "#/components/schemas/FileSharingVendorPutMessage" }, "Committee": { "$ref": "#/components/schemas/FileSharingCommitteePutMessage" } } }, "FileSharingRentalMessage": { "description": "The file share settings for the rental file entity type.", "type": "object", "properties": { "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" }, "Tenants": { "description": "Indicates whether file is shared with tenants of the property.", "type": "boolean" } } }, "FileSharingRentalOwnerMessage": { "description": "The file share settings for the rental owner file entity type.", "type": "object", "properties": { "RentalOwner": { "description": "Indicates whether file is shared with rental owner of the property.", "type": "boolean" } } }, "FileSharingRentalOwnerPutMessage": { "description": "The file share settings for the rental owner file entity type.", "type": "object", "properties": { "RentalOwner": { "description": "Indicates whether file is shared with the rental owner of the property.", "type": "boolean" } } }, "FileSharingRentalPutMessage": { "description": "The file share settings for the rental file entity type.", "type": "object", "properties": { "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" }, "Tenants": { "description": "Indicates whether file is shared with tenants of the property.", "type": "boolean" } } }, "FileSharingRentalUnitMesage": { "description": "The file share settings for the rental unit file entity type.", "type": "object", "properties": { "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" }, "Tenants": { "description": "Indicates whether file is shared with tenants of the property.", "type": "boolean" } } }, "FileSharingRentalUnitPutMesage": { "description": "The file share settings for the rental unit file entity type.", "type": "object", "properties": { "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" }, "Tenants": { "description": "Indicates whether file is shared with tenants of the property.", "type": "boolean" } } }, "FileSharingTenantMessage": { "description": "The file share settings for the tenant file entity type.", "type": "object", "properties": { "Tenants": { "description": "Indicates whether file is shared with tenants on the lease.", "type": "boolean" }, "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" } } }, "FileSharingTenantPutMessage": { "description": "The file share settings for the tenant file entity type.", "type": "object", "properties": { "Tenants": { "description": "Indicates whether file is shared with tenants on the lease.", "type": "boolean" }, "RentalOwners": { "description": "Indicates whether file is shared with rental owners of the property.", "type": "boolean" } } }, "FileSharingVendorMessage": { "description": "The file share settings for the vendor file entity type.", "type": "object", "properties": { "Vendor": { "description": "Indicates whether file is shared with the vendor.", "type": "boolean" } } }, "FileSharingVendorPutMessage": { "description": "The file share settings for the vendor file entity type.", "type": "object", "properties": { "Vendor": { "description": "Indicates whether file is shared with the vendor.", "type": "boolean" } } }, "FileUploadPostMessage": { "required": [ "EntityType", "FileName", "Title", "CategoryId" ], "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that `EntityId` refers to.", "enum": [ "Account", "Association", "AssociationOwner", "AssociationUnit", "Lease", "OwnershipAccount", "PublicAsset", "Rental", "RentalOwner", "RentalUnit", "Tenant", "Vendor" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Unique identified of the Entity Type.", "type": "integer" }, "FileName": { "description": "Name of file being uploaded. The value can not exceed 255 characters.", "type": "string" }, "Title": { "description": "Title of file upload. The value can not exceed 255 characters.", "type": "string" }, "Description": { "description": "Description of file upload. The value can not exceed 1000 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "Unique identified of file category.", "type": "integer" } } }, "FileUploadTicketMessage": { "type": "object", "properties": { "BucketUrl": { "description": "AWS S3 Bucket Url.", "type": "string" }, "FormData": { "description": "AWS Meta Data.", "type": "object", "additionalProperties": { "type": "string" } }, "PhysicalFileName": { "description": "The physical file name.", "type": "string" } } }, "GeneralJournalEntryLineSaveMessage": { "required": [ "GLAccountId", "PostingType", "Amount" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. Query the General Ledger Account endpoint Get All GLAccounts for a listing of available accounts.", "type": "integer" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "PostingType": { "description": "The posting type for the line item.", "enum": [ "Credit", "Debit" ], "type": "string" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "GeneralJournalEntryPostMessage": { "required": [ "AccountingEntity", "Date", "Lines" ], "type": "object", "properties": { "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" }, "Date": { "format": "date", "description": "Date of the general journal entry. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Description of the general journal entry. Must be no longer than 240 characters.", "type": "string" }, "Lines": { "description": "A list of general journal entry lines. At least two lines are required. The total amount of the debit PostingType lines must equal the total of the credit PostingType lines.", "type": "array", "items": { "$ref": "#/components/schemas/GeneralJournalEntryLineSaveMessage" } } } }, "GeneralJournalEntryPutMessage": { "required": [ "AccountingEntity", "Date", "Lines" ], "type": "object", "properties": { "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" }, "Date": { "format": "date", "description": "Date of the general journal entry. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Description of the general journal entry. Must be no longer than 240 characters.", "type": "string" }, "Lines": { "description": "A list of general journal entry lines. At least two lines are required. The total amount of the debit PostingType lines must equal the total of the credit PostingType lines.", "type": "array", "items": { "$ref": "#/components/schemas/GeneralJournalEntryLineSaveMessage" } } } }, "GeneralLedgerEntryMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the transaction associated with the entry.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "Description": { "description": "Transaction description.", "type": "string" }, "Amount": { "format": "double", "description": "Entry amount.", "type": "number" }, "Balance": { "format": "double", "description": "The general ledger account balance after this entry was recorded.", "type": "number" }, "TransactionType": { "description": "Indicates the type of transaction that occurred.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" } } }, "GeneralLedgerJournalLineMessage": { "description": "This is an object that represents a line item for a journal entry.", "type": "object", "properties": { "GLAccount": { "$ref": "#/components/schemas/GLAccountMessage" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "IsCashPosting": { "description": "Indicates whether the line item is a cash posting.", "type": "boolean" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" } } }, "GeneralLedgerJournalMessage": { "type": "object", "properties": { "Memo": { "description": "Memo associated with the journal.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the journal.", "type": "array", "items": { "$ref": "#/components/schemas/GeneralLedgerJournalLineMessage" } } } }, "GeneralLedgerMessage": { "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the entries.", "type": "integer" }, "GLAccountName": { "description": "Name of the general ledger account associated with the entries.", "type": "string" }, "BeginningBalance": { "format": "double", "description": "The general ledger account balance based on the date range requested.", "type": "number" }, "TotalAmount": { "format": "double", "description": "The sum of the entry amounts that were recorded under this general ledger account within the date range requested.", "type": "number" }, "Entries": { "description": "Entries applied to the general ledger account.", "type": "array", "items": { "$ref": "#/components/schemas/GeneralLedgerEntryMessage" } } } }, "GeneralLedgerSearchMessage": { "required": [ "AccountingBasis", "GLAccountIds", "StartDate", "EndDate" ], "type": "object", "properties": { "AccountingBasis": { "description": "The methodology in which revenues and expenses are recognized when calculating the balances. Specifying `Cash` calculates balances based on when money changes hands. Specifying `Accrual` calculates balances based on the period in which the transaction originally happened.", "enum": [ "Accrual", "Cash" ], "type": "string" }, "EntityType": { "description": "Specifies the type of entity that `EntityId` field refers to.", "enum": [ "Company", "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any general ledger entry containing line items associated with the specified entity identifier. This filter is used in conjunction with the `EntityType` field which must be set to the type of entity this identifier references.", "type": "integer" }, "GLAccountIds": { "description": "Filters results to entries whose general ledger account belongs to the specified set of general ledger account ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "StartDate": { "format": "date", "description": "Filters results to any entries whose start date is greater than or equal to the specified value.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any entries whose end date is less than or equal to the specified value.", "type": "string" } } }, "GeneralLedgerTransactionMessage": { "description": "This is an object that represents a financial transaction", "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "TransactionType": { "description": "Type of transaction that occurred", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all `Journal.Lines.Amount` entries in the transaction.", "type": "number" }, "CheckNumber": { "description": "Check number associated with the transaction, if applicable.", "type": "string" }, "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "UnitId": { "format": "int32", "description": "Unit unique identifier associated with the transaction, if applicable. Null if value is not set.", "type": "integer" }, "UnitNumber": { "description": "Unit number associated with the transaction, if applicable. Null if value is not set.", "type": "string" }, "PaymentDetail": { "$ref": "#/components/schemas/PaymentDetailMessage" }, "DepositDetails": { "$ref": "#/components/schemas/DepositDetailMessage" }, "Journal": { "$ref": "#/components/schemas/GeneralLedgerJournalMessage" } } }, "GeneralLedgerTransactionSearchMessage": { "description": "An object that contains search criteria for retrieving general ledger transactions.", "required": [ "StartDate", "EndDate", "GlAccountIds" ], "type": "object", "properties": { "SelectionEntityId": { "format": "int32", "description": "Filters results to any transaction containing journal lines for an entity associated with the specified entity id value. The id must be of the type specified in SelectionEntityType.", "type": "integer" }, "SelectionEntityType": { "description": "Specifies the type of entity that SelectionEntityId refers to.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "StartDate": { "format": "date", "description": "Filters results to any transaction whose date is greater than or equal to the specified value.", "type": "string" }, "EndDate": { "format": "date", "description": "Filters results to any transaction whose date is less than or equal to the specified value.", "type": "string" }, "GlAccountIds": { "description": "Filters results to transactions whose general ledger account belongs to the specified set of general ledger account ids.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "GLAccountBalanceItemMessage": { "description": "An object that represents an accounting entity's contribution to the general ledger account total balance.", "type": "object", "properties": { "Balance": { "format": "double", "description": "The sum of transactions associated with the general ledger account for the given accounting entity.", "type": "number" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" } } }, "GLAccountBalanceMessage": { "description": "Represents the balance amount of a general ledger account.", "type": "object", "properties": { "TotalBalance": { "format": "double", "description": "The sum of transactions across all accounting entities (rental properties, association properties and your company) that are associated with the given general ledger account.", "type": "number" }, "GLAccount": { "$ref": "#/components/schemas/GLAccountMessage" }, "AccountingEntityBalances": { "description": "A collection of accounting entity balances that make up the `TotalBalance`.", "type": "array", "items": { "$ref": "#/components/schemas/GLAccountBalanceItemMessage" } } } }, "GLAccountBalanceSearchMessage": { "description": "An object that contains search criteria for retrieving general ledger account balances.", "required": [ "AccountingBasis", "AsOfDate" ], "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that `EntityId` field refers to.", "enum": [ "Association", "Rental", "RentalOwner" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters transactions used in calculating the general ledger account balances to only those containing journal lines for with the specified entity id value. The entity id specified must be of the type specified in `EntityType`.", "type": "integer" }, "GLAccountIds": { "description": "Filters results to the specified set of general ledger account identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AccountingBasis": { "description": "The methodology in which revenues and expenses are recognized when calculating the balances. Specifying `Cash` calculates balances based on when money changes hands. Specifying `Accrual` calculates balances based on the period in which the transaction originally happened.", "enum": [ "Accrual", "Cash" ], "type": "string" }, "AsOfDate": { "format": "date", "description": "Indicates the end date through which the balances will be calculated. This will include all transactions in your account until this specified date.", "type": "string" } } }, "GLAccountMessage": { "description": "A message that represents a general ledger account.", "type": "object", "properties": { "Id": { "format": "int32", "description": "General ledger account unique identifier.", "type": "integer" }, "AccountNumber": { "description": "General ledger account number.", "type": "string" }, "Name": { "description": "Name of the general ledger account.", "type": "string" }, "Description": { "description": "Description of the general ledger account.", "type": "string" }, "Type": { "description": "Describes the type of general ledger account.", "enum": [ "Asset", "Liability", "Equity", "Income", "Expense" ], "type": "string" }, "SubType": { "description": "Describes the subtype of the general ledger account.", "enum": [ "CurrentAsset", "FixedAsset", "CurrentLiability", "LongTermLiability", "Equity", "Income", "NonOperatingIncome", "OperatingExpenses", "NonOperatingExpenses" ], "type": "string" }, "IsDefaultGLAccount": { "description": "Indicates if the general ledger account is a default for auto populating fields.", "type": "boolean" }, "DefaultAccountName": { "description": "Indicates the original name of the general ledger account if it is a default account.", "type": "string" }, "IsContraAccount": { "description": "Indicates whether the account is a contra account.", "type": "boolean" }, "IsBankAccount": { "description": "Indicates whether the account is a bank account.", "type": "boolean" }, "CashFlowClassification": { "description": "Describes the cash flow classification for the general ledger account.", "enum": [ "OperatingActivities", "InvestingActivities", "FinancingActivities" ], "type": "string" }, "ExcludeFromCashBalances": { "description": "Indicates whether transactions associated with the account should be excluded from cash balances.", "type": "boolean" }, "SubAccounts": { "description": "Children general ledger accounts. The relationship only goes one level deep.", "type": "array", "items": { "$ref": "#/components/schemas/GLAccountMessage" } }, "IsActive": { "description": "Indicates whether the account is active.", "type": "boolean" }, "ParentGLAccountId": { "format": "int32", "description": "Unique identifier of the parent general ledger account, if applicable.", "type": "integer" } } }, "GLAccountPostMessage": { "required": [ "SubType", "Name", "AccountNumber" ], "type": "object", "properties": { "SubType": { "description": "Describes the subtype of the general ledger account.", "enum": [ "CurrentAsset", "FixedAsset", "CurrentLiability", "LongTermLiability", "Equity", "Income", "NonOperatingIncome", "OperatingExpenses", "NonOperatingExpenses" ], "type": "string" }, "IsCashAsset": { "description": "Indicates if an account is a Cash Asset. Can only have a value if SubType is `CurrentAsset`", "type": "boolean" }, "Name": { "description": "Name of the general ledger account. The name cannot exceed 50 characters and must be unique across all general ledger accounts.", "type": "string" }, "AccountNumber": { "description": "General ledger account number. The account number cannot exceed 12 characters and must be unique across all general ledger accounts.", "type": "string" }, "Description": { "description": "Description of the general ledger account. The description cannot exceed 250 characters.", "type": "string" }, "IsContraAccount": { "description": "Indicates whether the account is a contra account. Must be null if `IsCashAsset` field is set to true.", "type": "boolean" }, "CashFlowClassification": { "description": "Describes the cash flow classification for the general ledger account. Must be null if `IsCashAsset` field is set to true.", "enum": [ "OperatingActivities", "InvestingActivities", "FinancingActivities" ], "type": "string" }, "ParentGLAccountId": { "format": "int32", "description": "Unique identifier of the parent general ledger account. Indicates if this is a sub general ledger account.", "type": "integer" } } }, "GLAccountPutMessage": { "required": [ "Name", "SubType" ], "type": "object", "properties": { "Name": { "description": "Name of the general ledger account. The name cannot exceed 50 characters and must be unique across all general ledger accounts.", "type": "string" }, "SubType": { "description": "Describes the subtype of the general ledger account.", "enum": [ "CurrentAsset", "FixedAsset", "CurrentLiability", "LongTermLiability", "Equity", "Income", "NonOperatingIncome", "OperatingExpenses", "NonOperatingExpenses" ], "type": "string" }, "ParentGLAccountId": { "format": "int32", "description": "Unique identifier of the parent general ledger account. Indicates if this is a sub general ledger account.", "type": "integer" }, "IsCashAsset": { "description": "Indicates if an account is a Cash Asset. Can only have a value if SubType is `CurrentAsset`", "type": "boolean" }, "AccountNumber": { "description": "General ledger account number. The account number cannot exceed 12 characters and must be unique across all general ledger accounts.", "type": "string" }, "Description": { "description": "Description of the general ledger account. The description cannot exceed 250 characters.", "type": "string" }, "IsContraAccount": { "description": "Indicates whether the account is a contra account. Must be null if `IsCashAsset` field is set to true.", "type": "boolean" }, "CashFlowClassification": { "description": "Describes the cash flow classification for the general ledger account. Must be null if `IsCashAsset` field is set to true.", "enum": [ "OperatingActivities", "InvestingActivities", "FinancingActivities" ], "type": "string" } } }, "GLAccountsSearchMessage": { "description": "Search Message for GLAccount queries", "type": "object", "properties": { "AccountTypes": { "description": "Filters results by the specified general ledger account types.", "type": "array", "items": { "enum": [ "Asset", "Liability", "Equity", "Income", "Expense" ], "type": "string" } } } }, "GLTransactionMessageV1": { "type": "object", "properties": { "Id": { "format": "int32", "description": "General ledger transaction unique identifier.", "type": "integer" }, "Amount": { "format": "double", "description": "General ledger transaction amount.", "type": "number" }, "CheckNumber": { "description": "General ledger transaction check number.", "type": "string" }, "EntryDate": { "format": "date", "description": "Date the transaction was made.", "type": "string" }, "Memo": { "description": "General ledger transaction memo.", "type": "string" } } }, "ImageReorderRequestPutMessage": { "required": [ "Ids" ], "type": "object", "properties": { "Ids": { "description": "Unique identifiers for the images. The request must contain the ids of all images.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "InsuredTenantMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Tenant unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the tenant.", "type": "string" }, "LastName": { "description": "Last name of the tenant.", "type": "string" }, "IsPrimaryInsured": { "description": "Indicates whether this tenant is the primary insured person on the policy. This only applies to policies with a `CarrierType` of `MSI`.", "type": "boolean" } } }, "InternalTransactionStatusMessage": { "description": "This object represents the status for internal transactions", "type": "object", "properties": { "IsPending": { "description": "Indicates whether the transaction is pending processing.", "type": "boolean" }, "ResultDate": { "format": "date", "description": "The date the transaction was processed.", "type": "string" }, "ResultCode": { "description": "The result code of the transaction.", "type": "string" } } }, "JournalLineMessage": { "description": "This is an object that represents a line item for a journal entry.", "type": "object", "properties": { "GLAccount": { "$ref": "#/components/schemas/GLAccountMessage" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "IsCashPosting": { "description": "Indicates whether the line item is a cash posting.", "type": "boolean" }, "ReferenceNumber": { "description": "Reference number for the line item.", "type": "string" }, "Memo": { "description": "Memo for the line item.", "type": "string" }, "PropertyId": { "format": "int32", "description": "PropertyId associated with the line item.", "type": "integer" }, "UnitId": { "format": "int32", "description": "UnitId associated with the line item.", "type": "integer" } } }, "JournalMessage": { "type": "object", "properties": { "Memo": { "description": "Memo associated with the journal.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the journal.", "type": "array", "items": { "$ref": "#/components/schemas/JournalLineMessage" } } } }, "JsonPatchOperation": { "required": [ "op", "path" ], "type": "object", "properties": { "op": { "type": "string" }, "path": { "type": "string" }, "value": { "type": "object" }, "from": { "type": "string" } } }, "LastUpdatedByUserMessage": { "description": "Last updated details.", "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "FirstName": { "description": "User first name.", "type": "string" }, "LastName": { "description": "User last name.", "type": "string" }, "Href": { "description": "A link to the user resource.", "type": "string" }, "UpdatedDateTime": { "format": "date-time", "description": "The date and time the note was last updated.", "type": "string" } } }, "LeaseAccountDetailMessage": { "description": "This is an object that represents lease financial details.", "type": "object", "properties": { "SecurityDeposit": { "format": "double", "description": "Security deposit for the lease. Null if no security deposit exists.", "type": "number" }, "Rent": { "format": "double", "description": "Rent for the lease. Null if no rent exists.", "type": "number" } } }, "LeaseAutoAllocatedPaymentPostMessage": { "required": [ "Date", "PaymentMethod", "SendEmailReceipt", "TotalAmount" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "SendEmailReceipt": { "description": "An indicator for whether or not to send an email receipt to the payee. If the payee does not have an email address set, no email will be sent.", "type": "boolean" }, "TotalAmount": { "format": "double", "description": "The total amount of the payment being created.", "type": "number" } } }, "LeaseChargeLineSaveMessage": { "description": "This is an object that represents a line item on a lease charge", "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded.", "type": "integer" }, "ReferenceNumber": { "description": "Reference number for the line item. The value cannot exceed 30 characters.", "type": "string" } } }, "LeaseChargePostMessage": { "description": "This is an object that represents a charge related to a lease", "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the charge. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Memo associated with the charge. The value cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "A collection of line items included in the charge. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseChargeLineSaveMessage" } } } }, "LeaseChargePutMessage": { "required": [ "Date", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the charge. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Memo associated with the charge. The value cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "Collection of line items to be included in the charge. All existing line items will be deleted and replaced with the line items in this request. At least 1 line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseChargeLineSaveMessage" } } } }, "LeaseChargeRecurringTransactionMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the recurring charge schedule.", "type": "integer" }, "LeaseId": { "format": "int32", "description": "The unique identifier of the lease that the recurring charge will be applied to.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier the recurring charge is applied to.", "type": "integer" }, "RentId": { "format": "int32", "description": "The unique identifier of the scheduled Rent entity. If the charge is not associated with a Rent entity then the value will be `NULL`.", "type": "integer" }, "Amount": { "format": "double", "description": "The amount of the recurring charge.", "type": "number" }, "Memo": { "description": "Memo associated with the recurring charge.", "type": "string" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring charge will be processed.", "type": "integer" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurence this charge was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled charge will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "The number of days ahead of the transaction date the charge will post on the lease ledger. This setting is used to add the charge to the ledger ahead of it's due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring charge will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring charge will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" } } }, "LeaseCosignerPostMessage": { "description": "This object represents a rental lease cosigner.", "required": [ "FirstName", "LastName" ], "type": "object", "properties": { "FirstName": { "description": "First name of the cosigner.", "type": "string" }, "LastName": { "description": "Last name of the cosigner.", "type": "string" }, "Email": { "description": "Email for the cosigner.", "type": "string" }, "AlternateEmail": { "description": "Alternate Email for the cosigner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MailingPreference": { "description": "Mailing preferences for the cosigner. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" } } }, "LeaseLedgerCreditLinePostMessage": { "description": "Credit line item.", "required": [ "Amount", "GlAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" } } }, "LeaseLedgerCreditPostMessage": { "required": [ "Date", "CreditType", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Description of the transaction. The value cannot exceed 65 characters.", "type": "string" }, "CreditType": { "description": "Indicates how the credit should be applied.\r\n", "enum": [ "WaiveUnpaid", "Exchange", "PreviouslyDeposited" ], "type": "string" }, "OffsettingGLAccountId": { "format": "int32", "description": "Sets the offsetting general ledger account identifier for the credit.\r\n
This value must be provided when the `CreditType` field is set to `Exchange` or `PreviouslyDeposited`.\r\n
When the `CreditType` is `Exchange` this must be an *expense* general ledger account type.\r\n
When the `CreditType` is `PreviouslyDeposited` this must be an *equity* general ledger account type.", "type": "integer" }, "Lines": { "description": "A collection of line items included in the credit. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerCreditLinePostMessage" } } } }, "LeaseLedgerDepositWithholdingLinePostMessage": { "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "General ledger account identifier under which the line item amount will be recorded. Must be an Income account.", "type": "integer" } } }, "LeaseLedgerDepositWithholdingPostMessage": { "required": [ "EntryDate", "DepositLiabilityGLAccountId" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date of the deposit withholding. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "DepositLiabilityGLAccountId": { "format": "int32", "description": "The identifier of the liability general ledger account from which to withhold the funds. Note, the specified liability account must have a positive balance.", "type": "integer" }, "Memo": { "description": "Memo associated with the withholding. Memo cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "Line items specifying the income accounts the deposit will be applied to. The total amount of the line items can not exceed the balance of the liability account.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerDepositWithholdingLinePostMessage" } } } }, "LeaseLedgerPaymentLineSaveMessage": { "description": "This is an object that represents a line item on a lease ledger payment", "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded.", "type": "integer" } } }, "LeaseLedgerPaymentPostMessage": { "description": "This is an object that represents a Payment made in a particular lease ledger.", "required": [ "Date", "PaymentMethod", "SendEmailReceipt", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "SendEmailReceipt": { "description": "An indicator for whether or not to send an email receipt to the payee. If the payee does not have an email address set, no email will be sent.", "type": "boolean" }, "Lines": { "description": "A collection of line items included in the payment. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerPaymentLineSaveMessage" } } } }, "LeaseLedgerPaymentPutMessage": { "required": [ "Date", "PaymentMethod", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "Lines": { "description": "A collection of line items included in the payment. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerPaymentLineSaveMessage" } } } }, "LeaseLedgerRefundLineMessage": { "type": "object", "properties": { "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the refund.", "type": "integer" } } }, "LeaseLedgerRefundLinePostMessage": { "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the refund.", "type": "integer" } } }, "LeaseLedgerRefundMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Refund unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the refund.", "type": "string" }, "Payees": { "description": "List of payees being refunded.", "type": "array", "items": { "$ref": "#/components/schemas/PayeeMessage" } }, "Memo": { "description": "Memo associated with the refund, if applicable.", "type": "string" }, "CheckNumber": { "description": "Check number associated with the refund, if applicable.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the refund was made from.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "TotalAmount": { "format": "double", "description": "Total amount of the refund.", "type": "number" }, "Lines": { "description": "A collection of line items included in the refund.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerRefundLineMessage" } } } }, "LeaseLedgerRefundPostMessage": { "required": [ "Date", "PayeeUserIds", "BankAccountId", "Address", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the refund. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PayeeUserIds": { "description": "Unique identifiers of the users receiving the refund.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Memo": { "description": "A brief note describing the reason for the refund. The value cannot exceed 65 characters.", "type": "string" }, "CheckNumber": { "description": "Check number associated with the refund, if applicable. The value cannot exceed 30 characters.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account the refund is issued from.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "Lines": { "description": "A collection of line items included in the refund. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseLedgerRefundLinePostMessage" } } } }, "LeaseLedgerReversePaymentNSFChargePostMessage": { "description": "Non-sufficient funds (NSF) charge to the tenant.", "required": [ "GLAccountId", "TotalAmount" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "Income general ledger income account to record the charge under.", "type": "integer" }, "TotalAmount": { "format": "double", "description": "Total amount to charge the tenant.", "type": "number" } } }, "LeaseLedgerReversePaymentOtherBankChargePostMessage": { "description": "Fee assessed by the bank for the reversed payment.", "required": [ "GLAccountId", "TotalAmount" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "Expense general ledger account to associate the bank fee.", "type": "integer" }, "TotalAmount": { "format": "double", "description": "Total amount of the bank fee.", "type": "number" } } }, "LeaseLedgerReversePaymentPostMessage": { "required": [ "EntryDate", "PaymentTransactionId" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "PaymentTransactionId": { "format": "int32", "description": "Transaction identifier of the payment to reverse. Note, this payment transaction must be deposited.", "type": "integer" }, "NSFCharge": { "$ref": "#/components/schemas/LeaseLedgerReversePaymentNSFChargePostMessage" }, "BankFee": { "$ref": "#/components/schemas/LeaseLedgerReversePaymentOtherBankChargePostMessage" } } }, "LeaseMessage": { "description": "This object represents a rental property lease.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Lease unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Unit unique identifier.", "type": "integer" }, "UnitNumber": { "description": "Unit number specified in the lease.", "type": "string" }, "LeaseFromDate": { "format": "date", "description": "Start date of the lease.", "type": "string" }, "LeaseToDate": { "format": "date", "description": "End date of the lease.", "type": "string" }, "LeaseType": { "description": "Describes the type of lease.", "enum": [ "None", "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" }, "LeaseStatus": { "description": "Indicates the status of the lease.", "enum": [ "Active", "Past", "Future" ], "type": "string" }, "IsEvictionPending": { "description": "Indicates whether the lease has an eviction pending.", "type": "boolean" }, "TermType": { "description": "Describes the term type of the lease.", "enum": [ "MonthToMonth", "Standard", "Owner" ], "type": "string" }, "RenewalOfferStatus": { "description": "Describes the status of the renewal offer. Null if no renewal offer exists.", "enum": [ "NotSet", "NotStarted", "Generated", "Declined", "Renewed", "Draft", "Unsigned", "PartiallySigned", "Countersign", "Activated", "Sent", "Accepted" ], "type": "string" }, "CurrentTenants": { "description": "List of the current tenants on the lease.", "type": "array", "items": { "$ref": "#/components/schemas/TenantMessage" } }, "CurrentNumberOfOccupants": { "format": "int32", "description": "Count of current tenants.", "type": "integer" }, "AccountDetails": { "$ref": "#/components/schemas/LeaseAccountDetailMessage" }, "Cosigners": { "description": "List of the cosigners on the lease.", "type": "array", "items": { "$ref": "#/components/schemas/CosignerMessage" } }, "AutomaticallyMoveOutTenants": { "description": "Indicates whether to automatically move out all tenants assigned to the lease and set the lease status to past when the lease ends.", "type": "boolean" }, "CreatedDateTime": { "format": "date-time", "description": "Date and time the lease was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the lease was last updated.", "type": "string" }, "MoveOutData": { "description": "Move out data of lease", "type": "array", "items": { "$ref": "#/components/schemas/LeaseMoveOutDataMessage" } }, "PaymentDueDay": { "format": "int32", "description": "Day of the month payment is due.", "type": "integer" }, "Tenants": { "description": "List of all tenants ever associated with the lease", "type": "array", "items": { "$ref": "#/components/schemas/LeaseTenantMessage" } } } }, "LeaseMoveOutDataMessage": { "type": "object", "properties": { "TenantId": { "format": "int32", "description": "Tenant unique identifier.", "type": "integer" }, "MoveOutDate": { "format": "date", "description": "Date the tenant will move out of the leased unit.", "type": "string" }, "NoticeGivenDate": { "format": "date", "description": "Date the tenant move out notice was received.", "type": "string" } } }, "LeaseMoveOutDataPostMessage": { "required": [ "TenantId", "MoveOutDate" ], "type": "object", "properties": { "TenantId": { "format": "int32", "description": "Tenant unique identifier.", "type": "integer" }, "MoveOutDate": { "format": "date", "description": "Date the tenant(s) will move out of the leased unit.", "type": "string" }, "NoticeGivenDate": { "format": "date", "description": "Date the tenant(s) gave their move out notice.", "type": "string" } } }, "LeaseOutstandingBalanceMessage": { "type": "object", "properties": { "LeaseId": { "format": "int32", "description": "Lease unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Property unique identifier.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Property unit unique identifier.", "type": "integer" }, "Balance0To30Days": { "format": "double", "description": "Outstanding balance due from within the last 30 days.", "type": "number" }, "Balance31To60Days": { "format": "double", "description": "Outstanding balance due from within 31 to 60 days ago.", "type": "number" }, "Balance61To90Days": { "format": "double", "description": "Outstanding balance due from within 61 to 90 days ago.", "type": "number" }, "BalanceOver90Days": { "format": "double", "description": "Outstanding balance due from over 90 days ago.", "type": "number" }, "TotalBalance": { "format": "double", "description": "Total outstanding balance due.", "type": "number" }, "Balances": { "description": "Breakdown of outstanding balance due by general ledger account.", "type": "array", "items": { "$ref": "#/components/schemas/OutstandingBalancesLineMessage" } }, "PastDueEmailSentDate": { "format": "date-time", "description": "Date of notification for outstanding balance.", "type": "string" }, "EvictionPendingDate": { "format": "date", "description": "Date of notification for pending eviction.", "type": "string" }, "IsNoticeGiven": { "description": "Indicates if notice was sent.", "type": "boolean" } } }, "LeaseOutstandingBalanceSearchMessage": { "type": "object", "properties": { "EntityType": { "enum": [ "Rental", "RentalOwner" ], "type": "string" }, "EntityId": { "format": "int32", "type": "integer" }, "LeaseStatuses": { "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "LeaseIds": { "type": "array", "items": { "format": "int32", "type": "integer" } }, "PastDueEmail": { "enum": [ "NoEmailAddress", "Sent" ], "type": "string" }, "BalanceDuration": { "enum": [ "TotalBalance", "Balance0to30Days", "Balance31to60Days", "Balance61to90Days", "BalanceOver90Days" ], "type": "string" }, "EvictionStatus": { "enum": [ "NotEvictionPending", "EvictionPending" ], "type": "string" } } }, "LeasePostMessage": { "required": [ "LeaseType", "UnitId", "LeaseFromDate", "SendWelcomeEmail" ], "type": "object", "properties": { "LeaseType": { "description": "Describes the type of lease.

\r\n`AtWill` leases are month-to-month leases. Setting a lease as at will tells Buildium when the tenant's lease initially started, but since there is no lease end date, Buildium will never move the lease to expired, and it will continue to post any automatic transactions (like recurring monthly rent charges or late fees) until you manually end the lease.\r\n

\r\n`Fixed` leases are leases that have specific start and end dates.When the end date occurs, the lease will move from active to expired, and any transactions set to post automatically(like recurring monthly rent charges or late fees) will stop posting.\r\n

\r\n`FixedWithRollover` leases are similar to fixed leases, but instead of Buildium moving this lease to expired as of the end date, it will move the lease to an at will status, which tells Buildium to continue posting monthly rent charges, late fees for you until you manually end the lease.", "enum": [ "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" }, "UnitId": { "format": "int32", "description": "Unit unique identifier associated with the lease.", "type": "integer" }, "LeaseFromDate": { "format": "date", "description": "Start date of the lease.", "type": "string" }, "LeaseToDate": { "format": "date", "description": "End date of the lease.", "type": "string" }, "SendWelcomeEmail": { "description": "Indicates whether to send a welcome email to all tenants on the lease inviting them to the resident center website.", "type": "boolean" }, "Tenants": { "description": "List of new tenants to add to the lease. The list cannot exceed five tenants.", "type": "array", "items": { "$ref": "#/components/schemas/RentalTenantPutMessage" } }, "TenantIds": { "description": "List of identifiers for existing tenants to add to the lease. The list cannot exceed five tenants.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "ApplicantIds": { "description": "List of identifiers for applicants to become tenants on the lease. Identifiers must refer to applicants with a Status of `Approved`. The list cannot exceed five applicants.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Cosigners": { "description": "List of the cosigners on the lease.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseCosignerPostMessage" } }, "Rent": { "$ref": "#/components/schemas/LeaseRentPostMessage" }, "SecurityDeposit": { "$ref": "#/components/schemas/LeaseSecurityDepositPostMessage" }, "ProratedFirstMonthRent": { "format": "double", "description": "Prorated rent charged for the first month of the lease. Must be null if the lease begins on the first day of a month.", "type": "number" }, "ProratedLastMonthRent": { "format": "double", "description": "Prorated rent charged for the last month of the lease. Must be null if the lease ends on the last day of a month.", "type": "number" } } }, "LeasePutMessage": { "required": [ "LeaseType", "UnitId", "LeaseFromDate", "IsEvictionPending" ], "type": "object", "properties": { "LeaseType": { "description": "Describes the type of lease.", "enum": [ "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" }, "UnitId": { "format": "int32", "description": "Unit unique identifier associated with the lease.", "type": "integer" }, "LeaseFromDate": { "format": "date", "description": "Start date of the lease.", "type": "string" }, "LeaseToDate": { "format": "date", "description": "End date of the lease.", "type": "string" }, "IsEvictionPending": { "description": "Indicates whether the lease has an eviction pending.", "type": "boolean" }, "AutomaticallyMoveOutTenants": { "description": "Indicates whether to automatically move out all tenants assigned to the lease and set the lease status to past when the lease ends.", "type": "boolean" } } }, "LeaseRecurringCreditMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the recurring credit schedule.", "type": "integer" }, "LeaseId": { "format": "int32", "description": "The unique identifier of the lease that the recurring credit will be applied to.", "type": "integer" }, "CreditType": { "description": "Indicates how the credit will be applied.\r\n", "enum": [ "WaiveUnpaid", "Exchange", "PreviouslyDeposited" ], "type": "string" }, "OffsettingGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as the expense account.", "type": "integer" }, "PostingRuleGLAccountId": { "format": "int32", "description": "Indicates whether to apply a posting rule when processing the transaction that would only record the credit if a prior payment has been made.\r\n

\r\nSet the field value to the Rent Income general ledger account identifier if the credit should only be recorded when a payment was made and applied to the Rent Income general ledger account.\r\n

\r\nSet the field value to the Accounts Receivable general ledger account identifier if the credit should only be recorded when a payment was made and applied to *any* general ledger account.\r\n

\r\nSet the field value to null to always record the credit.", "type": "integer" }, "Lines": { "description": "Line items describing how the credit is to be allocated when the recurring transaction is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLineMessage" } }, "Amount": { "format": "double", "description": "The total amount of the recurring credit based on sum of the `Lines.Amount`.", "type": "number" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring credit will be processed.", "type": "integer" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurrence this credit was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled credit will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the credit will post on the lease ledger. This setting can be used to add the charge to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Memo": { "description": "Memo associated with the recurring credit.", "type": "string" }, "Frequency": { "description": "Indicates the frequency at which the recurring credit is processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" } } }, "LeaseRecurringPaymentMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier for the recurring payment schedule.", "type": "integer" }, "LeaseId": { "format": "int32", "description": "The unique identifier of the lease that the recurring payment will be applied to.", "type": "integer" }, "Payer": { "$ref": "#/components/schemas/PayeeMessage" }, "PaymentMethod": { "description": "The method of payment for the transaction.", "enum": [ "None", "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment", "RetailCash" ], "type": "string" }, "Lines": { "description": "Line items describing how the payment is to be allocated when the recurring transaction is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLineMessage" } }, "Amount": { "format": "double", "description": "The total amount of the recurring payment based on sum of the `Lines.Amount`.", "type": "number" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring payment will be processed.", "type": "integer" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurrence this payment was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled payment will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the payment will post on the lease ledger. This setting can be used to add the charge to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Frequency": { "description": "Indicates the frequency at which the recurring payment is processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" }, "Memo": { "description": "Memo associated with the recurring payment.", "type": "string" } } }, "LeaseRenewalMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Lease renewal unique identifier.", "type": "integer" }, "LeaseStatus": { "description": "Indicates the status of the lease.", "enum": [ "Active", "Past", "Future" ], "type": "string" }, "LeaseFromDate": { "format": "date", "description": "Start date of the lease.", "type": "string" }, "LeaseToDate": { "format": "date", "description": "End date of the lease.", "type": "string" }, "LeaseType": { "description": "Describes the type of lease.", "enum": [ "None", "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" }, "Rent": { "format": "double", "description": "Rent for the lease.", "type": "number" }, "RentId": { "format": "int32", "description": "The unique identifier of the scheduled Rent entity. If the renewal is not associated with a Rent entity then the value will be `NULL`.", "type": "integer" }, "TenantIds": { "description": "Unique identifiers of tenants on the lease.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "LeaseRenewalPostMessage": { "required": [ "LeaseType", "Rent", "SendWelcomeEmail" ], "type": "object", "properties": { "LeaseType": { "description": "Describes the type of lease.", "enum": [ "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" }, "LeaseToDate": { "format": "date", "description": "End date of the lease. This is required if `LeaseType` is `Fixed` or `FixedWithRollover`", "type": "string" }, "AutomaticallyMoveOutTenants": { "description": "Indicates whether to automatically move out all tenants assigned to the lease and set the lease status to past when the lease ends.", "type": "boolean" }, "Rent": { "$ref": "#/components/schemas/LeaseRentPostMessage" }, "Cosigners": { "description": "List of the cosigners to create on the lease.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseCosignerPostMessage" } }, "TenantIds": { "description": "Unique identifiers of existing tenants to include on the lease. The request must include at least one tenant in this property OR the `Tenants` property.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Tenants": { "description": "List of new tenants to create on the lease. The request must include at least one tenant in this property OR the `TenantIds` property.", "type": "array", "items": { "$ref": "#/components/schemas/RentalTenantRenewalPostMessage" } }, "SendWelcomeEmail": { "description": "Indicates whether to send a welcome email to all tenants on the lease inviting them to the resident center website.", "type": "boolean" }, "RecurringChargesToStop": { "description": "Unique identifiers of existing recurring charges on the lease to stop.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "RecurringChargesToCreate": { "description": "List of new recurring charges to create.", "type": "array", "items": { "$ref": "#/components/schemas/ChargeRecurringTransactionPostMessage" } }, "RecurringChargesToUpdate": { "description": "List of existing recurring charges to update.", "type": "array", "items": { "$ref": "#/components/schemas/ChargeRecurringTransactionPutMessage" } } } }, "LeaseRenewalSearchMessage": { "description": "This object represents a filter for searching Lease Renewals.", "required": [ "ESignatureStatuses" ], "type": "object", "properties": { "PropertyIds": { "description": "Filters results to only include leases whose unit belongs to the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "RentalOwnerIds": { "description": "Filters results to any lease whose unit belongs to a property with rental owner in the specified set of rental owner ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "ESignatureStatuses": { "description": "Filters result to any lease renewal with an esignature status that matches the given statuses.", "type": "array", "items": { "enum": [ "Unknown", "NotSent", "ProcessingRequest", "AwaitingSignatures", "FullySigned", "PendingCancellation", "Cancelled", "Failed", "SentUsingAdobe" ], "type": "string" } } } }, "LeaseRentChargeMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rent charge unique identifier.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "General ledger account unique identifier the rent charge is related to.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the rent charge.", "type": "number" }, "Memo": { "description": "Memo for the rent charge.", "type": "string" }, "FirstChargeDate": { "format": "date", "description": "First date for the rent charge.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Number of days ahead of the due date the charge will post on the lease ledger.", "type": "integer" }, "DueOnDayOfTheMonth": { "format": "int32", "description": "The day of the month the rent charge is due.", "type": "integer" } } }, "LeaseRentChargePostMessage": { "required": [ "Amount", "GlAccountId", "NextDueDate" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "The amount of the charge.", "type": "number" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which to record the charge.", "type": "integer" }, "NextDueDate": { "format": "date", "description": "Indicates the next date the charge will be applied to the lease ledger. This date will also be used as the start date for the calculating the `Cycle` of when to apply the next charge. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Memo for the charge.", "type": "string" } } }, "LeaseRentMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rent unique identifier.", "type": "integer" }, "StartDate": { "format": "date", "description": "Start date of the rent.", "type": "string" }, "EndDate": { "format": "date", "description": "End date of the rent.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Total amount of the rent.", "type": "number" }, "RentCycle": { "description": "Determines the frequency at which rent is charged.", "enum": [ "None", "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "BackdateCharges": { "description": "Indicates whether backdated charges should be created when creating or editing rents. This field will always return false, even if backdated charges exist.", "type": "boolean" }, "CreatedDateTime": { "format": "date-time", "description": "The date and time the rent was created.", "type": "string" }, "CreatedByUserId": { "format": "int32", "description": "Unique identifier of user that created the rent.", "type": "integer" }, "Charges": { "description": "A collection of charges associated with the rent.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseRentChargeMessage" } } } }, "LeaseRentPostMessage": { "description": "The rent for the lease. When provided in the request the charges for the specified amount will be automatically applied to the lease ledger on the cadence specified in the `Cycle`.", "required": [ "Cycle", "Charges" ], "type": "object", "properties": { "Cycle": { "description": "Indicates the cadence of when rent `Charges` will be applied automatically to the lease ledger.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Charges": { "description": "List of charges to apply to the lease.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseRentChargePostMessage" } } } }, "LeaseSearchMessage": { "description": "This object represents a filter for a lease search.", "type": "object", "properties": { "PropertyIds": { "description": "Filters results to any lease whose unit belongs to the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "RentalOwnerIds": { "description": "Filters results to any lease whose unit belongs to a property with a rental owner in the specified set of rental owner ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UnitNumber": { "description": "Filters results to any lease whose unit number *contains* the specified value.", "type": "string" }, "TenantName": { "description": "Filters results to any lease whose current tenants' names *contain* the specified value.", "type": "string" }, "LeaseDateFrom": { "format": "date", "description": "Filters results to any lease whose start date is greater than or equal to the specified value.", "type": "string" }, "LeaseDateTo": { "format": "date", "description": "Filters results to any lease whose end date is less than or equal to the specified value.", "type": "string" }, "LeaseTypes": { "description": "Filters results to any lease whose lease type matches the specified status. If no type is specified, leases with any type will be returned.", "type": "array", "items": { "enum": [ "None", "Fixed", "FixedWithRollover", "AtWill" ], "type": "string" } }, "LeaseStatuses": { "description": "Filters results to any lease whose lease term matches the specified status. If no status is specified, leases with any lease term status will be returned.", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "CreatedDateTimeFrom": { "format": "date-time", "description": "Filters results to any lease whose created date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "type": "string" }, "CreatedDateTimeTo": { "format": "date-time", "description": "Filters results to any lease whose created date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "type": "string" }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any leases that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any leases that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "LeaseSecurityDepositPostMessage": { "description": "The security deposit on the lease. When provided in the request a one-time charge for the specified amount will be applied to the lease ledger.", "required": [ "DueDate", "Amount" ], "type": "object", "properties": { "DueDate": { "format": "date", "description": "The date the security deposit is due. This date will be used as the transaction date when applying the charge to the lease ledger.", "type": "string" }, "Amount": { "format": "double", "description": "Security deposit amount.", "type": "number" } } }, "LeaseTenantMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Tenant unique identifier.", "type": "integer" }, "Status": { "description": "Indicates the tenant's current status in relation to the lease.", "enum": [ "MovedOut", "Current", "Future" ], "type": "string" }, "MoveInDate": { "format": "date", "description": "Indicates the tenant's move-in date.", "type": "string" } } }, "LeaseTransactionMessage": { "description": "This is an object that represents a financial transaction", "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "TransactionType": { "description": "Type of transaction that occurred.", "type": "string" }, "TransactionTypeEnum": { "description": "The type of transaction that occurred.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all `Journal.Lines.Amount` entries in the transaction.", "type": "number" }, "CheckNumber": { "description": "Check number associated with the transaction, if applicable.", "type": "string" }, "LeaseId": { "format": "int32", "description": "Lease unique identifier associated with the transaction, if applicable. Null if value is not set.", "type": "integer" }, "PayeeTenantId": { "format": "int32", "description": "The payee's tenant unique identifier associated with the transaction, where applicable.", "type": "integer" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "type": "string" }, "Journal": { "$ref": "#/components/schemas/JournalMessage" } } }, "LeaseTransactionSearchMessage": { "description": "This object represents a filter for a lease transaction search.", "type": "object", "properties": { "TransactionDateFrom": { "format": "date", "description": "Filters results to any lease transaction whose start date is greater than or equal to the specified value.", "type": "string" }, "TransactionDateTo": { "format": "date", "description": "Filters results to any lease transaction whose end date is less than or equal to the specified value.", "type": "string" }, "TransactionTypes": { "description": "Filters results to any lease transaction whose lease transaction type matches the specified status. If no type is specified, lease transactions with any type will be returned.", "type": "array", "items": { "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" } } } }, "ListingContactMessage": { "description": "The contact information for the listing.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Listing contact unique identifier.", "type": "integer" }, "Name": { "description": "Name of listing contact.", "type": "string" }, "Email": { "description": "Email of the listing contact.", "type": "string" }, "PhoneNumber": { "description": "Phone number of the listing contact.", "type": "string" }, "Website": { "description": "Website of the listing contact.", "type": "string" } } }, "ListingContactSaveMessage": { "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "Name of the listing contact. This name must be unique across all listing contacts.", "type": "string" }, "Email": { "description": "Email address for the listing contact.", "type": "string" }, "PhoneNumber": { "description": "Phone number of the listing contact. The value must be between 10 and 20 characters, ideally formatted as (123) 123-1234.", "type": "string" }, "Website": { "description": "Website associated with the listing contact. The value must be a valid URL including the HTTP protocol. For example http://www.example.com.", "type": "string" } } }, "ListingEntityFilePostMessage": { "required": [ "FileName", "ShowInListing" ], "type": "object", "properties": { "FileName": { "description": "Name of file being uploaded. The value can not exceed 255 characters.", "type": "string" }, "Description": { "description": "A description of the file. The value cannot exceed 100 characters.", "type": "string" }, "ShowInListing": { "description": "Indicates whether the image will be shown in listings.", "type": "boolean" } } }, "ListingFileMessage": { "type": "object", "properties": { "Type": { "description": "Indicates the media type of file.", "enum": [ "Image", "Video" ], "type": "string" }, "Name": { "description": "The name of the file.", "type": "string" }, "Url": { "description": "The the full URL to access the file.", "type": "string" } } }, "ListingMessage": { "type": "object", "properties": { "ListingDate": { "format": "date", "description": "The date the listing was created in Buildium. It does not reflect when the listing was syndicated and listed in external systems. It can take 24-48 hours for a listing to be syndicated once it is created in Buildium.", "type": "string" }, "Rent": { "format": "double", "description": "The asking rent amount for this unit.", "type": "number" }, "Deposit": { "format": "double", "description": "The deposit amount for the unit.", "type": "number" }, "LeaseTerms": { "description": "A summary of the lease terms.", "type": "string" }, "AvailableDate": { "format": "date", "description": "The date the unit will be available to move in.", "type": "string" }, "IsManagedExternally": { "description": "Indicates if the listing is managed by an external vendor. Note, the `Contact` property will be `null` if the this property is `true` as the contact information is managed by a vendor outside of Buildium.", "type": "boolean" }, "RentalApplicationUrl": { "description": "The URL to the online rental application hosted by Buildium.", "type": "string" }, "Contact": { "$ref": "#/components/schemas/ListingContactMessage" }, "Property": { "$ref": "#/components/schemas/ListingPropertyMessage" }, "Unit": { "$ref": "#/components/schemas/ListingUnitMessage" } } }, "ListingPropertyMessage": { "description": "Details of the unit property.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental property unique identifier.", "type": "integer" }, "Name": { "description": "Name of the rental property.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "NumberUnits": { "format": "int32", "description": "Number of units in the rental property.", "type": "integer" }, "StructureDescription": { "description": "Description of the rental property structure.", "type": "string" }, "YearBuilt": { "format": "int32", "description": "Year the rental property was built.", "type": "integer" }, "Features": { "description": "List of features for the property.", "type": "array", "items": { "enum": [ "LaundryRoom", "WheelchairAccess", "DoorAttendant", "Elevator", "Parking", "StorageUnits", "Pool", "FitnessCenter", "TennisCourt", "ClubHouse", "Power", "ParkingCommercial", "SprinklerSystem", "DockHighDoorsOrLoadingAvailable", "Availability24Hours", "AccentWalls", "BasketballCourt", "Bilingual", "BoatDocks", "BusinessCenter", "CarWashArea", "ChildCare", "ClubDiscount", "ConferenceRoom", "Concierge", "FreeWeights", "FurnishedAvailable", "GamingStations", "Garage", "Gate", "GroceryService", "GroupExercise", "GuestRoom", "Housekeeping", "HouseSitting", "JoggingWalkingTrails", "LakeFront", "LakeAccess", "Library", "MealService", "MediaRoom", "MultiUseRoom", "NightPatrol", "OnSiteMaintenance", "OnSiteManagement", "PackageReceiving", "PerDiemAccepted", "PlayGround", "Racquetball", "RecRoom", "Recycling", "Sauna", "ShortTermLease", "SmokeFree", "Spa", "Sundeck", "Transportation", "TVLounge", "ValetTrash", "Vintage", "VolleyballCourt", "WirelessInternet", "HighSpeedInternet" ], "type": "string" } }, "IncludedInRent": { "description": "The list of amenities included in rent the property has.", "type": "array", "items": { "enum": [ "Gas", "Electric", "Trash", "Water", "HotWater", "Telephone", "Heat", "Cable", "AirCon", "Satellite", "Sewer", "BroadbandInternet" ], "type": "string" } }, "Files": { "description": "List of media files associated with the property.", "type": "array", "items": { "$ref": "#/components/schemas/ListingFileMessage" } } } }, "ListingPutMessage": { "description": "This is an object that represents a rental unit's Listing Contact.", "required": [ "Rent", "AvailableDate", "IsManagedExternally" ], "type": "object", "properties": { "Rent": { "format": "double", "description": "Rent for the listing.", "type": "number" }, "Deposit": { "format": "double", "description": "Deposit for the listing.", "type": "number" }, "LeaseTerms": { "description": "The lease term for the listing.", "type": "string" }, "AvailableDate": { "format": "date", "description": "The date the listing is available.", "type": "string" }, "ContactId": { "format": "int32", "description": "The contact Id for the listing.", "type": "integer" }, "IsManagedExternally": { "type": "boolean" } } }, "ListingSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that `EntityId` refers to.", "enum": [ "Property", "RentalOwner" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to only listings that are associated with the specified entity id value. The id must be of the type specified in `EntityType` property.", "type": "integer" } } }, "ListingUnitMessage": { "description": "Details of the unit.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental unit unique identifier.", "type": "integer" }, "UnitNumber": { "description": "Unit number.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit. Null if no value is set.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit. Null if no value is set.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit. Null if no value is set.", "type": "integer" }, "Description": { "description": "Description of the unit.", "type": "string" }, "MarketRent": { "format": "double", "description": "Market rent of the unit. This value is separate from the lease rent and is typically used for rental listings. Null if no value is set.", "type": "number" }, "Features": { "description": "List of features for the unit.", "type": "array", "items": { "enum": [ "CableReady", "Microwave", "HardwoodFloors", "HighSpeedInternet", "AirConditioning", "Refrigerator", "Dishwasher", "WalkinClosets", "BalconyOrDeckOrPatio", "GarageParking", "Carport", "FencedYard", "LaundryRoomOrHookups", "Fireplace", "CableReadyCommercial", "HighSpeedInternetCommercial", "AirConditioningCommercial", "Heating", "OvenOrRange", "HeatElectric", "HeatGas", "HeatOil", "PetsAllowed", "Balcony", "PrivateBalcony", "PrivatePatio", "Dryer", "Heat", "WD_Hookup", "Washer", "AdditionalStorage", "Alarm", "Carpet", "CeilingFan", "ControlledAccess", "Courtyard", "Disposal", "DoubleSinkVanity", "FramedMirrors", "Furnished", "Handrails", "IndividualClimateControl", "IslandKitchen", "LinenCloset", "Pantry", "Satellite", "Skylight", "TileFlooring", "VaultedCeiling", "View", "VinylFlooring", "WheelChair", "WindowCoverings" ], "type": "string" } }, "Files": { "description": "List of media files associated with the unit.", "type": "array", "items": { "$ref": "#/components/schemas/ListingFileMessage" } } } }, "LockPeriodSettingsGlobalMessage": { "type": "object", "properties": { "LockDate": { "format": "date", "description": "Financial transactions on or prior to this date will be locked.", "type": "string" } } }, "LockPeriodSettingsOverridesMessage": { "type": "object", "properties": { "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "LockDate": { "format": "date", "description": "Accounting transactions related to the property specified in the Property field on or prior to this date will be locked.", "type": "string" } } }, "LoggedByStaffUserMessage": { "description": "The staff member that logged the call.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The staff user unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the staff user.", "type": "string" }, "LastName": { "description": "Last name of the staff user.", "type": "string" }, "Href": { "description": "A link to the staff user resource.", "type": "string" } } }, "LookupMessage": { "type": "object", "properties": { "Id": { "format": "int32", "type": "integer" }, "Name": { "type": "string" } } }, "MailingTemplateMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the mailing template.", "type": "integer" }, "Name": { "description": "Name of the mailing template.", "type": "string" }, "Description": { "description": "Description of the mailing template.", "type": "string" }, "RecipientType": { "description": "Intended recipient type for mailings using the template.", "enum": [ "Tenants", "AssociationOwners", "RentalOwners", "Vendors", "Applicants" ], "type": "string" } } }, "MeterReadingDetailMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the reading detail.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Unique identifier of the unit.", "type": "integer" }, "UnitNumber": { "description": "Number of the unit.", "type": "string" }, "PriorValue": { "format": "int32", "description": "Previous meter reading value.", "type": "integer" }, "Value": { "format": "int32", "description": "Most recent meter reading value.", "type": "integer" }, "ReadingDate": { "format": "date", "description": "Date the meter was read.", "type": "string" } } }, "MeterReadingDetailPutMessage": { "required": [ "UnitId", "PriorValue", "Value" ], "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier of the detail being updated.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Unique identifier of the unit associated with the meter reading.", "type": "integer" }, "PriorValue": { "format": "int32", "description": "Previous meter reading value.", "type": "integer" }, "Value": { "format": "int32", "description": "Current meter reading value.", "type": "integer" } } }, "MeterReadingDetailsDeleteSearchMessage": { "required": [ "ReadingDate", "MeterType" ], "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "MeterType": { "description": "Filters results to the specified meter type.", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" } } }, "MeterReadingDetailsMessage": { "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Requested date for meter reading details. Details will be the most recent readings on or before this date.", "type": "string" }, "MeterType": { "description": "Type of meter the reading is for.", "enum": [ "Unknown", "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" }, "Details": { "description": "List of reading details for all units.", "type": "array", "items": { "$ref": "#/components/schemas/MeterReadingDetailMessage" } } } }, "MeterReadingDetailsPutMessage": { "required": [ "ReadingDate", "MeterType", "Details" ], "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Date the meter reading occurred on. Date must be formatted as YYYY-MM-DD.", "type": "string" }, "MeterType": { "description": "Type of meter being read.", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" }, "Details": { "description": "Collection of detailed meter readings. At least one item is required.", "type": "array", "items": { "$ref": "#/components/schemas/MeterReadingDetailPutMessage" } } } }, "MeterReadingDetailsPutSearchMessage": { "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "MeterType": { "description": "Filters results to the specified meter type.", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" } } }, "MeterReadingDetailsSearchMessage": { "required": [ "ReadingDate", "MeterType" ], "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Filters results to any meter readings whose entry date is equal to the specified value. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "MeterType": { "description": "Filters results to the specified meter type.", "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" } } }, "MeterReadingMessage": { "type": "object", "properties": { "ReadingDate": { "format": "date", "description": "Date the meter reading was recorded.", "type": "string" }, "ResponseMeterType": { "description": "Meter type for the meter reading.", "enum": [ "Unknown", "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" }, "Value": { "format": "int32", "description": "Total value across all units for the meter reading.", "type": "integer" }, "Usage": { "format": "int32", "description": "The amount used between the prior reading and this reading, calculated by subtracting prior value from value. Usage will be the basis used when charging tenants for a reading.", "type": "integer" }, "ChargesCreated": { "description": "Indicates if charges were created for the meter reading.", "type": "boolean" } } }, "MeterReadingSearchMessage": { "required": [ "ReadingDateFrom", "ReadingDateTo" ], "type": "object", "properties": { "ReadingDateFrom": { "format": "date", "description": "Filters results to any meter readings whose entry date that is greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "type": "string" }, "ReadingDateTo": { "format": "date", "description": "Filters results to any meter readings whose entry date is less than or equal to the specified value. The value must be formatted as YYYY-MM-DD. The maximum date range is 365 days.", "type": "string" }, "MeterTypes": { "description": "Filters results to the specified meter types.", "type": "array", "items": { "enum": [ "Electric", "Gas", "Oil", "Water", "Sewer" ], "type": "string" } } } }, "MultipleBillPaymentsPostMessage": { "required": [ "BankAccountId", "EntryDate", "BillIds" ], "type": "object", "properties": { "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the payment was made from.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the payment was made.", "type": "string" }, "QueueChecksForPrinting": { "description": "Indicates whether to queue local check printing. Bank account associated with the bill must have check printing enabled to be true.", "type": "boolean" }, "BillIds": { "description": "Unique identifiers of bills.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "VendorCreditIds": { "description": "Unique identifiers of the vendor credits to apply to the payment.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "NoteMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Note unique identifier.", "type": "integer" }, "Note": { "description": "Note contents.", "type": "string" }, "LastUpdatedByUser": { "$ref": "#/components/schemas/LastUpdatedByUserMessage" } } }, "NotePostMessage": { "required": [ "Note" ], "type": "object", "properties": { "Note": { "description": "Note contents. The value cannot exceed 65535 characters.", "type": "string" } } }, "NotePutMessage": { "required": [ "Note" ], "type": "object", "properties": { "Note": { "description": "Note contents. The value cannot exceed 65535 characters.", "type": "string" } } }, "NoteSearchMessage": { "type": "object", "properties": { "UpdatedDateTimeFrom": { "format": "date-time", "description": "Filters results to any note whose updated date and time are greater than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "type": "string" }, "UpdatedDateTimeTo": { "format": "date-time", "description": "Filters results to any note whose updated date and time are less than or equal to the specified value. The value must be formatted as YYYY-MM-DD HH:MM:SS.", "type": "string" }, "LastUpdatedByUserId": { "format": "int32", "description": "Filters results to only notes that were last updated by the specified user identifier.", "type": "integer" } } }, "OfflinePaymentsMessage": { "description": "Offline payment settings.", "type": "object", "properties": { "DisplayInfoInResidentCenter": { "description": "Indicates whether the offline payment information is displayed in the Buildium Resident Center.", "type": "boolean" }, "DisplayCompanyAddress": { "description": "Indicates whether to display the company address along with the offline payment information. If `DisplayInfoInResidentCenter` is false the company address will not be displayed.", "type": "boolean" }, "PaymentInstructions": { "description": "Directions for how to make offline payments. If `DisplayInfoInResidentCenter` is false the payment instructions will not be displayed.", "type": "string" } } }, "OfflinePaymentsPutMessage": { "description": "Offline payment settings.", "required": [ "DisplayInfoInResidentCenter", "DisplayCompanyAddress" ], "type": "object", "properties": { "DisplayInfoInResidentCenter": { "description": "Indicates whether the offline payment information is displayed in the Buildium Resident Center.", "type": "boolean" }, "DisplayCompanyAddress": { "description": "Indicates whether to display the company address along with the offline payment information. If `DisplayInfoInResidentCenter` is false the company address will not be displayed.", "type": "boolean" }, "PaymentInstructions": { "description": "Directions for how to make offline payments. The value cannot exceed 65,535 characters. If `DisplayInfoInResidentCenter` is false the payment instructions will not be displayed.", "type": "string" } } }, "OutstandingBalancesLineMessage": { "type": "object", "properties": { "GlAccountId": { "format": "int32", "description": "General ledger account unique identifier.", "type": "integer" }, "TotalBalance": { "format": "double", "description": "Total balance of the account on the line item.", "type": "number" } } }, "OwnershipAccountAutoAllocatedPaymentPostMessage": { "required": [ "Date", "PaymentMethod", "SendEmailReceipt", "TotalAmount" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "SendEmailReceipt": { "description": "An indicator for whether or not to send an email receipt to the payee. If the payee does not have an email address set, no email will be sent.", "type": "boolean" }, "TotalAmount": { "format": "double", "description": "The total amount of the payment being created.", "type": "number" } } }, "OwnershipAccountChargeRecurringTransactionMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the recurring charge schedule.", "type": "integer" }, "OwnershipAccountId": { "format": "int32", "description": "The unique identifier of the ownership account that the recurring charge will be applied to.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier the recurring charge is applied to.", "type": "integer" }, "RentId": { "format": "int32", "description": "The unique identifier of the scheduled Rent entity. If the charge is not associated with a Rent entity then the value will be `NULL`.", "type": "integer" }, "Amount": { "format": "double", "description": "The amount of the recurring charge.", "type": "number" }, "Memo": { "description": "Memo associated with the recurring charge.", "type": "string" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurence this charge was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled charge will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the charge will post on the lease ledger. This setting can be used to add the charge to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring charge will be processed.", "type": "integer" }, "Frequency": { "description": "Indicates the frequency at which the recurring charge is processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring charge will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" } } }, "OwnershipAccountCreditLinePostMessage": { "required": [ "Amount", "GlAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" } } }, "OwnershipAccountCreditPostMessage": { "required": [ "Date", "CreditType", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Description of the transaction. The value cannot exceed 65 characters.", "type": "string" }, "CreditType": { "description": "Indicates how the credit should be applied.\r\n", "enum": [ "WaiveUnpaid", "Exchange", "PreviouslyDeposited" ], "type": "string" }, "OffsettingGLAccountId": { "format": "int32", "description": "Sets the offsetting general ledger account identifier for the credit.\r\n
This value must be provided when the `CreditType` field is set to `Exchange` or `PreviouslyDeposited`.\r\n
When the `CreditType` is `Exchange` this must be an *expense* general ledger account type.\r\n
When the `CreditType` is `PreviouslyDeposited` this must be an *equity* general ledger account type.", "type": "integer" }, "Lines": { "description": "A collection of line items included in the credit. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountCreditLinePostMessage" } } } }, "OwnershipAccountDepositWithholdingLinePostMessage": { "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "General Ledger Account identifier under which the line item amount will be recorded. Must be an Income account.", "type": "integer" } } }, "OwnershipAccountDepositWithholdingPostMessage": { "required": [ "EntryDate", "DepositLiabilityGLAccountId" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date of the deposit withholding. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "DepositLiabilityGLAccountId": { "format": "int32", "description": "General Ledger Account identifier to record the deposit withholding under.", "type": "integer" }, "Memo": { "description": "Memo associated with the withholding. Memo cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "Collection of line items included in this deposit withholding. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountDepositWithholdingLinePostMessage" } } } }, "OwnershipAccountLedgerChargeLinesPutMessage": { "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" }, "ReferenceNumber": { "description": "Reference number associated with the charge. The value cannot exceed 30 characters.", "type": "string" } } }, "OwnershipAccountLedgerChargeLinesSaveMessage": { "required": [ "Amount", "GlAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GlAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" } } }, "OwnershipAccountLedgerChargePostMessage": { "required": [ "Date", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the charge. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Memo associated with the charge. The value cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "Collection of line items to be included in the charge. All existing line items will be deleted and replaced with the line items in this request. At least 1 line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountLedgerChargeLinesSaveMessage" } } } }, "OwnershipAccountLedgerChargePutMessage": { "required": [ "Date", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "Date of the charge. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Memo": { "description": "Memo associated with the charge. The value cannot exceed 65 characters.", "type": "string" }, "Lines": { "description": "A collection of line items included in the charge. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountLedgerChargeLinesPutMessage" } } } }, "OwnershipAccountLedgerPaymentLineSaveMessage": { "description": "This is an object that represents a line item on an Ownership Account Ledger Payment", "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded.", "type": "integer" } } }, "OwnershipAccountLedgerPaymentPostMessage": { "description": "This is an object that represents a Payment made in a particular Ownership Account Ledger", "required": [ "Date", "PaymentMethod", "SendEmailReceipt", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "SendEmailReceipt": { "description": "An indicator for whether or not to send an email receipt to the payee. If the payee does not have an email address set, no email will be sent.", "type": "boolean" }, "Lines": { "description": "A collection of line items included in the payment. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountLedgerPaymentLineSaveMessage" } } } }, "OwnershipAccountLedgerPaymentPutMessage": { "description": "This is an object that represents a Payment made in a particular Ownership Account Ledger", "required": [ "Date", "PaymentMethod", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the transaction. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "PayeeUserId": { "format": "int32", "description": "The payee's user unique identifier.", "type": "integer" }, "Memo": { "description": "A brief note describing the reason for the payment. The value cannot exceed 65 characters.", "type": "string" }, "ReferenceNumber": { "description": "The reference Number of the transaction. The value cannot exceed 30 characters.", "type": "string" }, "Lines": { "description": "A collection of line items included in the payment. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountLedgerPaymentLineSaveMessage" } } } }, "OwnershipAccountOutstandingBalanceMessage": { "type": "object", "properties": { "OwnershipAccountId": { "format": "int32", "description": "Ownership account unique identifier.", "type": "integer" }, "AssociationId": { "format": "int32", "description": "Association unique identifier .", "type": "integer" }, "UnitId": { "format": "int32", "description": "Association unit unique identifier.", "type": "integer" }, "Balance0To30Days": { "format": "double", "description": "Outstanding balance due from within the last 30 days.", "type": "number" }, "Balance31To60Days": { "format": "double", "description": "Outstanding balance due from within 31 to 60 days ago.", "type": "number" }, "Balance61To90Days": { "format": "double", "description": "Outstanding balance due from within 61 to 90 days ago.", "type": "number" }, "BalanceOver90Days": { "format": "double", "description": "Outstanding balance due from over 90 days ago.", "type": "number" }, "TotalBalance": { "format": "double", "description": "Total outstanding balance due.", "type": "number" }, "Balances": { "description": "Breakdown of outstanding balance due by general ledger account.", "type": "array", "items": { "$ref": "#/components/schemas/OutstandingBalancesLineMessage" } }, "PastDueEmailSentDate": { "format": "date-time", "description": "Date of notification for outstanding balance.", "type": "string" } } }, "OwnershipAccountOutstandingBalanceSearchMessage": { "type": "object", "properties": { "AssociationId": { "format": "int32", "description": "Association unique identifier", "type": "integer" }, "OwnershipAccountStatuses": { "description": "List of ownership account statuses", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "OwnershipAccountIds": { "description": "List of ownership account ids", "type": "array", "items": { "format": "int32", "type": "integer" } }, "PastDueEmail": { "description": "Status of notification of outstanding balances", "enum": [ "NoEmailAddress", "Sent" ], "type": "string" }, "BalanceDuration": { "description": "Duration of outstanding balances", "enum": [ "TotalBalance", "Balance0to30Days", "Balance31to60Days", "Balance61to90Days", "BalanceOver90Days" ], "type": "string" } } }, "OwnershipAccountRecurringCreditMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the recurring credit schedule.", "type": "integer" }, "OwnershipAccountId": { "format": "int32", "description": "The unique identifier of the ownership account that the recurring credit will be applied to.", "type": "integer" }, "CreditType": { "description": "Indicates how the credit will be applied.\r\n", "enum": [ "WaiveUnpaid", "Exchange", "PreviouslyDeposited" ], "type": "string" }, "OffsettingGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as the expense account.", "type": "integer" }, "PostingRuleGLAccountId": { "format": "int32", "description": "Indicates whether to apply a posting rule when processing the transaction that would only record the credit if a prior payment has been made.\r\n

\r\nSet the field value to the Rent Income general ledger account identifier if the credit should only be recorded when a payment was made and applied to the Rent Income general ledger account.\r\n

\r\nSet the field value to the Accounts Receivable general ledger account identifier if the credit should only be recorded when a payment was made and applied to *any* general ledger account.\r\n

\r\nSet the field value to null to always record the credit.", "type": "integer" }, "Lines": { "description": "Line items describing how the credit is to be allocated when the recurring transaction is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLineMessage" } }, "Amount": { "format": "double", "description": "The total amount of the recurring credit based on sum of the `Lines.Amount`.", "type": "number" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring credit will be processed.", "type": "integer" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurrence this credit was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled credit will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the credit will post on the lease ledger. This setting can be used to add the credit to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Memo": { "description": "Memo associated with the recurring credit.", "type": "string" }, "Frequency": { "description": "Indicates the frequency at which the recurring credit is processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring credit will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" } } }, "OwnershipAccountRecurringPaymentMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier of the recurring payment schedule.", "type": "integer" }, "OwnershipAccountId": { "format": "int32", "description": "The unique identifier of the ownership account that the recurring payment will be applied to.", "type": "integer" }, "Payer": { "$ref": "#/components/schemas/PayeeMessage" }, "PaymentMethod": { "description": "The method of payment for the transaction.", "enum": [ "None", "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment", "RetailCash" ], "type": "string" }, "Lines": { "description": "Line items describing how the payment is to be allocated when the recurring transaction is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLineMessage" } }, "Amount": { "format": "double", "description": "The total amount of the recurring payment based on sum of the `Lines.Amount`.", "type": "number" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the first occurence this payment was processed.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled payment will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the payment will post on the lease ledger. This setting can be used to add the payment to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring payment will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" }, "OccurrencesRemaining": { "format": "int32", "description": "The number of remaining times this recurring payment will be processed.", "type": "integer" }, "Memo": { "description": "Memo associated with the recurring payment.", "type": "string" } } }, "OwnershipAccountRefundLineMessage": { "type": "object", "properties": { "Amount": { "format": "double", "description": "Amount of the account on the line item.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the refund.", "type": "integer" } } }, "OwnershipAccountRefundLinesPostMessage": { "required": [ "Amount", "GLAccountId" ], "type": "object", "properties": { "Amount": { "format": "double", "description": "Line item amount.", "type": "number" }, "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" } } }, "OwnershipAccountRefundMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Refund unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the refund.", "type": "string" }, "Payees": { "description": "List of payees being refunded.", "type": "array", "items": { "$ref": "#/components/schemas/PayeeMessage" } }, "Memo": { "description": "Memo associated with the refund, if applicable.", "type": "string" }, "CheckNumber": { "description": "Check number associated with the refund, if applicable.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the refund was made from.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "TotalAmount": { "format": "double", "description": "Total amount of the refund.", "type": "number" }, "Lines": { "description": "A collection of line items included in the refund.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountRefundLineMessage" } } } }, "OwnershipAccountRefundPostMessage": { "required": [ "Date", "PayeeUserIds", "BankAccountId", "Address", "Lines" ], "type": "object", "properties": { "Date": { "format": "date", "description": "The date of the refund. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "PayeeUserIds": { "description": "Unique identifiers of the users receiving the refund.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Memo": { "description": "A brief note describing the reason for the refund. The value cannot exceed 65 characters.", "type": "string" }, "CheckNumber": { "description": "Check number associated with the refund, if applicable. The value cannot exceed 30 characters.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account the refund is issued from.", "type": "integer" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "Lines": { "description": "A collection of line items included in the refund. At least one line item is required.", "type": "array", "items": { "$ref": "#/components/schemas/OwnershipAccountRefundLinesPostMessage" } } } }, "OwnershipAccountTransactionMessage": { "description": "This is an object that represents a financial transaction", "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "TransactionType": { "description": "Type of transaction that occurred.", "type": "string" }, "TransactionTypeEnum": { "description": "The type of transaction that occurred.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "TotalAmount": { "format": "double", "description": "Sum of all `Journal.Lines.Amount` entries in the transaction.", "type": "number" }, "CheckNumber": { "description": "Check number associated with the transaction, if applicable.", "type": "string" }, "OwnershipAccountId": { "format": "int32", "description": "Ownership account unique identifier associated with the transaction, if applicable. Null if value is not set.", "type": "integer" }, "PayeeAssociationOwnerId": { "format": "int32", "description": "The payee's association owner unique identifier associated with the transaction, where applicable.", "type": "integer" }, "PaymentMethod": { "description": "The payment method used for the transaction.", "type": "string" }, "Journal": { "$ref": "#/components/schemas/JournalMessage" } } }, "PaidByMessage": { "description": "Transaction line item.", "type": "object", "properties": { "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "ParticipantMessage": { "description": "The participant in the phone call.", "type": "object", "properties": { "EntityId": { "format": "int32", "description": "The unique identifier for the participant entity.", "type": "integer" }, "EntityResources": { "description": "A list of the participants entity types and links to the entity resource. Note, that a participant can have more than one type assigned to them. For example, they could be both a vendor and a rental owner.", "type": "array", "items": { "$ref": "#/components/schemas/ParticipantResourceMessage" } }, "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" } } }, "ParticipantResourceMessage": { "description": "The participant in the phone call.", "type": "object", "properties": { "Type": { "description": "Indicates the participant type.", "enum": [ "Vendor", "RentalOwner", "RentalTenant", "AssociationOwner" ], "type": "string" }, "Href": { "description": "A link to the participant resource.", "type": "string" } } }, "PayeeMessage": { "description": "The payer of the transaction.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The payer user unique identifier.", "type": "integer" }, "Name": { "description": "The name of the payer.", "type": "string" }, "Type": { "description": "The payer user entity type.", "enum": [ "Tenant", "AssociationTenant", "AssociationOwner", "RentalOwner", "Vendor", "Staff" ], "type": "string" }, "Href": { "description": "A link to the resource endpoint associated with the payer.", "type": "string" } } }, "PaymentDetailMessage": { "description": "This object represents payment details.", "type": "object", "properties": { "PaymentMethod": { "description": "The payment method used for the transaction.", "enum": [ "None", "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment", "RetailCash" ], "type": "string" }, "Payee": { "$ref": "#/components/schemas/PayeeMessage" }, "IsInternalTransaction": { "description": "Whether the transaction is processed internally.", "type": "boolean" }, "InternalTransactionStatus": { "$ref": "#/components/schemas/InternalTransactionStatusMessage" } } }, "PaymentRecurringTransactionPostMessage": { "required": [ "PaymentMethod", "FirstOccurrenceDate", "PostDaysInAdvance", "Frequency" ], "type": "object", "properties": { "PayerUserId": { "format": "int32", "description": "The unique identifier of the user making the payment.", "type": "integer" }, "PaymentMethod": { "description": "The payment method for the transaction.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "Lines": { "description": "Line items describing how the payment is to be allocated when the payment is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLinePostMessage" } }, "Memo": { "description": "Memo associated with the recurring payment. This value cannot exceed 65 characters.", "type": "string" }, "FirstOccurrenceDate": { "format": "date", "description": "The date the payment will first be processed. This value along with the `Frequency` is also used as the basis for the date set on the transactions in future occurrences.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "Specifies the number of days ahead of the transaction date the payment will post on the lease ledger. This setting can be used to add the payment to the ledger ahead of the due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022. Note, the value must be between 0 to 45 or set to 60, 75 or 90.", "type": "integer" }, "Frequency": { "description": "Specifies the frequency at which the recurring payment will be processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring payment will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "UntilEndOfTerm", "SpecificNumber" ], "type": "string" }, "NumberOfOccurrences": { "format": "int32", "description": "Indicates the number of times the recurring payment should be processed. This value is required if the `Duration` field is set to `SpecificNumber`. This value can not exceed 100.", "type": "integer" } } }, "PaymentTransactionsMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Payment transaction unique identifier.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "Amount": { "format": "double", "description": "Payment amount.", "type": "number" } } }, "PhoneLogMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Phone log unique identifier.", "type": "integer" }, "Participant": { "$ref": "#/components/schemas/ParticipantMessage" }, "LoggedByStaffUser": { "$ref": "#/components/schemas/LoggedByStaffUserMessage" }, "Subject": { "description": "Subject of the phone call.", "type": "string" }, "Description": { "description": "Description of the phone call.", "type": "string" }, "CallDateTime": { "format": "date-time", "description": "The date and time in UTC of when the call took place.", "type": "string" } } }, "PhoneLogParticipantPostMessage": { "description": "The participant in the phone call.", "required": [ "EntityType", "EntityId" ], "type": "object", "properties": { "EntityType": { "description": "The type of participant entity.", "enum": [ "Vendor", "RentalOwner", "RentalTenant", "AssociationOwner" ], "type": "string" }, "EntityId": { "format": "int32", "description": "The unique identifier for the participant entity.", "type": "integer" }, "UnitAgreement": { "$ref": "#/components/schemas/PhoneLogParticipantUnitAgreementPostMessage" } } }, "PhoneLogParticipantUnitAgreementPostMessage": { "description": "The unit agreement associated with the participant.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The unit agreement unique identifier. Note, if a value is provided in this field then `Type` must also be provided.", "type": "integer" }, "Type": { "description": "The type of unit agreement. Note, this field is required if a value is provided for the `Id` field.", "enum": [ "NotSet", "Lease", "OwnershipAccount" ], "type": "string" } } }, "PhoneLogPostMessage": { "required": [ "Participant", "Subject", "Description", "CallDateTime" ], "type": "object", "properties": { "Participant": { "$ref": "#/components/schemas/PhoneLogParticipantPostMessage" }, "Subject": { "description": "Subject of the phone call. This value is restricted to a maximum of 255 characters.", "type": "string" }, "Description": { "description": "Description of the phone call. This value is restricted to a maximum of 65,535 characters.", "type": "string" }, "CallDateTime": { "format": "date-time", "description": "The date and time the call took place. Time of the phone call must be UTC. Example format: \"2021-01-26T13:59:15Z\"", "type": "string" } } }, "PhoneLogPutMessage": { "required": [ "Subject", "Description", "CallDateTime" ], "type": "object", "properties": { "Subject": { "description": "Subject of the phone call. This value is restricted to a maximum of 255 characters.", "type": "string" }, "Description": { "description": "Description of the phone call. This value is restricted to a maximum of 65,535 characters.", "type": "string" }, "CallDateTime": { "format": "date-time", "description": "The date and time the call took place. Time of the phone call must be UTC. Example format: \"2021-01-26T13:59:15Z\"", "type": "string" } } }, "PhoneLogSearchMessage": { "type": "object", "properties": { "FromDate": { "format": "date", "description": "Filters results to any phone log whose call date is greater than or equal to the specified value.", "type": "string" }, "ToDate": { "format": "date", "description": "Filters results to any phone log whose call date is less than or equal to the specified value.", "type": "string" }, "LoggedByStaffUserIds": { "description": "Filters results to any phone log that was logged by staff user(s).", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Subject": { "description": "Filters results to any phone log whose subject *contains* the specified value.", "type": "string" }, "ParticipantEntityId": { "format": "int32", "description": "Filters results to any phone logs that match the participant identifier. Note, if a value is provided in this field the `ParticipantEntityType` must also be provided.", "type": "integer" }, "ParticipantEntityType": { "description": "Filters results to any phone log with the specified participant type. This field is required if a value is provided for the `ParticipantEntityId` field.", "enum": [ "Vendor", "RentalOwner", "RentalTenant", "AssociationOwner" ], "type": "string" }, "UnitAgreementId": { "format": "int32", "description": "Filters results to any phone log with the specified unit agreement identifier. Note, if a value is provided in this field the `UnitAgreementType` must also be provided.", "type": "integer" }, "UnitAgreementType": { "description": "Filters results to any phone log with the specified unit agreement type. This field is required if a value is provided for the `UnitAgreementId` field.", "enum": [ "Lease", "OwnershipAccount" ], "type": "string" } } }, "PhoneNumberMessage": { "description": "This is an object that represents a phone number.", "type": "object", "properties": { "Number": { "description": "Phone number.", "type": "string" }, "Type": { "description": "Indicates the type of phone number.", "enum": [ "NotSet", "Home", "Office", "Cell", "Personal", "Fax", "Other" ], "type": "string" } } }, "PhoneNumbersMessage": { "description": "Phone numbers.", "type": "object", "properties": { "Home": { "description": "Home phone number. If provided, must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" }, "Work": { "description": "Work phone number. If provided, must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" }, "Mobile": { "description": "Mobile phone number. If provided, must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" }, "Fax": { "description": "Fax number. If provided, must be between 10 and 20 characters, ideally formatted as `(123) 123-1234`.", "type": "string" } } }, "PropertyGroupMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Property group unique identifier.", "type": "integer" }, "Name": { "description": "Property group name.", "type": "string" }, "Description": { "description": "Property group description.", "type": "string" }, "Properties": { "description": "A list of association and/or rental property unique identifiers assigned to the property group.", "type": "array", "items": { "$ref": "#/components/schemas/PropertyMessage" } }, "CreatedByUser": { "$ref": "#/components/schemas/CreatedByUserMessage" } } }, "PropertyGroupPostMessage": { "required": [ "Name", "PropertyIds" ], "type": "object", "properties": { "Name": { "description": "Property group name. The name can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Description of the property group. The description can not exceed 1000 characters.", "type": "string" }, "PropertyIds": { "description": "A list of association and/or rental property unique identifiers to assign to the property group. Property groups cannot be created using inactive associations and/or rental properties.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "PropertyGroupPutMessage": { "required": [ "Name", "PropertyIds" ], "type": "object", "properties": { "Name": { "description": "Property group name. The name can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Description of the property group. The description can not exceed 1000 characters.", "type": "string" }, "PropertyIds": { "description": "A list of association and/or rental property unique identifiers to assign to the property group. Property groups cannot be updated using inactive associations and/or rental properties.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "PropertyGroupSearchMessage": { "type": "object", "properties": { "PropertyIds": { "description": "Filters results to property groups that contain any of the specified property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "NameOrDescription": { "description": "Filters results to any property group whose name or description contains the specified value.", "type": "string" } } }, "PropertyManagerMessage": { "description": "This is an object that represents a property manager.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Property manager unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the property manager.", "type": "string" }, "LastName": { "description": "Last name of the property manager.", "type": "string" }, "CompanyName": { "description": "Company name of the rental owner. Empty if `IsCompany` is `false`.", "type": "string" }, "IsCompany": { "description": "Denotes if the property manager is a company.", "type": "boolean" }, "ProfilePhotoUrl": { "description": "Profile photo URL for the property manager.", "type": "string" }, "Email": { "description": "Email of the property manager.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers associated with the property manager.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } } } }, "PropertyMessage": { "description": "Property information.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The property unique identifier.", "type": "integer" }, "Type": { "description": "The property type.", "enum": [ "Association", "Rental" ], "type": "string" }, "Href": { "description": "A link to the property entity resource.", "type": "string" } } }, "RecurringTransactionLineMessage": { "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account unique identifier the recurring transaction is related to.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the line item.", "type": "number" } } }, "RecurringTransactionLinePostMessage": { "required": [ "GLAccountId", "Amount" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "The general ledger account identifier under which the line item amount will be recorded. The account must be a liability or income type.", "type": "integer" }, "Amount": { "format": "double", "description": "Line item amount.", "type": "number" } } }, "RecurringTransactionMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The unique identifier for the recurring transaction schedule.", "type": "integer" }, "TransactionType": { "description": "Indicates the type of transaction to be applied to the ledger.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "IsExpired": { "description": "Indicates if the recurring transaction schedule has expired.", "type": "boolean" }, "RentId": { "format": "int32", "description": "The unique identifier of the scheduled Rent entity. This field is only applicable for `Charge` transaction types.", "type": "integer" }, "OffsettingGLAccountId": { "format": "int32", "description": "Offsetting general ledger account identifier. The offsetting general ledger account acts as the expense account. Note, this field is only applicable for `Credit` transaction types.", "type": "integer" }, "Lines": { "description": "Line items describing how the transaction is to be allocated when it is processed.", "type": "array", "items": { "$ref": "#/components/schemas/RecurringTransactionLineMessage" } }, "Amount": { "format": "double", "description": "Total amount of the recurring transaction.", "type": "number" }, "Memo": { "description": "Memo associated with the recurring transaction.", "type": "string" }, "NextOccurrenceDate": { "format": "date", "description": "The next date the scheduled transaction will be processed.", "type": "string" }, "PostDaysInAdvance": { "format": "int32", "description": "The number of days ahead of the transaction date the transaction will post on the lease ledger. This setting is used to add the transaction to the ledger ahead of it's due date for visibility. For example, if the `FirstOccurrenceDate` is set to 8/10/2022 and this value is set to 5 then the charge will added to the ledger on 8/5/2022, but will have transaction date of 8/10/2022.", "type": "integer" }, "Frequency": { "description": "Indicates the frequency at which the recurring transaction is processed.", "enum": [ "Monthly", "Weekly", "Every2Weeks", "Quarterly", "Yearly", "Every2Months", "Daily", "Every6Months", "OneTime" ], "type": "string" }, "Duration": { "description": "Specifies the period of time/occurrences the recurring transaction will be processed. Note, if the `Frequency` field is set to `OneTime` this field should be set to `NULL` as any submitted value will be ignored.", "enum": [ "Unspecified", "UntilEndOfTerm", "SpecificNumber", "SpecificDate" ], "type": "string" } } }, "RentalApplianceMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Appliance unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the appliance belongs to.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Rental unit unique identifier that the appliance belongs to.", "type": "integer" }, "Name": { "description": "Name of the appliance.", "type": "string" }, "Make": { "description": "Make of the appliance.", "type": "string" }, "Model": { "description": "Model of the appliance.", "type": "string" }, "Description": { "description": "Description of the appliance.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "Warranty end date of the appliance.", "type": "string" } } }, "RentalAppliancePostMessage": { "required": [ "PropertyId", "Name" ], "type": "object", "properties": { "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the appliance belongs to.", "type": "integer" }, "UnitId": { "format": "int32", "description": "Rental unit unique identifier that the appliance belongs to.", "type": "integer" }, "Name": { "description": "The name of the appliance. The name cannot exceed 100 characters.", "type": "string" }, "Make": { "description": "The make of the appliance. The make cannot exceed 30 characters.", "type": "string" }, "Model": { "description": "The model of the appliance. The model cannot exceed 30 characters.", "type": "string" }, "Description": { "description": "The description of the appliance. The description cannot exceed 500 characters.", "type": "string" }, "InstallDate": { "format": "date", "description": "The install date for the appliance's warranty. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "The end date for the appliance's warranty. The warranty's end date cannot be before the installed date, if it exists. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "RentalAppliancePutMessage": { "required": [ "Name" ], "type": "object", "properties": { "UnitId": { "format": "int32", "description": "The unit identifier the rental appliance belongs to. Must be within the rental property the appliance is in.", "type": "integer" }, "Name": { "description": "The name of the rental appliance. The name cannot exceed 100 characters.", "type": "string" }, "Make": { "description": "The make of the rental appliance. The make cannot exceed 30 characters.", "type": "string" }, "Model": { "description": "The model of the rental appliance. The model cannot exceed 30 characters.", "type": "string" }, "Description": { "description": "The description of the rental appliance. The description cannot exceed 500 characters.", "type": "string" }, "WarrantyEndDate": { "format": "date", "description": "The end date for the rental appliance's warranty. The warranty's end date cannot be before the installed date, if it exists. Must be formatted as `YYYY-MM-DD`.", "type": "string" } } }, "RentalApplianceSearchMessage": { "type": "object", "properties": { "PropertyIds": { "description": "Filters results to appliances associated to any of the specified rental property identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UnitIds": { "description": "Filters results to appliances associated to any of the specified rental unit identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "RentalApplianceServiceHistoryMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Appliance service history unique identifier.", "type": "integer" }, "ServiceType": { "description": "Type of service performed.", "enum": [ "Installed", "Serviced", "Uninstalled" ], "type": "string" }, "Date": { "format": "date", "description": "Date of the service.", "type": "string" }, "Details": { "description": "Details of the service.", "type": "string" } } }, "RentalApplianceServiceHistoryPostMessage": { "required": [ "ServiceType", "Date" ], "type": "object", "properties": { "ServiceType": { "description": "Specifies the type of service that occured.", "enum": [ "Installed", "Serviced", "Uninstalled" ], "type": "string" }, "Date": { "format": "date", "description": "Date the service was performed. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Details": { "description": "The service history details associated with the appliance. The description cannot exceed 100 characters.", "type": "string" } } }, "RentalFeaturesMessage": { "description": "Rental property amenities.", "type": "object", "properties": { "Features": { "description": "A list of overall property amenities.", "type": "array", "items": { "enum": [ "LaundryRoom", "WheelchairAccess", "DoorAttendant", "Elevator", "Parking", "StorageUnits", "Pool", "FitnessCenter", "TennisCourt", "ClubHouse", "Power", "ParkingCommercial", "SprinklerSystem", "DockHighDoorsOrLoadingAvailable", "Availability24Hours", "AccentWalls", "BasketballCourt", "Bilingual", "BoatDocks", "BusinessCenter", "CarWashArea", "ChildCare", "ClubDiscount", "ConferenceRoom", "Concierge", "FreeWeights", "FurnishedAvailable", "GamingStations", "Garage", "Gate", "GroceryService", "GroupExercise", "GuestRoom", "Housekeeping", "HouseSitting", "JoggingWalkingTrails", "LakeFront", "LakeAccess", "Library", "MealService", "MediaRoom", "MultiUseRoom", "NightPatrol", "OnSiteMaintenance", "OnSiteManagement", "PackageReceiving", "PerDiemAccepted", "PlayGround", "Racquetball", "RecRoom", "Recycling", "Sauna", "ShortTermLease", "SmokeFree", "Spa", "Sundeck", "Transportation", "TVLounge", "ValetTrash", "Vintage", "VolleyballCourt", "WirelessInternet", "HighSpeedInternet" ], "type": "string" } }, "IncludedInRent": { "description": "A list of amenities that are included in rent.", "type": "array", "items": { "enum": [ "Gas", "Electric", "Trash", "Water", "HotWater", "Telephone", "Heat", "Cable", "AirCon", "Satellite", "Sewer", "BroadbandInternet" ], "type": "string" } } } }, "RentalFeaturesPutMessage": { "type": "object", "properties": { "Features": { "description": "A list of overall property amenities. Any previously saved values that are not submitted in the update request will be deleted.", "type": "array", "items": { "enum": [ "LaundryRoom", "WheelchairAccess", "DoorAttendant", "Elevator", "Parking", "StorageUnits", "Pool", "FitnessCenter", "TennisCourt", "ClubHouse", "Power", "ParkingCommercial", "SprinklerSystem", "DockHighDoorsOrLoadingAvailable", "Availability24Hours", "AccentWalls", "BasketballCourt", "Bilingual", "BoatDocks", "BusinessCenter", "CarWashArea", "ChildCare", "ClubDiscount", "ConferenceRoom", "Concierge", "FreeWeights", "FurnishedAvailable", "GamingStations", "Garage", "Gate", "GroceryService", "GroupExercise", "GuestRoom", "Housekeeping", "HouseSitting", "JoggingWalkingTrails", "LakeFront", "LakeAccess", "Library", "MealService", "MediaRoom", "MultiUseRoom", "NightPatrol", "OnSiteMaintenance", "OnSiteManagement", "PackageReceiving", "PerDiemAccepted", "PlayGround", "Racquetball", "RecRoom", "Recycling", "Sauna", "ShortTermLease", "SmokeFree", "Spa", "Sundeck", "Transportation", "TVLounge", "ValetTrash", "Vintage", "VolleyballCourt", "WirelessInternet", "HighSpeedInternet" ], "type": "string" } }, "IncludedInRent": { "description": "A list of amenities that are included in rent. Any previously saved values that are not submitted in the update request will be deleted.", "type": "array", "items": { "enum": [ "Gas", "Electric", "Trash", "Water", "HotWater", "Telephone", "Heat", "Cable", "AirCon", "Satellite", "Sewer", "BroadbandInternet" ], "type": "string" } } } }, "RentalImageMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental image unique identifier.", "type": "integer" }, "Description": { "description": "Description of the image.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Provider": { "description": "The provider for the image. If an external provider is not used to host the image, this will be set to `None`.", "enum": [ "None", "YouTube", "Vimeo" ], "type": "string" }, "ShowInListing": { "description": "Indicates whether the image will be shown in listings for this rental.", "type": "boolean" } } }, "RentalImagePutMessage": { "required": [ "ShowInListing" ], "type": "object", "properties": { "Description": { "description": "Description of the image. The description cannot exceed 100 characters.", "type": "string" }, "ShowInListing": { "description": "Indicates whether the image will be shown in listings for this rental.", "type": "boolean" } } }, "RentalMessage": { "description": "This is an object that represents a rental property.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental property unique identifier.", "type": "integer" }, "Name": { "description": "Name of the rental property.", "type": "string" }, "StructureDescription": { "description": "Description of the rental property structure.", "type": "string" }, "NumberUnits": { "format": "int32", "description": "Number of units in the rental property.", "type": "integer" }, "IsActive": { "description": "Indicates whether the rental property is active within the Buildium platform.", "type": "boolean" }, "OperatingBankAccountId": { "format": "int32", "description": "The primary bank account that a rental property uses for its income and expenses.", "type": "integer" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that isn't disbursed in an owner draw.", "type": "number" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "YearBuilt": { "format": "int32", "description": "Year the rental property was built.", "type": "integer" }, "RentalType": { "description": "Indicates the type of rental property.", "enum": [ "None", "Residential", "Commercial" ], "type": "string" }, "RentalSubType": { "description": "Indicates the sub type of the rental property.", "enum": [ "CondoTownhome", "MultiFamily", "SingleFamily", "Industrial", "Office", "Retail", "ShoppingCenter", "Storage", "ParkingSpace" ], "type": "string" }, "RentalManager": { "$ref": "#/components/schemas/PropertyManagerMessage" } } }, "RentalOwnerContributionDataMessage": { "type": "object", "properties": { "ContributionRequests": { "description": "The contribution request details associated with the task.", "type": "array", "items": { "$ref": "#/components/schemas/RentalOwnerContributionMessage" } }, "ReminderSettings": { "$ref": "#/components/schemas/RentalOwnerContributionReminderMessage" } } }, "RentalOwnerContributionDataPutMessage": { "type": "object", "properties": { "ContributionRequests": { "description": "The contribution request details associated with the task.", "type": "array", "items": { "$ref": "#/components/schemas/RentalOwnerContributionPutMessage" } }, "ReminderSettings": { "$ref": "#/components/schemas/RentalOwnerContributionReminderPutMessage" } } }, "RentalOwnerContributionMessage": { "description": "Rental owner contribution detail", "type": "object", "properties": { "Description": { "description": "Description of the contribution.", "type": "string" }, "Amount": { "format": "double", "description": "Amount being requested for the contribution.", "type": "number" } } }, "RentalOwnerContributionPutMessage": { "description": "Rental owner contribution detail", "type": "object", "properties": { "Description": { "description": "Description of the contribution.", "type": "string" }, "Amount": { "format": "double", "description": "Amount being requested for the contribution.", "type": "number" } } }, "RentalOwnerContributionReminderMessage": { "description": "Rental owner contribution reminder settings", "type": "object", "properties": { "IsActive": { "description": "Flag for enabling the reminders.", "type": "boolean" }, "RecurrenceDays": { "format": "int32", "description": "Interval of days for the reminder to be sent on.", "type": "integer" } } }, "RentalOwnerContributionReminderPutMessage": { "description": "Rental owner contribution reminder settings", "type": "object", "properties": { "IsActive": { "description": "Flag for enabling the reminders.", "type": "boolean" }, "RecurrenceDays": { "format": "int32", "description": "Interval of days for the reminder to be sent on.", "type": "integer" } } }, "RentalOwnerMessage": { "description": "This is an object that represents a rental property owner.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental property owner unique identifier.", "type": "integer" }, "IsCompany": { "description": "Indicates whether the rental owner is a company.", "type": "boolean" }, "IsActive": { "description": "Indicates whether the rental owner is active within the Buildium platform.", "type": "boolean" }, "FirstName": { "description": "First name of the rental owner. Empty if `IsCompany` is `true`.", "type": "string" }, "LastName": { "description": "Last name of the rental owner. Empty if `IsCompany` is `true`.", "type": "string" }, "PhoneNumbers": { "description": "Phone numbers associated with the rental owner.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "Email": { "description": "Email of the rental owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the rental owner.", "type": "string" }, "Comment": { "description": "Comments about the rental owner.", "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "ManagementAgreementStartDate": { "format": "date", "description": "Start date of the management agreement with the rental owner. Null if value is not set.", "type": "string" }, "ManagementAgreementEndDate": { "format": "date", "description": "End date of the management agreement with the rental owner. Null if value is not set.", "type": "string" }, "CompanyName": { "description": "Company name of the rental owner. Empty if `IsCompany` is `false`.", "type": "string" }, "PropertyIds": { "description": "A list of rental property ID's associated with this rental owner.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "TaxInformation": { "$ref": "#/components/schemas/RentalOwnerTaxInformationMessage" } } }, "RentalOwnerPostMessage": { "description": "This is an object that represents a rental property owner.", "required": [ "IsCompany", "Address", "PropertyIds" ], "type": "object", "properties": { "FirstName": { "description": "First name of the rental owner. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the rental owner. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "IsCompany": { "description": "Indicates whether the rental owner should be considered a company or person.", "type": "boolean" }, "CompanyName": { "description": "Company name of the rental owner. Required if `IsCompany` is `true`. The value cannot exceed 127 characters.", "type": "string" }, "DateOfBirth": { "format": "date", "description": "Date of birth of the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "ManagementAgreementStartDate": { "format": "date", "description": "Start date of the management agreement with the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "ManagementAgreementEndDate": { "format": "date", "description": "End date of the management agreement with the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Email": { "description": "Email of the rental owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the rental owner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "Comment": { "description": "Comments about the rental owner. The comments cannot exceed 65,535 characters.", "type": "string" }, "PropertyIds": { "description": "A list of rental property ID's to associate with this rental owner. At least one property ID must be provided.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "TaxInformation": { "$ref": "#/components/schemas/TaxInformationPostMessage" } } }, "RentalOwnerPutMessage": { "description": "This is an object that represents a rental property owner.", "required": [ "IsCompany", "Address", "PropertyIds" ], "type": "object", "properties": { "FirstName": { "description": "First name of the rental owner. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the rental owner. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "IsCompany": { "description": "Indicates whether the rental owner should be considered a company or person.", "type": "boolean" }, "CompanyName": { "description": "Company name of the rental owner. Required if `IsCompany` is `true`. The value cannot exceed 127 characters.", "type": "string" }, "DateOfBirth": { "format": "date", "description": "Date of birth of the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "ManagementAgreementStartDate": { "format": "date", "description": "Start date of the management agreement with the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "ManagementAgreementEndDate": { "format": "date", "description": "End date of the management agreement with the rental owner. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Email": { "description": "Email of the rental owner.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the rental owner.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "Comment": { "description": "Comments about the rental owner. The comments cannot exceed 65,535 characters.", "type": "string" }, "PropertyIds": { "description": "A list of rental property ID's to associate with this rental owner. At least one property ID must be provided.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "RentalOwnerRequestTaskMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Request unique identifier.", "type": "integer" }, "Category": { "$ref": "#/components/schemas/TaskCategoryResponseMessage" }, "Title": { "description": "Request title.", "type": "string" }, "Description": { "description": "Request description.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the request.", "type": "integer" }, "RequestedByUserEntity": { "$ref": "#/components/schemas/RequestedByUserEntityMessage" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "Date and time the request was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "Date and time the request was last updated.", "type": "string" } } }, "RentalOwnerRequestTaskPostMessage": { "required": [ "Title", "TaskStatus", "Priority", "RequestedByRentalOwnerId" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Request description. The description can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "RequestedByRentalOwnerId": { "format": "int32", "description": "The unique identifier of the rental owner that submitted the request.", "type": "integer" } } }, "RentalOwnerRequestTaskPutMessage": { "required": [ "Title", "TaskStatus", "Priority" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Message": { "description": "Description of the request update. The message can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" } } }, "RentalOwnerRequestTaskSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "UnitId": { "format": "int32", "description": "Filters results to any task associated with the unit identifier.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any tasks with the specified category identifier.", "type": "integer" }, "Priorities": { "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "type": "integer" }, "TaskTitle": { "description": "Filters results to any task whose title *contains* the specified value.", "type": "string" } } }, "RentalOwnersSearchMessage": { "type": "object", "properties": { "PropertyIds": { "description": "Filters results to any lease whose unit belongs to the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "Status": { "description": "Filters results by the status of the user. If no status is specified both `active` and `inactive` users will be returned.", "enum": [ "Inactive", "Active" ], "type": "string" }, "AgreementDaysRemaining": { "format": "int32", "description": "Filters results by the days remaining on their lease agreement.", "type": "integer" }, "OwnerName": { "description": "Filters results to any owner whose name *contains* the specified value.", "type": "string" }, "Phone": { "description": "Filters results to any owner who has a phone number that *contains* the specified value.", "type": "string" }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any rental owners that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any rental owners that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "RentalOwnerTaxInformationMessage": { "description": "Rental owner tax information.", "type": "object", "properties": { "TaxPayerIdType": { "description": "Indicates the type of tax payer id being specified in the request.", "enum": [ "SSN", "EIN" ], "type": "string" }, "TaxPayerId": { "description": "The tax payer identifier.", "type": "string" }, "TaxPayerName1": { "description": "Tax payer name line 1.", "type": "string" }, "TaxPayerName2": { "description": "Tax payer name line 2.", "type": "string" }, "IncludeIn1099": { "description": "Indicates whether the rental owner should be included in 1099 form generation.", "type": "boolean" }, "Address": { "$ref": "#/components/schemas/AddressMessage" } } }, "RentalPreferredVendorMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Preferred vendor unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the preferred vendor.", "type": "string" }, "LastName": { "description": "Last name of the preferred vendor.", "type": "string" }, "CompanyName": { "description": "Company name of the preferred vendor.", "type": "string" }, "PrimaryEmail": { "description": "Primary email for the preferred vendor.", "type": "string" }, "AlternateEmail": { "description": "Alternate email for the preferred vendor.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers of the preferred vendor.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "Website": { "description": "Website of the preferred vendor.", "type": "string" }, "IsCompany": { "description": "Indicates whether the preferred vendor is a company.", "type": "boolean" } } }, "RentalPreferredVendorPutMessage": { "required": [ "VendorIds" ], "type": "object", "properties": { "VendorIds": { "description": "A list of vendor identifiers that will be assigned as preferred vendors to the specified rental property. The submitted list of identifiers will overwrite any existing preferred vendors. Leaving the array empty will remove all vendors from the rental property.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "RentalPropertyPostMessage": { "required": [ "Name", "Address", "RentalSubType", "OperatingBankAccountId" ], "type": "object", "properties": { "Name": { "description": "Rental property name. The value cannot exceed 127 characters.", "type": "string" }, "StructureDescription": { "description": "Description of the rental property building. The description cannot exceed 65,535 characters.", "type": "string" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "RentalSubType": { "description": "Subtype of the rental property.", "enum": [ "CondoTownhome", "MultiFamily", "SingleFamily", "Industrial", "Office", "Retail", "ShoppingCenter", "Storage", "ParkingSpace" ], "type": "string" }, "RentalOwnerIds": { "description": "List of existing rental owner ID's that are owners of this property.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "OperatingBankAccountId": { "format": "int32", "description": "The primary bank account that a rental property uses for its income and expenses.", "type": "integer" }, "PropertyManagerId": { "format": "int32", "description": "Indicates the staff member identifier that acts as the property manager for this rental property. Note, the staff member must have permissions to this rental to be assigned as the property manager.\r\nSet this field to null if you don't want to assign a staff member to the rental property.", "type": "integer" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that isn't disbursed in an owner draw.", "type": "number" }, "YearBuilt": { "format": "int32", "description": "Indicates the year the rental property was built. If provided this value must be a four digit integer between 1000 and the current year.", "type": "integer" }, "Units": { "description": "Units of the rental property. If no values are provided, a default unit will be created for the property. The number of units cannot exceed 100. If you need to create more than 100 units for the property, use the Create a unit endpoint to create the additional units once the property has been created.", "type": "array", "items": { "$ref": "#/components/schemas/RentalPropertyUnitPostMessage" } } } }, "RentalPropertyPutMessage": { "required": [ "Name", "Address", "RentalSubType", "OperatingBankAccountId" ], "type": "object", "properties": { "Name": { "description": "Rental property name. The value cannot exceed 127 characters.", "type": "string" }, "StructureDescription": { "description": "Description of the rental property building. The description cannot exceed 65,535 characters.", "type": "string" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "RentalSubType": { "description": "Subtype of the rental property", "enum": [ "CondoTownhome", "MultiFamily", "SingleFamily", "Industrial", "Office", "Retail", "ShoppingCenter", "Storage", "ParkingSpace" ], "type": "string" }, "OperatingBankAccountId": { "format": "int32", "description": "The primary bank account that an rental property uses for its income and expenses.", "type": "integer" }, "PropertyManagerId": { "format": "int32", "description": "Indicates the staff member identifier that acts as the property manager for this rental property. Note, the staff member must have permissions to this rental to be assigned as the property manager.\r\nSet this field to null if you don't want to assign a staff member to the rental property.", "type": "integer" }, "Reserve": { "format": "double", "description": "A property reserve is cash that a property manager keeps on hand in case of unexpected expenses. It is available cash that isn't disbursed in an owner draw.", "type": "number" }, "YearBuilt": { "format": "int32", "description": "Indicates the year the rental property was built. If provided this value must be a four digit integer between 1000 and the current year.", "type": "integer" } } }, "RentalPropertyUnitPostMessage": { "required": [ "UnitNumber", "Address" ], "type": "object", "properties": { "UnitNumber": { "description": "Unit number. Must be unique within the rental property and cannot exceed 30 characters.", "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" }, "MarketRent": { "format": "double", "description": "Market rent of the unit. This value is separate from the lease rent and is typically used for rental listings.", "type": "number" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "Description": { "description": "Description of the unit. The description cannot exceed 65,535 characters.", "type": "string" } } }, "RentalSearchMessage": { "type": "object", "properties": { "Location": { "description": "Filters results to only rental properties whose city or state *contains* the specified value.", "type": "string" }, "Types": { "description": "Filters results by the rental type. If no type is provided all types will be returned.", "type": "array", "items": { "enum": [ "Residential", "Commercial" ], "type": "string" } }, "SubTypes": { "description": "Filters results by the sub type of the rental property. If no sub type is specified all sub types will be returned.", "type": "array", "items": { "enum": [ "CondoTownhome", "MultiFamily", "SingleFamily", "Industrial", "Office", "Retail", "ShoppingCenter", "Storage", "ParkingSpace" ], "type": "string" } }, "Status": { "description": "Filters results by the status of the rental property. If no status is specified both `active` and `inactive` rental properties will be returned.", "enum": [ "Active", "InActive" ], "type": "string" }, "RentalOwnerIds": { "description": "Filters results to only rental properties whose RentalOwnerId matches the specified Id.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "PropertyIds": { "description": "Filters results to only rental properties units whose Rental matches the specified Id.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any rental properties that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any rental properties that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "RentalTenantPostMessage": { "required": [ "LeaseId", "FirstName", "LastName", "Address" ], "type": "object", "properties": { "LeaseId": { "format": "int32", "description": "Lease ID to associate the tenant with.", "type": "integer" }, "FirstName": { "description": "First name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "Email": { "description": "Email of the tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the tenant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date of birth for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Comment": { "description": "Comments about the tenant. The value cannot exceed 65,535 characters.", "type": "string" }, "TaxId": { "description": "Tax identifier of the tenant. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MailingPreference": { "description": "Mailing preference for the tenant. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" } } }, "RentalTenantPutMessage": { "required": [ "FirstName", "LastName", "Address" ], "type": "object", "properties": { "FirstName": { "description": "First name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "Email": { "description": "Email of the tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the tenant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date of birth for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Comment": { "description": "Comments about the tenant. The value cannot exceed 65,535 characters.", "type": "string" }, "TaxId": { "description": "Tax identifier of the tenant. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MailingPreference": { "description": "Mailing preference for the tenant. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" } } }, "RentalTenantRenewalPostMessage": { "required": [ "FirstName", "LastName", "Address" ], "type": "object", "properties": { "FirstName": { "description": "First name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the tenant. The value cannot exceed 127 characters.", "type": "string" }, "Email": { "description": "Email of the tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the tenant.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "DateOfBirth": { "format": "date", "description": "Date of birth for the tenant. Must be formatted as `YYYY-MM-DD`.", "type": "string" }, "Comment": { "description": "Comments about the tenant. The value cannot exceed 65,535 characters.", "type": "string" }, "TaxId": { "description": "Tax identifier of the tenant. Valid formats are: `12-1234567`, `123-12-1234`, `123456789`", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/SaveEmergencyContactMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/SaveAddressMessage" }, "MailingPreference": { "description": "Mailing preference for the tenant. If an alternate address exists and this value is not provided then the primary address will be set as the preferred address.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" } } }, "RentalUnitFeaturesMessage": { "description": "Rental unit amenities.", "type": "object", "properties": { "Features": { "description": "A list of unit amenities.", "type": "array", "items": { "enum": [ "CableReady", "Microwave", "HardwoodFloors", "HighSpeedInternet", "AirConditioning", "Refrigerator", "Dishwasher", "WalkinClosets", "BalconyOrDeckOrPatio", "GarageParking", "Carport", "FencedYard", "LaundryRoomOrHookups", "Fireplace", "CableReadyCommercial", "HighSpeedInternetCommercial", "AirConditioningCommercial", "Heating", "OvenOrRange", "HeatElectric", "HeatGas", "HeatOil", "PetsAllowed", "Balcony", "PrivateBalcony", "PrivatePatio", "Dryer", "Heat", "WD_Hookup", "Washer", "AdditionalStorage", "Alarm", "Carpet", "CeilingFan", "ControlledAccess", "Courtyard", "Disposal", "DoubleSinkVanity", "FramedMirrors", "Furnished", "Handrails", "IndividualClimateControl", "IslandKitchen", "LinenCloset", "Pantry", "Satellite", "Skylight", "TileFlooring", "VaultedCeiling", "View", "VinylFlooring", "WheelChair", "WindowCoverings" ], "type": "string" } } } }, "RentalUnitFeaturesPutMessage": { "type": "object", "properties": { "Features": { "description": "A list of unit amenities. Any existing amenities associated with the unit that are not submitted in the request will be removed from the unit.", "type": "array", "items": { "enum": [ "CableReady", "Microwave", "HardwoodFloors", "HighSpeedInternet", "AirConditioning", "Refrigerator", "Dishwasher", "WalkinClosets", "BalconyOrDeckOrPatio", "GarageParking", "Carport", "FencedYard", "LaundryRoomOrHookups", "Fireplace", "CableReadyCommercial", "HighSpeedInternetCommercial", "AirConditioningCommercial", "Heating", "OvenOrRange", "HeatElectric", "HeatGas", "HeatOil", "PetsAllowed", "Balcony", "PrivateBalcony", "PrivatePatio", "Dryer", "Heat", "WD_Hookup", "Washer", "AdditionalStorage", "Alarm", "Carpet", "CeilingFan", "ControlledAccess", "Courtyard", "Disposal", "DoubleSinkVanity", "FramedMirrors", "Furnished", "Handrails", "IndividualClimateControl", "IslandKitchen", "LinenCloset", "Pantry", "Satellite", "Skylight", "TileFlooring", "VaultedCeiling", "View", "VinylFlooring", "WheelChair", "WindowCoverings" ], "type": "string" } } } }, "RentalUnitImageMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental unit image unique identifier.", "type": "integer" }, "Description": { "description": "Description of the image.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Provider": { "description": "The provider for the image. If an external provider is not used to host the image, this will be set to `None`.", "enum": [ "None", "YouTube", "Vimeo" ], "type": "string" }, "ShowInListing": { "description": "Indicates whether the image will be shown in listings for this unit.", "type": "boolean" } } }, "RentalUnitImagePutMessage": { "required": [ "ShowInListing" ], "type": "object", "properties": { "Description": { "description": "Description of the image. The description cannot exceed 100 characters.", "type": "string" }, "ShowInListing": { "description": "Indicates whether the image will be shown in listings for this unit.", "type": "boolean" } } }, "RentalUnitMessage": { "description": "This object represents a rental property unit.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Rental unit unique identifier.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the unit belongs to.", "type": "integer" }, "BuildingName": { "description": "Building name that the unit belongs to.", "type": "string" }, "UnitNumber": { "description": "Unit number.", "type": "string" }, "Description": { "description": "Description of the unit.", "type": "string" }, "MarketRent": { "format": "double", "description": "Market rent of the unit. This value is separate from the lease rent and is typically used for rental listings. Null if no value is set.", "type": "number" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit. Null if no value is set.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit. Null if no value is set.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit. Null if no value is set.", "type": "integer" }, "IsUnitListed": { "description": "Whether the unit is currently listed for rent.\r\n \r\nNote: this value is transient and determined at query time based on whether an active listing exists for the unit. Because this value is not persisted in the database, changes to value are not reflected in the last updated date for the unit.", "type": "boolean" }, "IsUnitOccupied": { "description": "Whether the unit is currently being rented by a tenent.\r\n \r\nNote: this value is transient and determined at query time based on whether an active lease exists for the unit. Because this value is not persisted in the database, changes to value are not reflected in the last updated date for the unit.", "type": "boolean" } } }, "RentalUnitPutMessage": { "required": [ "UnitNumber", "Address" ], "type": "object", "properties": { "UnitNumber": { "description": "Unit number. Must be unique within the rental property and cannot exceed 30 characters.", "type": "string" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" }, "MarketRent": { "format": "double", "description": "Market rent of the unit. This value is separate from the lease rent and is typically used for rental listings.", "type": "number" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "Description": { "description": "Description of the unit. The description cannot exceed 65,535 characters.", "type": "string" } } }, "RentalUnitSearchMessage": { "type": "object", "properties": { "PropertyIds": { "description": "Filters results to rental units that belong to the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any rental units that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any rental units that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "RentalUnitsPostMessage": { "required": [ "UnitNumber", "PropertyId", "Address" ], "type": "object", "properties": { "UnitNumber": { "description": "Unit number. Must be unique within the rental property and cannot exceed 30 characters.", "type": "string" }, "PropertyId": { "format": "int32", "description": "Rental property unique identifier that the unit belongs to.", "type": "integer" }, "UnitSize": { "format": "int32", "description": "Size of the unit.", "type": "integer" }, "MarketRent": { "format": "double", "description": "Market rent of the unit. This value is separate from the lease rent and is typically used for rental listings.", "type": "number" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "UnitBedrooms": { "description": "Number of bedrooms in the unit.", "enum": [ "NotSet", "Studio", "OneBed", "TwoBed", "ThreeBed", "FourBed", "FiveBed", "SixBed", "SevenBed", "EightBed", "NineBedPlus" ], "type": "string" }, "UnitBathrooms": { "description": "Number of bathrooms in the unit.", "enum": [ "NotSet", "OneBath", "OnePointFiveBath", "TwoBath", "TwoPointFiveBath", "ThreeBath", "FourBath", "FiveBath", "FivePlusBath", "ThreePointFiveBath", "FourPointFiveBath" ], "type": "string" }, "Description": { "description": "Description of the unit. The description cannot exceed 65,535 characters.", "type": "string" } } }, "RentersInsurancePolicyMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Renters insurance policy unique identifier.", "type": "integer" }, "InsuranceCompany": { "description": "The name of the insurance company that issued the policy.", "type": "string" }, "CarrierType": { "description": "The carrier type for the policy.", "enum": [ "Other", "MSI" ], "type": "string" }, "PolicyIdentifier": { "description": "The policy identifier.", "type": "string" }, "EffectiveDate": { "format": "date", "description": "The date that the policy becomes effective.", "type": "string" }, "ExpirationDate": { "format": "date", "description": "The date that the policy expires.", "type": "string" }, "CancellationDate": { "format": "date", "description": "The cancellation date of the policy. This only applies to policies with a `CarrierType` of `MSI`, and is independent of `ExpirationDate`.", "type": "string" }, "InsuredTenants": { "description": "A collection of tenants associated with this policy.", "type": "array", "items": { "$ref": "#/components/schemas/InsuredTenantMessage" } } } }, "RequestedByUserEntityMessage": { "description": "Entity information for the user that submitted the task request.", "type": "object", "properties": { "Type": { "description": "Entity type.", "enum": [ "ContactRequestor", "RentalOwner", "RentalTenant", "AssociationOwner" ], "type": "string" }, "Id": { "format": "int32", "description": "Entity identifier.", "type": "integer" }, "FirstName": { "description": "First name.", "type": "string" }, "LastName": { "description": "Last name.", "type": "string" }, "IsCompany": { "description": "Indicates whether entity is a company.", "type": "boolean" }, "Href": { "description": "A link to the entity resource.", "type": "string" } } }, "ResidentCenterUserMessage": { "type": "object", "properties": { "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "User": { "$ref": "#/components/schemas/ResidentCenterUserReferenceMessage" }, "ResidentCenterUserStatus": { "description": "Resident center status for the user.", "enum": [ "AccountExistsButNoEmailSent", "PasswordSent", "EmailFailed", "SignedIn", "Blocked" ], "type": "string" }, "IsAutoPayEnabled": { "description": "Indicates if the user has an automatic payment scheduled for the future.", "type": "boolean" } } }, "ResidentCenterUserReferenceMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Resident center user unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the resident center user.", "type": "string" }, "LastName": { "description": "Last name of the resident center user.", "type": "string" }, "UserType": { "description": "Indicates if the resident center user is a tenant or association owner", "enum": [ "Tenant", "AssociationOwner" ], "type": "string" }, "Href": { "description": "A link to the user resource.", "type": "string" } } }, "ResidentCenterUserSearchMessage": { "type": "object", "properties": { "UnitAgreementIds": { "description": "Filters results to any resident center user who is associated with the specified lease and/or association ownership account identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UserIds": { "description": "Filters results to any resident center user with the specified tenant and/or association owner identifiers.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UserTypes": { "description": "Filters results to any resident center user with the specified types.", "type": "array", "items": { "enum": [ "Tenant", "AssociationOwner" ], "type": "string" } }, "ResidentCenterUserStatuses": { "description": "Filters results to any resident center user with the specified resident center user statuses.", "type": "array", "items": { "enum": [ "AccountExistsButNoEmailSent", "PasswordSent", "EmailFailed", "SignedIn", "Blocked" ], "type": "string" } }, "IsAutoPayEnabled": { "description": "If true, filters results to any resident center users who have automatic payments scheduled for the future. If false, filters results to any resident center users\r\nwho do not have automatic payments scheduled for the future. If not provided, will not filter results based on automatic payments.", "type": "boolean" } } }, "ResidentRequestTaskMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Request unique identifier.", "type": "integer" }, "Category": { "$ref": "#/components/schemas/TaskCategoryResponseMessage" }, "Title": { "description": "Request title.", "type": "string" }, "Description": { "description": "Request description.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the request.", "type": "integer" }, "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "RequestedByUserEntity": { "$ref": "#/components/schemas/RequestedByUserEntityMessage" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "The date and time the request was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the request was last updated.", "type": "string" }, "Appliance": { "$ref": "#/components/schemas/ApplianceMessage" }, "IsEntryPermittedByResident": { "description": "Indicates whether the resident has permitted entry. A null value represents no response was provided from the resident.", "type": "boolean" }, "DoesResidentHavePets": { "description": "Indicates whether the resident has pets. A null value represents no response was provided from the resident.", "type": "boolean" }, "ResidentEntryNotes": { "description": "Notes provided by the resident specific to entering the premises.", "type": "string" } } }, "ResidentRequestTaskPostMessage": { "required": [ "Title", "UnitAgreementId", "RequestedByEntityId", "TaskStatus", "Priority" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Request description. The description can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "UnitAgreementId": { "format": "int32", "description": "The unique identifier of the unit agreement associated with the request.", "type": "integer" }, "RequestedByEntityId": { "format": "int32", "description": "The unique identifier of the resident that submitted the request.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type. If not provided, assignment rules in the resident center settings (if configured) will be used for assignment.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "IsEntryPermittedByResident": { "description": "Indicates whether the resident has explicitly granted permission to enter the unit. Set this value to null if the resident has not provided a response.", "type": "boolean" }, "DoesResidentHavePets": { "description": "Indicates whether the resident has pets. Set this value to null if the resident has not provided a response.", "type": "boolean" }, "ResidentEntryNotes": { "description": "Notes provided by the resident specific to entering the premises. The value cannot exceed 65535 characters.", "type": "string" }, "ShareWithRentalOwners": { "description": "Indicates whether the request is shared with rental owners (applies to requests for rentals only)", "type": "boolean" }, "ShareWithBoardMembers": { "description": "Indicates whether the request is shared with board members (applies to requests for associations only)", "type": "boolean" } } }, "ResidentRequestTaskPutMessage": { "required": [ "Title", "TaskStatus", "Priority" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Message": { "description": "Description of the request update. The message can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" } } }, "ResidentRequestTaskSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "UnitId": { "format": "int32", "description": "Filters results to any task associated with the unit identifier.", "type": "integer" }, "UnitAgreementId": { "format": "int32", "description": "Filters results to any task associated with the unit agreement identifier specified.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any tasks with the specified category identifier.", "type": "integer" }, "Priorities": { "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "type": "integer" }, "TaskTitle": { "description": "Filters results to any task whose title *contains* the specified value.", "type": "string" } } }, "RetailCashPropertyMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "The property unique identifier.", "type": "integer" }, "Name": { "description": "The property name.", "type": "string" }, "Type": { "description": "The property type.", "enum": [ "Association", "Rental" ], "type": "string" }, "Href": { "description": "A link to the property entity resource.", "type": "string" } } }, "RetailCashUnitMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Unit unique identifier.", "type": "integer" }, "UnitNumber": { "description": "Unit number.", "type": "string" }, "Href": { "description": "A link to the resource endpoint associated with the unit.", "type": "string" } } }, "RetailCashUserDataMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "FirstName": { "description": "User first name.", "type": "string" }, "LastName": { "description": "User last name.", "type": "string" }, "Email": { "description": "User email address.", "type": "string" }, "Phone": { "description": "User phone number.", "type": "string" }, "UserType": { "description": "User type.", "enum": [ "Tenant", "AssociationOwner" ], "type": "string" }, "Href": { "description": "A link to the resource endpoint associated with the user.", "type": "string" } } }, "RetailCashUserMessage": { "type": "object", "properties": { "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "User": { "$ref": "#/components/schemas/RetailCashUserDataMessage" }, "Property": { "$ref": "#/components/schemas/RetailCashPropertyMessage" }, "Unit": { "$ref": "#/components/schemas/RetailCashUnitMessage" }, "IsAccountCreated": { "description": "Whether the user has a retail cash account created.", "type": "boolean" }, "IsEvictionPending": { "description": "Whether the unit agreement associated with the retail cash user has a pending eviction.", "type": "boolean" }, "IsEnabled": { "description": "Whether retail cash is enabled for the user.", "type": "boolean" } } }, "RetailCashUserPutMessage": { "required": [ "IsEnabled" ], "type": "object", "properties": { "IsEnabled": { "description": "Whether retail cash is enabled for the user. If no retail cash account exists for the user, enabling will create one for the user. You cannot disable a user who does not have an account yet.", "type": "boolean" } } }, "RetailCashUsersSearchMessage": { "type": "object", "properties": { "EntityId": { "format": "int32", "description": "Filters results to any users associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is provided.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "Statuses": { "description": "Filters results to any users whose lease is in one of the provided statuses.", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "Name": { "description": "Filters results to any users whose name *contains* the specified value.", "type": "string" }, "UnitAddress": { "description": "Filters results to any users whose unit address *contains* the specified value.", "type": "string" }, "IsAccountCreated": { "description": "Filters results to any users whose retail cash account is created.", "type": "boolean" } } }, "SafeWaitHandle": { "type": "object", "properties": { "IsInvalid": { "type": "boolean" }, "IsClosed": { "type": "boolean" } } }, "SaveAddressMessage": { "description": "Address.", "required": [ "AddressLine1", "Country" ], "type": "object", "properties": { "AddressLine1": { "description": "Address line 1 (e.g., street, PO Box, or company name). This value cannot exceed 100 characters.", "type": "string" }, "AddressLine2": { "description": "Address line 2 (e.g., apartment, suite, unit, or building). This value cannot exceed 100 characters.", "type": "string" }, "AddressLine3": { "description": "Address line 3. This value cannot exceed 100 characters.", "type": "string" }, "City": { "description": "City, district, suburb, town, or village. This value cannot exceed 100 characters.", "type": "string" }, "State": { "description": "State, county, province, or region. When `Country` is set to `UnitedStates` this value must be a valid state name or abbreviation. If the value is `Canada` this value must be a valid Canadian province. For all other countries this field is optional and not validated.", "type": "string" }, "PostalCode": { "description": "ZIP or postal code.", "type": "string" }, "Country": { "description": "Country. Must be a valid `Country` enumeration value.", "enum": [ "UnitedStates", "Afghanistan", "Akrotiri", "Albania", "Algeria", "AmericanSamoa", "Andorra", "Angola", "Anguilla", "Antarctica", "AntiguaandBarbuda", "Argentina", "Armenia", "Aruba", "AshmoreandCartierIslands", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "BassasdaIndia", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "BosniaandHerzegovina", "Botswana", "BouvetIsland", "Brazil", "BritishIndianOceanTerritory", "BritishVirginIslands", "Brunei", "Bulgaria", "BurkinaFaso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "CapeVerde", "CaymanIslands", "CentralAfricanRepublic", "Chad", "Chile", "China", "ChristmasIsland", "ClippertonIsland", "CocosIslands", "Colombia", "Comoros", "DemocraticRepublicOfTheCongo", "RepublicOfTheCongo", "CookIslands", "CoralSeaIslands", "CostaRica", "CotedIvoire", "Croatia", "Cuba", "Cyprus", "CzechRepublic", "Denmark", "Dhekelia", "Djibouti", "Dominica", "DominicanRepublic", "Ecuador", "Egypt", "ElSalvador", "EquatorialGuinea", "Eritrea", "Estonia", "Ethiopia", "EuropaIsland", "FalklandIslands", "FaroeIslands", "Fiji", "Finland", "France", "FrenchGuiana", "FrenchPolynesia", "FrenchSouthernandAntarcticLands", "Gabon", "Gambia", "GazaStrip", "Georgia", "Germany", "Ghana", "Gibraltar", "GloriosoIslands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "GuineaBissau", "Guyana", "Haiti", "HeardIslandandMcDonaldIslands", "VaticanCity", "Honduras", "HongKong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "IsleofMan", "Israel", "Italy", "Jamaica", "JanMayen", "Japan", "Jersey", "Jordan", "JuandeNovaIsland", "Kazakhstan", "Kenya", "Kiribati", "NorthKorea", "SouthKorea", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "MarshallIslands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "NavassaIsland", "Nepal", "Netherlands", "NetherlandsAntilles", "NewCaledonia", "NewZealand", "Nicaragua", "Niger", "Nigeria", "Niue", "NorfolkIsland", "NorthernMarianaIslands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "PapuaNewGuinea", "ParacelIslands", "Paraguay", "Peru", "Philippines", "PitcairnIslands", "Poland", "Portugal", "PuertoRico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "SaintHelena", "SaintKittsandNevis", "SaintLucia", "SaintPierreandMiquelon", "SaintVincentandtheGrenadines", "Samoa", "SanMarino", "SaoTomeandPrincipe", "SaudiArabia", "Senegal", "SerbiaandMontenegro", "Seychelles", "SierraLeone", "Singapore", "Slovakia", "Slovenia", "SolomonIslands", "Somalia", "SouthAfrica", "SouthGeorgiaandtheSouthSandwichIslands", "Spain", "SpratlyIslands", "SriLanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "TimorLeste", "Togo", "Tokelau", "Tonga", "TrinidadandTobago", "TromelinIsland", "Tunisia", "Turkey", "Turkmenistan", "TurksandCaicosIslands", "Tuvalu", "Uganda", "Ukraine", "UnitedArabEmirates", "UnitedKingdom", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "VirginIslands", "WakeIsland", "WallisandFutuna", "WestBank", "WesternSahara", "Yemen", "Zambia", "Zimbabwe" ], "type": "string" } } }, "SaveEmergencyContactMessage": { "type": "object", "properties": { "Name": { "description": "This is an object that represents an emergency contact.", "type": "string" }, "RelationshipDescription": { "description": "Emergency contact relationship to the person.", "type": "string" }, "Phone": { "description": "Emergency contact phone number", "type": "string" }, "Email": { "description": "Emergency contact email address.", "type": "string" } } }, "TaskCategoryMessage": { "description": "Task category.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Task category unique identifier.", "type": "integer" }, "Name": { "description": "Name of the task category.", "type": "string" }, "IsSystemCategory": { "description": "Indicates whether the category is a system category. Note, system categories can not be edited.", "type": "boolean" }, "SubCategories": { "description": "Subcategories associated with the task category.", "type": "array", "items": { "$ref": "#/components/schemas/TaskSubCategoryMessage" } } } }, "TaskCategoryPutMessage": { "description": "Task category.", "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "Name of the task category.", "type": "string" } } }, "TaskCategoryResponseMessage": { "description": "Task category.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Task category unique identifier.", "type": "integer" }, "Name": { "description": "Name of the task category.", "type": "string" }, "Href": { "description": "A link to the task category resource.", "type": "string" }, "SubCategory": { "$ref": "#/components/schemas/TaskSubCategoryMessage" } } }, "TaskCategorySaveMessage": { "description": "Task category.", "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "Name of the task category.", "type": "string" } } }, "TaskHistoryFileMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "File unique identifier.", "type": "integer" }, "Title": { "description": "The title of the file.", "type": "string" }, "PhysicalFileName": { "description": "Physical name of the file on the server.", "type": "string" }, "Size": { "format": "int64", "description": "Size of the file, in kilobytes.", "type": "integer" }, "ContentType": { "description": "MIME type of the file.", "type": "string" }, "UploadedDateTime": { "format": "date-time", "description": "Date and time the file was uploaded.", "type": "string" } } }, "TaskHistoryFileUploadPostMessage": { "required": [ "FileName" ], "type": "object", "properties": { "FileName": { "description": "Name of file being uploaded. The value can not exceed 255 characters.", "type": "string" } } }, "TaskHistoryMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Task history unique identifier.", "type": "integer" }, "Priority": { "description": "Task priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "TaskStatus": { "description": "Task status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the task.", "type": "integer" }, "DueDate": { "format": "date", "description": "Task due date.", "type": "string" }, "Message": { "description": "Description of the task update.", "type": "string" }, "SharedWith": { "description": "Indicates the who the task update was shared with.", "type": "array", "items": { "enum": [ "Residents", "RentalOwners", "AssociationBoardMembers" ], "type": "string" } }, "FileIds": { "description": "List of file unique identifiers associated with the task history. These identifiers can be used to retrieve the file metadata and/or download the files.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "CreatedDateTIme": { "format": "date-time", "description": "The date and time the task history was created.", "type": "string" }, "CreatedByUser": { "$ref": "#/components/schemas/TaskHistoryUserMessage" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the task was last updated.", "type": "string" }, "LastUpdatedByUser": { "$ref": "#/components/schemas/TaskHistoryUserMessage" } } }, "TaskHistoryPutMessage": { "required": [ "Message" ], "type": "object", "properties": { "Message": { "description": "A message to include with the task update. The value can not exceed 65500 characters.", "type": "string" } } }, "TaskHistoryUserMessage": { "description": "User information.", "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the user.", "type": "string" }, "LastName": { "description": "Last name of the user.", "type": "string" }, "Href": { "description": "A link to the resource endpoint associated with the user.", "type": "string" } } }, "TaskSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "Type": { "description": "Filters results to any task associated with the task type specified.", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ], "type": "string" }, "UnitId": { "format": "int32", "description": "Filters results to any task associated with the unit identifier.", "type": "integer" }, "UnitAgreementId": { "format": "int32", "description": "Filters results to any task associated with the unit agreement identifier specified.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any tasks with the specified category identifier.", "type": "integer" }, "Priorities": { "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "type": "integer" }, "TaskTitle": { "description": "Filters results to any task whose title *contains* the specified value.", "type": "string" } } }, "TaskSubCategoryMessage": { "description": "Task subcategory.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Task subcategory unique identifier.", "type": "integer" }, "Name": { "description": "Name of the task subcategory.", "type": "string" } } }, "TaxInformationPostMessage": { "description": "Tax information.", "type": "object", "properties": { "TaxPayerId": { "description": "The unique identifier of the tax payer. Required if `TaxPayerType` is set. Format the values based on the `TaxPayerIdType` that is specified in the request. `SSN` must be formatted as 123-45-6789. `EIN` must be formatted as 12-3456789.", "type": "string" }, "TaxPayerType": { "description": "The tax payer type. Required if `TaxPayerId` is set.", "enum": [ "SSN", "EIN" ], "type": "string" }, "TaxPayerName1": { "description": "The tax payer name 1. The value cannot exceed 40 characters.", "type": "string" }, "TaxPayerName2": { "description": "The tax payer name 2. The value cannot exceed 40 characters.", "type": "string" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" } } }, "TaxInformationSaveMessage": { "description": "Tax information.", "required": [ "IncludeIn1099" ], "type": "object", "properties": { "TaxPayerId": { "description": "The unique identifier of the tax payer. Required if `TaxPayerType` is set. Format the values based on the `TaxPayerIdType` that is specified in the request. `SSN` must be formatted as 123-45-6789. `EIN` must be formatted as 12-3456789.", "type": "string" }, "TaxPayerType": { "description": "The tax payer type. Required if `TaxPayerId` is set.", "enum": [ "SSN", "EIN" ], "type": "string" }, "TaxPayerName1": { "description": "The tax payer name 1. The value cannot exceed 40 characters.", "type": "string" }, "TaxPayerName2": { "description": "The tax payer name 2. The value cannot exceed 40 characters.", "type": "string" }, "IncludeIn1099": { "description": "Indicates whether the vendor should be included in 1099 form generation.", "type": "boolean" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" } } }, "TenantMessage": { "description": "This object represents a rental property tenant.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Tenant unique identifier.", "type": "integer" }, "FirstName": { "description": "First name of the tenant.", "type": "string" }, "LastName": { "description": "Last name of the tenant.", "type": "string" }, "Email": { "description": "Email for the tenant.", "type": "string" }, "AlternateEmail": { "description": "Alternate email of the tenant.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers for the tenant.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "CreatedDateTime": { "format": "date-time", "description": "Created date of this tenant record.", "type": "string" }, "EmergencyContact": { "$ref": "#/components/schemas/EmergencyContactMessage" }, "DateOfBirth": { "format": "date", "description": "Tenant date of birth.", "type": "string" }, "SMSOptInStatus": { "description": "Indicates the tenants SMS opt in status. Null if no status exists for the tenant.", "enum": [ "NotSet", "RequestSent", "OptedIn", "OptedOut", "Converted" ], "type": "string" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "AlternateAddress": { "$ref": "#/components/schemas/AddressMessage" }, "MailingPreference": { "description": "Mailing preference for the tenant.", "enum": [ "PrimaryAddress", "AlternateAddress" ], "type": "string" }, "Leases": { "description": "List of leases, regardless of status, that the tenant is associated with.", "type": "array", "items": { "$ref": "#/components/schemas/LeaseMessage" } }, "Comment": { "description": "Comments about the tenant.", "type": "string" }, "TaxId": { "description": "TaxId of the tenant.", "type": "string" } } }, "TenantSearchMessage": { "description": "This object represents a filter for a rental tenant search.", "type": "object", "properties": { "BuildingStatuses": { "description": "Filters results by the status of the rental property the tenants are associated with. If no status is specified tenants in either `active` and `inactive` rental properties will be returned.", "type": "array", "items": { "enum": [ "Active", "InActive" ], "type": "string" } }, "LeaseTermStatuses": { "description": "Filters results to any tenant whose lease term matches the specified status. If no status is specified tenants with any lease terms status will be returned.", "type": "array", "items": { "enum": [ "Active", "Past", "Future" ], "type": "string" } }, "UnitNumber": { "description": "Filters results to any tenant whose unit number *contains* the specified value.", "type": "string" }, "Name": { "description": "Filters results to any tenant whose name *contains* the specified value.", "type": "string" }, "Phone": { "description": "Filters results to any tenant whose phone number *contains* the specified value.", "type": "string" }, "Email": { "description": "Filters results to any tenant whose email *contains* the specified value.", "type": "string" }, "PropertyIds": { "description": "Filters results to tenants whose rental unit belongs to the specified set of property ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "RentalOwnerIds": { "description": "Filters results to tenants whose rental unit belongs to a property with a rental owner in the specified set of rental owner ids.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any rental tenants that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any rental tenants that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "ToDoTaskMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Request unique identifier.", "type": "integer" }, "Category": { "$ref": "#/components/schemas/TaskCategoryResponseMessage" }, "Title": { "description": "Request title.", "type": "string" }, "Description": { "description": "Request description.", "type": "string" }, "Property": { "$ref": "#/components/schemas/PropertyMessage" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the request.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date.", "type": "string" }, "CreatedDateTime": { "format": "date-time", "description": "The date and time the request was created.", "type": "string" }, "LastUpdatedDateTime": { "format": "date-time", "description": "The date and time the request was last updated.", "type": "string" } } }, "ToDoTaskPostMessage": { "required": [ "Title", "AssignedToUserId", "TaskStatus", "Priority" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Description": { "description": "Request description. The description can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" } } }, "ToDoTaskPutMessage": { "required": [ "Title", "AssignedToUserId", "TaskStatus", "Priority" ], "type": "object", "properties": { "Title": { "description": "Request title. The title can not exceed 127 characters.", "type": "string" }, "Message": { "description": "Description of the request update. The message can not exceed 65500 characters.", "type": "string" }, "CategoryId": { "format": "int32", "description": "The category identifier to assign the request.", "type": "integer" }, "SubCategoryId": { "format": "int32", "description": "The subcategory identifier to assign the request.", "type": "integer" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" }, "TaskStatus": { "description": "Request status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "Priority": { "description": "Request priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "DueDate": { "format": "date", "description": "Request due date. The date must be formatted as YYYY-MM-DD.", "type": "string" } } }, "ToDoTaskSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any task associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task. If no status is specified, tasks with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "UnitId": { "format": "int32", "description": "Filters results to any task associated with the unit identifier.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any tasks were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any tasks were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any tasks with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any tasks with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any tasks with the specified category identifier.", "type": "integer" }, "Priorities": { "description": "Filters results to any tasks whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any tasks that have been assigned to the specified staff user identifier.", "type": "integer" }, "TaskTitle": { "description": "Filters results to any task whose title *contains* the specified value.", "type": "string" } } }, "UndepositedFundsMessage": { "type": "object", "properties": { "GeneralLedgerTransaction": { "$ref": "#/components/schemas/GLTransactionMessageV1" } } }, "UnitAgreementMessage": { "description": "Unit agreement.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unit agreement unique identifier.", "type": "integer" }, "Type": { "description": "The type of unit agreement.", "enum": [ "NotSet", "Lease", "OwnershipAccount" ], "type": "string" }, "Href": { "description": "A link to the unit agreement resource.", "type": "string" } } }, "UnitEntityMessage": { "description": "An object that represents a unit for a building.", "type": "object", "properties": { "Id": { "format": "int32", "description": "The unit unique identifier", "type": "integer" }, "Href": { "description": "A link to the unit resource.", "type": "string" } } }, "UserMessage": { "description": "Buildium user account.", "type": "object", "properties": { "Id": { "format": "int32", "description": "User unique identifier.", "type": "integer" }, "UserTypes": { "description": "The user type assigned to the user account.", "type": "array", "items": { "enum": [ "Staff", "RentalOwner", "Vendor" ], "type": "string" } }, "IsActive": { "description": "Indicates whether the user account is still active.", "type": "boolean" }, "LastLogin": { "format": "date-time", "description": "Date and time the user last logged into Buildium. This value will be `NULL` if the user has never logged into Buildium.", "type": "string" }, "FirstName": { "description": "First name of the user.", "type": "string" }, "LastName": { "description": "Last name of the user.", "type": "string" }, "CompanyName": { "description": "The company name.", "type": "string" }, "Email": { "description": "Email address of the user.", "type": "string" }, "AlternateEmail": { "description": "Alternate email address of user.", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers for the user.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "UserRole": { "$ref": "#/components/schemas/UserRoleMessage" }, "IsCompany": { "description": "Indicates with the user account represents company versus a person.", "type": "boolean" } } }, "UserRoleMessage": { "description": "User role.", "type": "object", "properties": { "Id": { "format": "int32", "description": "User role unique identifier.", "type": "integer" }, "Name": { "description": "User role name.", "type": "string" }, "Description": { "description": "User role description.", "type": "string" }, "NumberOfUsers": { "format": "int64", "description": "Number of users assigned to this user role.", "type": "integer" } } }, "UserSearchMessage": { "description": "This object represents a filter for a User search.", "type": "object", "properties": { "RoleIds": { "description": "Describes the role of the user.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "UserTypes": { "description": "Describes the user type of the user.", "type": "array", "items": { "enum": [ "Staff", "RentalOwner", "Vendor" ], "type": "string" } }, "Status": { "description": "Filters results by the status of the user. If no status is specified both `active` and `inactive` staff members will be returned.", "enum": [ "Inactive", "Active" ], "type": "string" }, "Name": { "description": "Filters results to only records whose name *contains* the specified value.", "type": "string" }, "Email": { "description": "Filters results to only records whose email *contains* the specified value.", "type": "string" } } }, "VehicleMessage": { "description": "This is an object that represents a vehicle.", "type": "object", "properties": { "Make": { "description": "Make of the vehicle.", "type": "string" }, "Model": { "description": "Model of the vehicle.", "type": "string" }, "LicensePlateNumber": { "description": "License plate number of the vehicle.", "type": "string" }, "ParkingPassNumber": { "description": "Parking pass number assigned to the vehicle.", "type": "string" } } }, "VendorCategoryMessage": { "description": "This object represents a vendor category.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Unique identifier.", "type": "integer" }, "Name": { "description": "Name.", "type": "string" }, "IsSystemCategory": { "description": "Indicates whether the category is a system category.", "type": "boolean" } } }, "VendorCategorySaveMessage": { "required": [ "Name" ], "type": "object", "properties": { "Name": { "description": "The category name.", "type": "string" } } }, "VendorCreditLineItemMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Vendor credit line item unique identifier.", "type": "integer" }, "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the vendor credit.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the vendor credit line item.", "type": "number" }, "Memo": { "description": "Memo for the vendor credit line item.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" } } }, "VendorCreditLineItemPostMessage": { "required": [ "GLAccountId", "Amount", "AccountingEntity" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the vendor credit. The account cannot be a bank account.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the vendor credit line item. Must be between 0.01 and 9999999.99.", "type": "number" }, "Memo": { "description": "Memo for the vendor credit line item. Cannot exceed 240 characters.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" } } }, "VendorCreditMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Vendor credit unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the vendor credit was made.", "type": "string" }, "ReferenceNumber": { "description": "The invoice or reference number that the vendor assigned to the credit.", "type": "string" }, "Memo": { "description": "Memo associated with the vendor credit, if applicable.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the vendor credit.", "type": "array", "items": { "$ref": "#/components/schemas/VendorCreditLineItemMessage" } } } }, "VendorCreditPostMessage": { "required": [ "EntryDate", "Lines" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the vendor credit was made. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "ReferenceNumber": { "description": "The invoice or reference number that the vendor assigned to the credit. The value cannot exceed 40 characters.", "type": "string" }, "Memo": { "description": "Memo associated with the vendor credit, if applicable. The value cannot exceed 40 characters.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the vendor credit. At least one line item is required and cannot exceed 100 line items.", "type": "array", "items": { "$ref": "#/components/schemas/VendorCreditLineItemPostMessage" } } } }, "VendorInsuranceMessage": { "description": "Vendor insurance information.", "type": "object", "properties": { "Provider": { "description": "Insurance provider.", "type": "string" }, "PolicyNumber": { "description": "Insurance policy number.", "type": "string" }, "ExpirationDate": { "format": "date-time", "description": "Expiration date of the insurance policy. Null if no expiration exists.", "type": "string" } } }, "VendorInsuranceSaveMessage": { "description": "Vendor insurance information.", "type": "object", "properties": { "Provider": { "description": "Insurance provider. This value can not exceed 65 characters.", "type": "string" }, "PolicyNumber": { "description": "Insurance policy number. This value can not exceed 65 characters.", "type": "string" }, "ExpirationDate": { "format": "date", "description": "Expiration date of the insurance policy. The date must be formatted as YYYY-MM-DD.", "type": "string" } } }, "VendorMessage": { "description": "This is an object that represents a vendor.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Vendor unique identifier.", "type": "integer" }, "IsCompany": { "description": "Indicates whether the vendor is a company.", "type": "boolean" }, "IsActive": { "description": "Indicates whether the vendor is active within the Buildium platform.", "type": "boolean" }, "FirstName": { "description": "First name of the vendor. Empty if `IsCompany` is `true`.", "type": "string" }, "LastName": { "description": "Last name of the vendor. Empty if `IsCompany` is `true`.", "type": "string" }, "PrimaryEmail": { "description": "Primary email for the vendor.", "type": "string" }, "AlternateEmail": { "description": "Alternate email for the vendor.", "type": "string" }, "CompanyName": { "description": "Company name for the vendor. Empty if `IsCompany` is `false`", "type": "string" }, "PhoneNumbers": { "description": "List of phone numbers for the vendor.", "type": "array", "items": { "$ref": "#/components/schemas/PhoneNumberMessage" } }, "Website": { "description": "Website of the vendor.", "type": "string" }, "Category": { "$ref": "#/components/schemas/LookupMessage" }, "Address": { "$ref": "#/components/schemas/AddressMessage" }, "VendorInsurance": { "$ref": "#/components/schemas/VendorInsuranceMessage" }, "Comments": { "description": "General comments about the vendor.", "type": "string" }, "AccountNumber": { "description": "Vendor account number.", "type": "string" }, "ExpenseGLAccountId": { "format": "int32", "description": "The unique identifier of the default expense general ledger account to associate with the vendor.", "type": "integer" }, "TaxInformation": { "$ref": "#/components/schemas/VendorTaxInformationMessage" } } }, "VendorPostMessage": { "required": [ "IsCompany", "CategoryId" ], "type": "object", "properties": { "FirstName": { "description": "First name of the vendor. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the vendor. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "IsCompany": { "description": "Indicates whether the vendor should be considered a company or person.", "type": "boolean" }, "CompanyName": { "description": "Company name of the vendor. Required if `IsCompany` is `true`. The value cannot exceed 127 characters.", "type": "string" }, "PrimaryEmail": { "description": "Primary email for the vendor.", "type": "string" }, "AlternateEmail": { "description": "Alternate email for the vendor.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "CategoryId": { "format": "int32", "description": "The unique identifier of the vendor category.", "type": "integer" }, "ExpenseGlAccountId": { "format": "int32", "description": "The unique identifier of the default expense general ledger account to associate with the vendor.", "type": "integer" }, "AccountNumber": { "description": "The account number of the vendor. The value cannot exceed 30 characters.", "type": "string" }, "Website": { "description": "The website of the vendor. The value must be a valid URL. For example `http://www.example.com`. The value cannot exceed 100 characters.", "type": "string" }, "VendorInsurance": { "$ref": "#/components/schemas/VendorInsuranceSaveMessage" }, "Comments": { "description": "Comments about the vendor. The value cannot exceed 65,535 characters.", "type": "string" }, "TaxInformation": { "$ref": "#/components/schemas/TaxInformationPostMessage" } } }, "VendorPutMessage": { "required": [ "IsCompany", "CategoryId" ], "type": "object", "properties": { "FirstName": { "description": "First name of the vendor. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "LastName": { "description": "Last name of the vendor. Required if `IsCompany` is `false`. The value cannot exceed 127 characters.", "type": "string" }, "IsCompany": { "description": "Indicates whether the vendor should be considered a company or person.", "type": "boolean" }, "CompanyName": { "description": "Company name of the vendor. Required if `IsCompany` is `true`. The value cannot exceed 127 characters.", "type": "string" }, "PrimaryEmail": { "description": "Primary email for the vendor.", "type": "string" }, "AlternateEmail": { "description": "Alternate email for the vendor.", "type": "string" }, "PhoneNumbers": { "$ref": "#/components/schemas/PhoneNumbersMessage" }, "Address": { "$ref": "#/components/schemas/SaveAddressMessage" }, "CategoryId": { "format": "int32", "description": "The unique identifier of the vendor category.", "type": "integer" }, "ExpenseGlAccountId": { "format": "int32", "description": "The unique identifier of the default expense general ledger account to associate with the vendor.", "type": "integer" }, "AccountNumber": { "description": "The account number of the vendor. The value cannot exceed 30 characters.", "type": "string" }, "Website": { "description": "The website of the vendor. The value must be a valid URL. For example \"http://www.example.com\". The value cannot exceed 100 characters.", "type": "string" }, "VendorInsurance": { "$ref": "#/components/schemas/VendorInsuranceSaveMessage" }, "Comments": { "description": "Comments about the vendor. The value cannot exceed 65,535 characters.", "type": "string" }, "TaxInformation": { "$ref": "#/components/schemas/TaxInformationSaveMessage" } } }, "VendorRefundLineMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Vendor refund line item unique identifier.", "type": "integer" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntityMessage" }, "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the vendor refund.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the vendor refund line item.", "type": "number" }, "Memo": { "description": "Memo for the vendor refund line item.", "type": "string" } } }, "VendorRefundLinePostMessage": { "required": [ "GLAccountId", "Amount", "AccountingEntity" ], "type": "object", "properties": { "GLAccountId": { "format": "int32", "description": "Unique identifier of the general ledger account associated with the vendor refund.", "type": "integer" }, "Amount": { "format": "double", "description": "Amount of the vendor refund line item.", "type": "number" }, "Memo": { "description": "Memo for the vendor refund line item. Memo cannot exceed 215 characters.", "type": "string" }, "AccountingEntity": { "$ref": "#/components/schemas/AccountingEntitySaveMessage" } } }, "VendorRefundMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "EntryDate": { "format": "date", "description": "Date the refund was recorded.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the refund was deposited into.", "type": "integer" }, "PaymentMethod": { "description": "The payment method used for the vendor refund.", "enum": [ "None", "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment", "RetailCash" ], "type": "string" }, "ReferenceNumber": { "description": "Reference number for the vendor refund.", "type": "string" }, "Memo": { "description": "Memo for the vendor refund.", "type": "string" }, "Lines": { "description": "A collection of line items associated with the vendor refund.", "type": "array", "items": { "$ref": "#/components/schemas/VendorRefundLineMessage" } } } }, "VendorRefundPostMessage": { "required": [ "EntryDate", "BankAccountId", "PaymentMethod", "Lines" ], "type": "object", "properties": { "EntryDate": { "format": "date", "description": "Date the vendor refund was made.", "type": "string" }, "BankAccountId": { "format": "int32", "description": "Unique identifier of the bank account that the refund was deposited into.", "type": "integer" }, "PaymentMethod": { "description": "The payment method used for the refund.", "enum": [ "Check", "Cash", "MoneyOrder", "CashierCheck", "DirectDeposit", "CreditCard", "ElectronicPayment" ], "type": "string" }, "ReferenceNumber": { "description": "The invoice or reference number that the vendor assigned to the refund. Reference number cannot exceed 45 characters.", "type": "string" }, "Memo": { "description": "Memo associated with the vendor refund, if applicable. Memo cannot exceed 65 characters", "type": "string" }, "Lines": { "description": "A collection of line items associated with the vendor refund.", "type": "array", "items": { "$ref": "#/components/schemas/VendorRefundLinePostMessage" } } } }, "VendorSearchMessage": { "type": "object", "properties": { "Status": { "description": "Filters results by the status of the vendor. If no status is specified both `active` and `inactive` vendors will be returned.", "enum": [ "Inactive", "Active" ], "type": "string" }, "Email": { "description": "Filters results to any vendor whose email *contains* the specified value.", "type": "string" }, "Website": { "description": "Filters results to any vendor whose website *contains* the specified value.", "type": "string" }, "Name": { "description": "Filters results to any vendor whose name *contains* the specified value.", "type": "string" }, "InsuranceExpiration": { "description": "Filters results to any vendor whose insurance will expire in the specified date range.", "enum": [ "None", "Any", "Expired", "ThirtyDaysOrLess", "SixtyDaysOrLess", "NinetyDaysOrLess" ], "type": "string" }, "Phone": { "description": "Filters results to any vendor who has a phone number that *contains* the specified value.", "type": "string" }, "LastUpdatedFrom": { "format": "date-time", "description": "Filters results to any vendors that were updated on or after the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" }, "LastUpdatedTo": { "format": "date-time", "description": "Filters results to any vendors that were updated on or before the specified date. The value must be in UTC and formatted as YYYY-MM-DDTHH:MM:SSZ.", "type": "string" } } }, "VendorTaxInformationMessage": { "description": "Vendor tax information.", "type": "object", "properties": { "TaxPayerIdType": { "description": "Indicates the type of tax payer id being specified in the request.", "enum": [ "SSN", "EIN" ], "type": "string" }, "TaxPayerId": { "description": "The tax payer identifier.", "type": "string" }, "TaxPayerName1": { "description": "Tax payer name line 1.", "type": "string" }, "TaxPayerName2": { "description": "Tax payer name line 2.", "type": "string" }, "IncludeIn1099": { "description": "Indicates whether the vendor should be included in 1099 form generation.", "type": "boolean" }, "Address": { "$ref": "#/components/schemas/AddressMessage" } } }, "VendorTransactionMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Transaction unique identifier.", "type": "integer" }, "Date": { "format": "date", "description": "Date of the transaction.", "type": "string" }, "TotalAmount": { "format": "double", "description": "Total amount of the transaction.", "type": "number" }, "TransactionType": { "description": "Type of transaction.", "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" }, "ReferenceNumber": { "description": "Reference number for the transaction.", "type": "string" }, "Memo": { "description": "Memo for the transaction.", "type": "string" } } }, "VendorTransactionSearchMessage": { "required": [ "TransactionDateFrom", "TransactionDateTo" ], "type": "object", "properties": { "TransactionDateFrom": { "format": "date", "description": "Filters results to any vendor transaction whose entry date that is greater than or equal to the specified value. The maximum date range is 365 days.", "type": "string" }, "TransactionDateTo": { "format": "date", "description": "Filters results to any vendor transaction whose entry date is less than or equal to the specified value. The maximum date range is 365 days.", "type": "string" }, "TransactionTypes": { "description": "Filters results to any vendor transaction whose vendor transaction type matches the specified status. If no type is specified, vendor transactions with any type will be returned.", "type": "array", "items": { "enum": [ "Bill", "Check", "Charge", "Payment", "Credit", "Refund", "ApplyDeposit", "ElectronicFundsTransfer", "Other", "Deposit", "GeneralJournalEntry", "OwnerContribution", "ReversePayment", "ReverseElectronicFundsTransfer", "VendorCredit", "RentalApplicationFeePayment", "ReverseRentalApplicationFeePayment", "ReverseOwnerContribution", "VendorRefund", "UnreversedPayment", "UnreversedElectronicFundsTransfer", "UnreversedOwnerContribution", "UnreversedRentalApplicationFeePayment" ], "type": "string" } }, "ReferenceNumber": { "description": "Filters results to vendor transaction whose reference number contains the specified value. The reference number cannot exceed 40 characters.", "type": "string" }, "Memo": { "description": "Filters results to vendor transaction whose memo contains the specified value. The memo cannot exceed 40 characters.", "type": "string" } } }, "VideoLinkRequestPostMessage": { "required": [ "VideoUrl", "ShowInListing" ], "type": "object", "properties": { "VideoUrl": { "description": "The URL of the video. Only Youtube and Vimeo URLs are supported. The URL cannot exceed 255 characters.", "type": "string" }, "ShowInListing": { "description": "Indicates whether the video will be shown in the listing.", "type": "boolean" } } }, "WaitHandle": { "type": "object", "properties": { "Handle": { "type": "object" }, "SafeWaitHandle": { "$ref": "#/components/schemas/SafeWaitHandle" } } }, "WorkOrderEntryContactMessage": { "description": "Contact entity for the work order.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Contact entity unique identifier.", "type": "integer" }, "Resources": { "description": "List of contact entity resources.", "type": "array", "items": { "$ref": "#/components/schemas/WorkOrderEntryContactResourceMessage" } } } }, "WorkOrderEntryContactResourceMessage": { "description": "Work order entry contact.", "type": "object", "properties": { "Type": { "description": "Contact entity type.", "enum": [ "RentalTenant", "AssociationOwner", "Staff", "RentalOwner" ], "type": "string" }, "Href": { "description": "Link to the contact resource.", "type": "string" } } }, "WorkOrderLineItemMessage": { "description": "Work order line item.", "type": "object", "properties": { "GlAccountId": { "format": "int32", "description": "General ledger account unique identifier.", "type": "integer" }, "Quantity": { "format": "double", "description": "Line item quantity.", "type": "number" }, "Memo": { "description": "Line item memo.", "type": "string" }, "UnitPrice": { "format": "double", "description": "Line item unit price.", "type": "number" } } }, "WorkOrderLineItemSaveMessage": { "required": [ "Quantity", "UnitPrice" ], "type": "object", "properties": { "GlAccountId": { "format": "int32", "description": "General ledger account unique identifier.", "type": "integer" }, "Quantity": { "format": "double", "description": "Line item quantity.", "type": "number" }, "Memo": { "description": "Line item memo.", "type": "string" }, "UnitPrice": { "format": "double", "description": "Line item unit price.", "type": "number" } } }, "WorkOrderMessage": { "type": "object", "properties": { "Id": { "format": "int32", "description": "Work order unique identifier.", "type": "integer" }, "Task": { "$ref": "#/components/schemas/WorkOrderTaskMessage" }, "WorkDetails": { "description": "Description of the work order.", "type": "string" }, "InvoiceNumber": { "description": "The invoice or reference number that the vendor assigned to the invoice.", "type": "string" }, "ChargeableTo": { "description": "A description of the entity that will be charged for the work.", "type": "string" }, "EntryAllowed": { "description": "Indicates whether entry has been allowed to the unit.", "enum": [ "Unknown", "Yes", "No" ], "type": "string" }, "EntryNotes": { "description": "Notes specific to entering the unit.", "type": "string" }, "VendorId": { "format": "int32", "description": "Vendor unique identifier.", "type": "integer" }, "VendorNotes": { "description": "Notes specific to the vendor.", "type": "string" }, "EntryContact": { "$ref": "#/components/schemas/WorkOrderEntryContactMessage" }, "BillTransactionId": { "format": "int32", "description": "Unique identifier for the bill related to this work order. This field will be `null` if no bill is related to this work order.", "type": "integer" }, "Amount": { "format": "double", "description": "The total amount of the work order.", "type": "number" }, "LineItems": { "description": "A collection of line items associated with the work order.", "type": "array", "items": { "$ref": "#/components/schemas/WorkOrderLineItemMessage" } } } }, "WorkOrderPostMessage": { "required": [ "EntryAllowed", "VendorId" ], "type": "object", "properties": { "WorkDetails": { "description": "Description of the work order. The value cannot exceed 65,535 characters.", "type": "string" }, "InvoiceNumber": { "description": "The invoice or reference number that the vendor assigned to the work order. The value cannot exceed 50 characters.", "type": "string" }, "ChargeableTo": { "description": "A description of the entity that will be charged for the work. The value cannot exceed 100 characters.", "type": "string" }, "EntryAllowed": { "description": "Indicates whether entry has been allowed to the unit.", "enum": [ "Unknown", "Yes", "No" ], "type": "string" }, "EntryNotes": { "description": "Notes specific to entering the unit. The value cannot exceed 65,535 characters.", "type": "string" }, "VendorId": { "format": "int32", "description": "Vendor unique identifier.", "type": "integer" }, "VendorNotes": { "description": "Notes specific to the vendor. The value cannot exceed 65,535 characters.", "type": "string" }, "EntryContactId": { "format": "int32", "description": "Contact user unique identifier. The user type must be one of the following types: `RentalTenant`, `AssociationOwner`, `Staff`, `RentalOwner`.", "type": "integer" }, "LineItems": { "description": "Work order line items.", "type": "array", "items": { "$ref": "#/components/schemas/WorkOrderLineItemSaveMessage" } }, "TaskId": { "format": "int32", "description": "Task unique identifier to associate with the work order.", "type": "integer" }, "Task": { "$ref": "#/components/schemas/WorkOrderTaskPostMessage" } } }, "WorkOrderPutMessage": { "required": [ "EntryAllowed", "VendorId" ], "type": "object", "properties": { "WorkDetails": { "description": "Description of the work order. The value cannot exceed 65,535 characters.", "type": "string" }, "InvoiceNumber": { "description": "The invoice or reference number that the vendor assigned to the invoice. The value cannot exceed 50 characters.", "type": "string" }, "ChargeableTo": { "description": "A description of the entity that will be charged for the work. The value cannot exceed 100 characters.", "type": "string" }, "EntryAllowed": { "description": "Indicates whether entry has been allowed to the unit.", "enum": [ "Unknown", "Yes", "No" ], "type": "string" }, "EntryNotes": { "description": "Notes specific to entering the unit. The value cannot exceed 65,535 characters.", "type": "string" }, "VendorId": { "format": "int32", "description": "Vendor unique identifier.", "type": "integer" }, "VendorNotes": { "description": "Notes specific to the vendor. The value cannot exceed 65,535 characters.", "type": "string" }, "EntryContactId": { "format": "int32", "description": "Contact user unique identifier. The user type must be one of the following types: `RentalTenant`, `AssociationOwner`, `Staff`, `RentalOwner`.", "type": "integer" }, "LineItems": { "description": "Work order line items. Note that all existing work order line items will be removed and replaced with this list of line items.", "type": "array", "items": { "$ref": "#/components/schemas/WorkOrderLineItemSaveMessage" } } } }, "WorkOrderSearchMessage": { "type": "object", "properties": { "EntityType": { "description": "Specifies the type of entity that the `EntityId` field refers to. This field is required if the `EntityId` field is populated.", "enum": [ "Rental", "RentalOwner", "Association" ], "type": "string" }, "EntityId": { "format": "int32", "description": "Filters results to any work order associated with the specified entity id value. The value must be of the type specified in the `EntityType` field.", "type": "integer" }, "Statuses": { "description": "Filters results by the status of the task associated with the work order. If no status is specified, work orders with any status will be returned.", "type": "array", "items": { "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } }, "Type": { "description": "Filters results to any work order with an associated task with the task type specified.", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ], "type": "string" }, "UnitId": { "format": "int32", "description": "Filters results to any work order associated with the unit identifier.", "type": "integer" }, "UnitAgreementId": { "format": "int32", "description": "Filters results to any work order associated with the unit agreement identifier specified.", "type": "integer" }, "LastUpdatedFrom": { "format": "date", "description": "Filters results to any work orders were updated on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "LastUpdatedTo": { "format": "date", "description": "Filters results to any work orders were updated on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateFrom": { "format": "date", "description": "Filters results to any work orders with a due date on or after the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "DueDateTo": { "format": "date", "description": "Filters results to any work orders with a due date on or before the specified date. The value must be formatted as YYYY-MM-DD.", "type": "string" }, "TaskCategoryId": { "format": "int32", "description": "Filters results to any work orders whose priority matches the specified values. If no priority is specified, tasks with any priority will be returned.", "type": "integer" }, "Priorities": { "description": "Filters results to any work orders that have been assigned to the specified staff user identifier.", "type": "array", "items": { "enum": [ "Low", "Normal", "High" ], "type": "string" } }, "AssignedToId": { "format": "int32", "description": "Filters results to any work orders that have been assigned to the specified staff user identifier.", "type": "integer" }, "VendorIds": { "description": "Filters results to any work orders that have been assigned to the specified vendor identifier.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "AmountFrom": { "format": "double", "description": "Filters results to any work orders whose total amounts are equal or greater than the specified amount.", "type": "number" }, "AmountTo": { "format": "double", "description": "Filters results to any work orders whose total amounts are equal or less than the specified amount.", "type": "number" }, "IsBilled": { "description": "Filters results to work orders that have an associated bill.", "type": "boolean" }, "Title": { "description": "Filters results to any work orders whose title *contains* the specified value.", "type": "string" }, "TaskIds": { "description": "Filters results to work orders that have an associated to a task in the specified list.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "WorkOrderTaskMessage": { "description": "Task information related to the work order.", "type": "object", "properties": { "Id": { "format": "int32", "description": "Task unique identifier.", "type": "integer" }, "Type": { "description": "The task type.", "enum": [ "ContactRequest", "ResidentRequest", "Todo", "RentalOwnerRequest" ], "type": "string" }, "UnitId": { "format": "int32", "description": "The unit unique identifier associated with the task.", "type": "integer" }, "UnitAgreement": { "$ref": "#/components/schemas/UnitAgreementMessage" }, "Title": { "description": "Task title.", "type": "string" }, "DueDate": { "format": "date", "description": "Task due date.", "type": "string" }, "Priority": { "description": "Task priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "Status": { "description": "Task status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" } } }, "WorkOrderTaskPostMessage": { "description": "Task information to create and associate with the work order.", "required": [ "Title", "Priority", "Status", "AssignedToUserId" ], "type": "object", "properties": { "Title": { "description": "Task title. The title can not exceed 127 characters.", "type": "string" }, "DueDate": { "format": "date", "description": "Task due date. The date must be formatted as YYYY-MM-DD.", "type": "string" }, "Priority": { "description": "Task priority.", "enum": [ "Low", "Normal", "High" ], "type": "string" }, "Status": { "description": "Task status.", "enum": [ "New", "InProgress", "Completed", "Deferred", "Closed" ], "type": "string" }, "PropertyId": { "format": "int32", "description": "The unique identifier of property associated with the request. The assigned property must be active.", "type": "integer" }, "UnitId": { "format": "int32", "description": "The unique identifier of the unit associated with the request. The unit must be associated with the `PropertyId` specified.", "type": "integer" }, "AssignedToUserId": { "format": "int32", "description": "The unique identifier of the staff user assigned to the request. The user must be a `Staff` user type.", "type": "integer" } } } } }, "security": [ { "clientId": [] }, { "clientSecret": [] } ] }