{ "opencollection": "1.0.0", "info": { "name": "Beyond Pricing Public Accounts Listings API", "version": "2.0.0" }, "items": [ { "info": { "name": "Listings", "type": "folder" }, "items": [ { "info": { "name": "List all listings", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/listings/", "params": [ { "name": "sort", "value": "", "type": "query", "description": "[list of fields to sort by](https://jsonapi.org/format/#fetching-sorting)" }, { "name": "filter[owner]", "value": "", "type": "query" }, { "name": "filter[enabled]", "value": "", "type": "query" }, { "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." }, { "name": "include", "value": "", "type": "query", "description": "include query parameter to allow the client to customize which related resources should be returned." }, { "name": "fields[listings]", "value": "", "type": "query", "description": "endpoint return only specific fields in the response on a per-type basis by including a fields[TYPE] query parameter." } ], "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Retrieve a paginated list of all listings for the authenticated application.\n\n**Required scope:** `listings:read`\n\n**Pagination:** Use `page[number]` and `page[size]` query parameters.\n\n**Sorting:** Use `sort` query parameter with field names.\nPrefix with `-` for descending order.\n\n**Filtering:** Use `filter[field]` query parameters.\n\n**Compound documents:** Use `include` query parameter to include related resources." }, { "info": { "name": "Retrieve a listing by ID", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/listings/:listing_id/", "params": [ { "name": "listing_id", "value": "", "type": "path" }, { "name": "include", "value": "", "type": "query", "description": "include query parameter to allow the client to customize which related resources should be returned." }, { "name": "fields[listings]", "value": "", "type": "query", "description": "endpoint return only specific fields in the response on a per-type basis by including a fields[TYPE] query parameter." } ], "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Retrieve detailed information about a specific listing.\n\n**Required scope:** `listings:read`\n\n**Compound documents (sideloading):**\nUse the `include` query parameter to include related resources in a single request.\nThis follows the JSON:API specification for compound documents.\n\nSupported includes:\n- `owner` - The user who owns the listing\n\n**Example:** `GET /api/v1/listings/123/?include=owner`" }, { "info": { "name": "Update listing activation", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/api/v1/listings/:listing_id/activation/", "params": [ { "name": "listing_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Enable or disable price syncing for a listing." }, { "info": { "name": "Get calendar for a listing", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/listings/:listing_id/calendar/", "params": [ { "name": "listing_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." }, { "name": "filter[start-date]", "value": "", "type": "query", "description": "Start date (YYYY-MM-DD). Defaults to today in the listing's timezone." }, { "name": "filter[end-date]", "value": "", "type": "query", "description": "End date (YYYY-MM-DD). Defaults to today + 365 days." }, { "name": "sort", "value": "", "type": "query", "description": "Sort calendar entries by date. Supported values: date, -date. Defaults to date." }, { "name": "fields[calendar-entries]", "value": "", "type": "query", "description": "endpoint return only specific fields in the response on a per-type basis by including a fields[TYPE] query parameter." } ], "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Retrieve the pricing calendar for a specific listing.\n\n**Required scope:** `reservations:read`\n\n**Currency:** Price fields are returned in the owning user's configured\ncurrency.\n\n**Date range:** Use `filter[start-date]` and `filter[end-date]` query parameters\n(YYYY-MM-DD, JSON:API spec). Defaults to today through today + 365 days.\n\n**Sorting:** Use `sort=date` (ascending, default) or `sort=-date`.\n\n**Pagination:** Use `page[number]` and `page[size]` query parameters.\n\n**Sparse fieldsets:** Use `" }, { "info": { "name": "List recommendations for a listing", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/api/v1/listings/:listing_id/recommendations/", "params": [ { "name": "listing_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." }, { "name": "fields[recommendations]", "value": "", "type": "query", "description": "endpoint return only specific fields in the response on a per-type basis by including a fields[TYPE] query parameter." } ], "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Retrieve recommendations for a specific listing.\n\n**Required scope:** `listings:read`\n\nThe listing must belong to a user owned by the authenticated OAuth2\napplication. When no recommendations exist, the endpoint returns an\nempty JSON:API collection." }, { "info": { "name": "Refresh a listing (details and reservations)", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/api/v1/listings/:listing_id/refresh/", "params": [ { "name": "listing_id", "value": "", "type": "path" } ], "auth": { "type": "oauth2", "flow": "client_credentials", "accessTokenUrl": "/o/token/", "credentials": { "clientId": "{{clientId}}", "clientSecret": "{{clientSecret}}" } } }, "docs": "Queue an asynchronous full refresh for the specified listing.\n\nThis endpoint enqueues a `sync_listing` job (listing details and availability) followed by a `sync_reservations` job for the listing's primary channel listing, then recomputes the automatic base price. It returns immediately.\n\n## Response Codes\n- **202**: Listing refresh accepted and queued\n- **401**: Unauthorized - invalid or missing OAuth2 token\n- **403**: Forbidden - insufficient scope\n- **404**: Not found - listing not found or h" } ] } ], "bundled": true }