{
  "opencollection": "1.0.0",
  "info": {
    "name": "Beyond Pricing Public Accounts API",
    "version": "2.0.0"
  },
  "items": [
    {
      "info": {
        "name": "Accounts",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List accounts for a user",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/users/:user_id/accounts/",
            "params": [
              {
                "name": "user_id",
                "value": "",
                "type": "path"
              },
              {
                "name": "page[number]",
                "value": "",
                "type": "query",
                "description": "A page number within the paginated result set."
              },
              {
                "name": "page[size]",
                "value": "",
                "type": "query",
                "description": "Number of results to return per page."
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "client_credentials",
              "accessTokenUrl": "/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Return a paginated list of accounts (channel connections) for the specified user.\n\n## Response Codes\n- **200**: Success\n- **401**: Unauthorized - invalid or missing OAuth2 token\n- **403**: Forbidden - insufficient scope\n- **404**: Not found - user not found"
        },
        {
          "info": {
            "name": "Add an account for a user",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/users/:user_id/accounts/",
            "params": [
              {
                "name": "user_id",
                "value": "",
                "type": "path"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "oauth2",
              "flow": "client_credentials",
              "accessTokenUrl": "/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Add a channel connection (account) for a user.\n\nEach channel requires specific credentials.\n\n## Supported Channels and Required Credentials\n\n| Channel | Required Fields | Optional Fields |\n|---------|-----------------|-----------------|\n| `airbnb` | `email` | `password`, `device_id` |\n| `airbnb_partner` | `access_token` | `refresh_token`, `email` |\n| `avantio` | `provider_id`, `username`, `password` | - |\n| `barefoot_direct` | `account_id` | `web_book_reztypeid` |\n| `beds24` | `account_id` | - |"
        },
        {
          "info": {
            "name": "Get an account for a user",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/users/:user_id/accounts/:account_id/",
            "params": [
              {
                "name": "user_id",
                "value": "",
                "type": "path"
              },
              {
                "name": "account_id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "client_credentials",
              "accessTokenUrl": "/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Retrieve a single account (channel connection) for the specified user.\n\n## Response Codes\n- **200**: Success\n- **401**: Unauthorized - invalid or missing OAuth2 token\n- **403**: Forbidden - insufficient scope\n- **404**: Not found - user or account not found"
        },
        {
          "info": {
            "name": "Delete an account for a user",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/api/v1/users/:user_id/accounts/:account_id/",
            "params": [
              {
                "name": "user_id",
                "value": "",
                "type": "path"
              },
              {
                "name": "account_id",
                "value": "",
                "type": "path"
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "client_credentials",
              "accessTokenUrl": "/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Remove a channel connection (account) for a user. This unregisters webhooks and soft-deletes the account.\n\n## Response Codes\n- **204**: Successfully deleted\n- **401**: Unauthorized - invalid or missing OAuth2 token\n- **403**: Forbidden - insufficient scope\n- **404**: Not found - user or account not found"
        },
        {
          "info": {
            "name": "Refresh an account for a user",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/users/:user_id/accounts/:account_id/refresh/",
            "params": [
              {
                "name": "user_id",
                "value": "",
                "type": "path"
              },
              {
                "name": "account_id",
                "value": "",
                "type": "path"
              },
              {
                "name": "recent_sync_threshold_minutes",
                "value": "",
                "type": "query",
                "description": "Skip listings synced within the last N minutes. Defaults to 60. Set to 0 to disable this optimization and refresh all listings."
              }
            ],
            "auth": {
              "type": "oauth2",
              "flow": "client_credentials",
              "accessTokenUrl": "/o/token/",
              "credentials": {
                "clientId": "{{clientId}}",
                "clientSecret": "{{clientSecret}}"
              }
            }
          },
          "docs": "Queue a full listings and reservations refresh for the specified account.\n\nThis endpoint enqueues an asynchronous `sync_all` job and returns immediately.\n\nUse `recent_sync_threshold_minutes` to control how recently synced listings are skipped. The threshold unit is minutes. When set to `0`, the refresh includes all listings.\n\nIf you have registered a webhook, an `account.refreshed` event is delivered once the listing sync reaches a terminal state, so you do not have to poll. Reservations are ref"
        }
      ]
    }
  ],
  "bundled": true
}