diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml new file mode 100644 index 00000000000..e56abb63030 --- /dev/null +++ b/.github/workflows/python-package.yml @@ -0,0 +1,40 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python package + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest diff --git a/.vale/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77696e646f77732532306d61636f732532306c696e75782d627269676874677265656e3f7374796c653d666c61742d737175617265.svg b/.vale/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77696e646f77732532306d61636f732532306c696e75782d627269676874677265656e3f7374796c653d666c61742d737175617265.svg new file mode 100644 index 00000000000..87118f5239c --- /dev/null +++ b/.vale/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77696e646f77732532306d61636f732532306c696e75782d627269676874677265656e3f7374796c653d666c61742d737175617265.svg @@ -0,0 +1 @@ +platform: windows macos linuxplatformwindows macos linux \ No newline at end of file diff --git a/.vale/BNB Air Booking MVP - Scope of Work and Proposal.pdf b/.vale/BNB Air Booking MVP - Scope of Work and Proposal.pdf new file mode 100644 index 00000000000..399ba699c5e Binary files /dev/null and b/.vale/BNB Air Booking MVP - Scope of Work and Proposal.pdf differ diff --git a/.vale/Bnbairbooking.txt b/.vale/Bnbairbooking.txt new file mode 100644 index 00000000000..46a8839980c --- /dev/null +++ b/.vale/Bnbairbooking.txt @@ -0,0 +1,89 @@ + + + + + + BnbAirBooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

BnbAirBooking

+

Undercutting the market. The cheapest hotel & vacation rentals worldwide.

+
+ +
+

Find Your Perfect Stay

+

Search millions of hotels and vacation rentals. We guarantee the lowest rates.

+
+ +
+ [ YOUR FREE AFFILIATE BOOKING WIDGET CODE GOES HERE ] +
+
+ +
+
+

💰 Cashback Rewards

+

Get up to 10% cash back on every booking. We pass our commission directly to you.

+
+
+

🤖 24/7 AI Support

+

Our adaptive AI problem-solving system resolves booking issues instantly, day or night.

+
+
+

🌍 Global Inventory

+

From boutique vacation rentals to 5-star hotels, access the world's largest inventory.

+
+
+ +
+

24/7 Video Customer Service

+

Watch our quick guide or speak with our AI support agent below.

+ + +
+ + + + + + + diff --git a/.vale/Google analytics.txt b/.vale/Google analytics.txt new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/.vale/Google analytics.txt @@ -0,0 +1 @@ + diff --git a/.vale/IONOS_Fillable_Form-Account_Change_Request.pdf b/.vale/IONOS_Fillable_Form-Account_Change_Request.pdf new file mode 100644 index 00000000000..6f372f28920 Binary files /dev/null and b/.vale/IONOS_Fillable_Form-Account_Change_Request.pdf differ diff --git a/.vale/README.md b/.vale/README.md index b177777463b..b45488a323c 100644 --- a/.vale/README.md +++ b/.vale/README.md @@ -1,30 +1,29 @@ -# Openverse Vale configuration +## Together streaming integration -Openverse runs Vale using -[Vale's PyPI distribution](https://pypi.org/project/vale/). This allows our Vale -version to be tracked in this directory's `pyproject.toml`, meaning tools like -Renovate will be aware of and update it automatically. +This repo includes a streaming AI assistant that uses the Together Python client as a backend model provider. -This approach to running Vale is intended specifically for running inside `ov`, -and will likely not work outside `ov`. Synced styles are kept in `ov`'s `opt` -directory, which prevents downloaded styles from appearing within the project -files on a contributor's computer. +How it works +- server/ai_stream.py calls Together's Python client in streaming mode and prints one JSON line per token. +- server/index.js spawns that Python script and proxies its stdout as Server-Sent Events (SSE) to /api/ai-chat-stream. +- The frontend (index.html) opens an EventSource to /api/ai-chat-stream and renders tokens as they arrive. -For more information about this motivation to avoid lists of sensitive terms in -the Openverse monorepo, refer to the README at -[WordPress/openverse-sensitive-terms](https://github.com/WordPress/openverse-sensitive-terms). +Required secrets (add these to GitHub Secrets or your host environment): +- TOGETHER_API_KEY — API key for Together (used by ai_stream.py) +- MONGO_URI — MongoDB Atlas connection string +- STRIPE_SECRET_KEY — Stripe secret key (test & live as needed) +- STRIPE_PUBLISHABLE_KEY +- STRIPE_WEBHOOK_SECRET +- TRAVELPAYOUTS_TOKEN — TravelPayouts API token -To run Vale with Openverse's configuration, use the just recipe: +Docker notes +- The server Dockerfile now installs Python and the Together Python client. Build may take a bit longer on first run. -```bash -ov just .vale/run -``` +Local testing +1. Add TOGETHER_API_KEY and other required env vars locally. +2. Start the server (recommended via Docker Compose): + docker-compose up --build +3. Visit http://localhost:3000 and use the AI Autopilot panel. -Typically, it is unnecessary to run Vale directly, as pre-commit automatically -runs Vale on each commit. You only need to run Vale directly when iterating on -changes to Openverse's Vale configuration. - -Refer to the `_files` recipe [in the `justfile`](./justfile) to identify which -files we currently check with Vale. A comment on the recipe explains the -rationale for that choice. The list of files will ideally expand in the future -to include all textual content in the repository. +Security notes +- Never expose TOGETHER_API_KEY or other secrets in client-side code. +- The SSE endpoint should be protected/rate-limited in production to avoid abuse and cost spikes. diff --git a/.vale/Repreeze--main.zip b/.vale/Repreeze--main.zip new file mode 100644 index 00000000000..1c22c1b22ad Binary files /dev/null and b/.vale/Repreeze--main.zip differ diff --git a/.vale/ai-devops-copilot.md b/.vale/ai-devops-copilot.md new file mode 100644 index 00000000000..57ec1dae915 --- /dev/null +++ b/.vale/ai-devops-copilot.md @@ -0,0 +1,227 @@ +# Supported AI Clients + +AI clients like **Claude Desktop**, **Cursor**, **Visual Studio Code**, **JetBrains IDEs**, **Netdata Web Client**, **Claude Code**, and **Gemini CLI** act as Model Context Protocol (MCP) clients that connect to Netdata's MCP server to bring real observability data into your AI workflows. This enables natural‑language analysis with context from your infrastructure and, for CLI tools, optional automation. + +> **Looking for the other direction?** To let Netdata Cloud connect *out* to your own MCP servers (GitHub, PagerDuty, Atlassian, custom) and pull that context into Netdata AI, see [MCP Connections](/docs/netdata-ai/mcp/mcp-connections.md). + +## The power of MCP clients + +### Key Capabilities + +**Observability‑driven operations** + +- Access real-time metrics and logs from monitoring systems +- Analyze performance trends and identify bottlenecks +- Correlate issues across multiple systems and services + +**System configuration management** + +- Generate and modify configuration files based on observed conditions +- Implement best practices automatically +- Adapt configurations to changing requirements + +**Automated troubleshooting** + +- Diagnose issues using multiple data sources +- Execute diagnostic commands and interpret results +- Implement fixes based on root cause analysis + +## Observability + automation use cases + +When MCP clients have access to Netdata, they can make informed decisions about system changes: + +### Infrastructure Optimization Examples + +**Database Performance Tuning:** + +``` +PostgreSQL is showing high query response times. Check the metrics and optimize +the configuration. +``` + +The AI analyzes connection counts, query performance, and resource usage to adjust connection pools, memory settings, and query optimization parameters. + +**Resource Management:** + +``` +This Kubernetes cluster is experiencing frequent pod restarts. Investigate and +fix the resource allocation. +``` + +The AI examines CPU, memory, and network metrics to identify resource constraints and adjust limits, requests, and HPA configurations. + +**Storage Optimization:** + +``` +Disk usage is growing rapidly on our log servers. Implement appropriate +retention policies. +``` + +The AI analyzes disk growth patterns, identifies log volume trends, and configures rotation, compression, and cleanup policies. + +**Network Performance:** + +``` +API response times are inconsistent. Check network metrics and optimize the +load balancer configuration. +``` + +The AI examines network latency, connection distribution, and backend health to adjust load balancing algorithms and connection settings. + +**Monitoring Setup:** + +``` +This server runs Redis but we're not monitoring it properly. Please configure +comprehensive monitoring. +``` + +The AI detects the Redis installation, configures appropriate collectors, sets up alerting thresholds, and verifies metric collection. + +**Auto-scaling Configuration:** + +``` +Set up intelligent auto-scaling based on current usage patterns I'm seeing. +``` + +The AI analyzes historical resource utilization to configure scaling policies, thresholds, and cooldown periods that match actual workload patterns. + +**Complex Test Environment Setup:** + +``` +I need a complete test environment that mirrors our production setup: a +multi-tier application with PostgreSQL primary/replica, Redis cluster, message +queues, and load balancers. Set up everything with a Netdata monitoring +everything and realistic test data. +``` + +The AI leverages its deep knowledge of application architectures and Netdata's monitoring capabilities to: + +- Deploy and configure all required services with production-like settings +- Set up database replication, clustering, and connection pooling +- Configure realistic test datasets and user simulation +- Implement comprehensive monitoring for all components with appropriate alerts +- Create load testing scenarios that match production traffic patterns +- Establish proper network segmentation and security configurations +- Generate documentation for the test environment and runbooks for common scenarios + +Keep in mind however, that usually this prompt should be split into multiple smaller prompts, so that the LLM can focus on completing a smaller task at a time. + +This showcases how AI can combine application expertise, infrastructure knowledge, and observability best practices to create sophisticated testing environments that would typically require weeks of manual setup and deep domain expertise. + +## ⚠️ Critical security and safety considerations + +### Command execution risks + +**LLMs Are Not Infallible:** + +- AI assistants can misinterpret requirements or generate incorrect commands +- Complex system interactions may not be fully understood by the model +- Edge cases and system-specific configurations can lead to unexpected results + +**System Impact Awareness:** + +- Commands can affect system stability, performance, and security +- Changes may have cascading effects across interconnected services +- Recovery from AI-generated misconfigurations can be time-consuming + +### Data privacy and security concerns + +**External LLM Provider Exposure:** + +- All data accessed by the AI (files, configurations, command outputs) is transmitted to external providers +- Sensitive information like passwords, API keys, certificates, and secrets may be inadvertently exposed +- Infrastructure topology, performance metrics, and operational details become visible to third parties +- Compliance requirements (GDPR, HIPAA, SOX) may be violated by external data transmission + +**Network and System Information:** + +- Database connection strings and credentials +- Network topology and security configurations +- Application secrets and encryption keys +- User data and personally identifiable information + +### Recommended safe usage practices + +**1. Analysis-First Approach:** + +``` +Instead of: Fix the high CPU usage on server X +Try: Analyze the CPU metrics on server X and explain what might be causing +high usage and what solutions you recommend +``` + +**2. Review and Validation:** + +- Always review AI-generated commands before execution +- Test suggestions in development environments first +- Understand the impact and side effects of proposed changes +- Have rollback procedures ready + +**3. Data Sanitization:** + +- Remove or mask sensitive information before sharing with AI +- Use environment variables or placeholder values for secrets +- Avoid sharing production credentials or keys +- Consider using development/staging data for analysis + +**4. Graduated Permissions:** + +- Start with read-only access for analysis +- Grant execution permissions gradually based on trust and validation +- Use separate accounts with limited privileges for AI operations +- Implement audit logging for all AI-initiated changes + +**5. Environment Separation:** + +- Use AI assistance primarily in development and testing environments +- Require manual approval for production changes +- Implement change management processes for AI-suggested modifications +- Maintain air-gapped environments for highly sensitive systems + +## Best practices for implementation + +### Safe integration workflow + +1. **Discovery Phase:** Let AI analyze your current setup and identify opportunities +2. **Planning Phase:** Have AI generate detailed implementation plans with explanations +3. **Review Phase:** Manually review all suggested changes and commands +4. **Testing Phase:** Implement changes in non-production environments +5. **Validation Phase:** Verify results match expectations before production deployment +6. **Documentation Phase:** Have AI help document the changes and their rationale + +### Building trust over time + +- Start with simple, low-risk tasks to build confidence +- Gradually increase complexity as you validate AI accuracy +- Develop institutional knowledge about AI strengths and limitations +- Create feedback loops to improve AI prompts and instructions + +### Team education and guidelines + +## Client guides + +See dedicated configuration guides for each client: + +- Claude Desktop +- Cursor +- Visual Studio Code +- JetBrains IDEs +- Netdata Web Client +- Claude Code +- Gemini CLI + +- Train team members on safe AI usage practices +- Establish clear guidelines for when AI assistance is appropriate +- Create approval processes for AI-suggested changes +- Share lessons learned and best practices across teams + +## The Future of AI-Driven Operations + +CLI-based AI assistants represent the beginning of a transformation in infrastructure management. As these tools mature, they will likely become central to: + +- **Predictive Operations:** Proactively identifying and preventing issues before they occur +- **Adaptive Infrastructure:** Systems that automatically optimize themselves based on changing conditions +- **Intelligent Automation:** Context-aware automation that understands business impact +- **Enhanced Collaboration:** AI as a knowledgeable team member that augments human expertise + +However, the human element remains crucial for oversight, validation, and strategic decision-making. The most successful implementations will be those that thoughtfully balance AI capabilities with human judgment and appropriate safety measures. diff --git a/.vale/demand-api.yaml b/.vale/demand-api.yaml new file mode 100644 index 00000000000..8481d914703 --- /dev/null +++ b/.vale/demand-api.yaml @@ -0,0 +1,14970 @@ +openapi: 3.1.0 +info: + title: Booking.com Demand API + version: '3.1' + summary: > + The Booking.com Demand API enables Affiliate Partners to access + Booking.com's travel inventory, including accommodations, car rentals, and + flights. + + + Use Demand API to search, retrieve details, check availability, manage + bookings and run reports using orders details. + + + - RESTful API with JSON responses. + + - Make HTTPS POST requests to interact with endpoints. + + - Requires authentication using your Affiliate ID and token credentials. + + + [Check the try out guide!](/demand/docs/getting-started/try-out-the-api) +servers: + - url: https://demandapi.booking.com/3.1 + description: Production environment + - url: https://demandapi-sandbox.booking.com/3.1 + description: Sandbox environment +components: + securitySchemes: + BearerAuth: + type: http + scheme: bearer + bearerFormat: string + parameters: + AffiliateIdHeader: + in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number +security: + - BearerAuth: [] +tags: + - name: Accommodations + x-displayName: Accommodation + description: >- + This API collection is specific for the stay part of the connected trip. +

Use these endpoints to search for stays such as hotels and + apartments, check availability, retrieve reviews, and get detailed + property information. + - name: Cars + x-displayName: Car rentals + description: >- + This API collection is specific to the car rentals part of the connected + trip.

Use these endpoints to search for car rentals, check car + details and look for depots and suppliers. + - name: Common/locations + x-displayName: Locations + description: >- + Provides identifiers for a wide range of geographical locations, including + airports, countries, cities, and regions.

Use these identifiers + to construct your requests.

Note: These identifiers are + available across all travel services and you can use them for both + accommodotation and car rentals requests. + - name: Common/payments + x-displayName: Payments + description: >- + Provides generic payment-related endpoints, including supported currencies + and payment types. + - name: Common/languages + x-displayName: Languages + description: Provides a list of supported language codes for use in API requests. + - name: Orders + x-displayName: Orders + description: >- + Enables management of booking orders within the Demand API.

Use + these endpoints to preview and create new orders, check order details, + cancel or modify existing orders. This collection is required to integrate + booking and order management functionality. + - name: Messages + x-displayName: Messages + description: >- + Provides endpoints for two-way post-booking communication between guests + and properties.

Use these endpoints to send and retrieve + messages, exchange images, and check conversation details. + - name: Conversations + x-displayName: Conversations + description: >- + Provides endpoints to retrieve and manage messaging conversations. +

Use these endpoints to list conversations, fetch conversation + details, and track updates. + - name: Attachments + x-displayName: Attachments + description: >- + Provides endpoints for handling message attachments.

Use these + endpoints to upload and download images shared within conversations. +x-tagGroups: + - name: Travel services + tags: + - Accommodations + - Cars + - name: Common + tags: + - Common/locations + - Common/payments + - Common/languages + - name: Orders + tags: + - Orders + - name: Messaging + tags: + - Messages + - Conversations + - Attachments +paths: + /accommodations/search: + post: + summary: Search accommodation + description: >- + This endpoint returns, by default, the cheapest available product for + each accommodation that matches the specified search criteria. +

When you apply location filters using parameters such as + country or region id, the results are sorted by Booking.com popularity + (top_picks) instead of price.
In this case, accommodations are + ranked in descending order of popularity, meaning higher-ranked listings + will appear earlier in the response. + operationId: /accommodations/search + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsSearchInput + type: object + properties: + 24_hour_reception: + description: >- + Filter the result based if the front desk reception is + available 24/7. When specified true, the result will filter + the products where front desk is available 24/7. + type: boolean + accommodation_facilities: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property facility. Examples of facilities + are: Parking, Restaurant, Room service etc. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + accommodation_types: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property type. Examples of accommodation + types are: Apartment, Hostel, Hotel etc. The full list can + be obtained by calling accommodations/constants. + type: integer + minimum: 1 + accommodations: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + maxItems: 100 + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + booker: + title: Booker + description: The booker's information. + type: object + properties: + country: + description: >- + The booker country for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. + type: string + pattern: ^[a-z]{2}$ + platform: + description: >- + The booker platform for showing the platform based deals + and prices. + type: string + enum: + - android + - desktop + - ios + - mobile + - tablet + state: + description: >- + The booker state for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. Currently applicable only for country US. + type: string + pattern: ^[a-z]{2}$ + travel_purpose: + description: The travel purpose of the booker. + type: string + enum: + - business + - leisure + user_groups: + description: The user groups that the booker is a member of. + type: array + items: + type: string + enum: + - authenticated + required: + - country + - platform + brands: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation brand. Examples of brands are: Radisson Blu, + WestCord Hotels, Westin etc. The full list can be obtained + by calling /accommodations/chains. + type: integer + minimum: 1 + cancellation_type: + description: >- + Filters the result for the cancellation type specified. + Possible values are free_cancellation & non_refundable. If + cancellation_type is free_cancellation, the result will + contain all the products with free_cancellation. + type: string + enum: + - free_cancellation + - non_refundable + checkin: + description: >- + The checkin date. Must be within 500 days in the future and + in the format yyyy-mm-dd. + type: string + format: date + checkout: + description: >- + The checkout date. Must be later than {checkin}. Must be + between 1 and 90 days after {checkin}. Must be within 500 + days in the future and in the format yyyy-mm-dd. + type: string + format: date + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + coordinates: + title: AccommodationsSearchCoordinatesOutput + description: Limit the result list to the specified coordinates. + type: object + properties: + latitude: + description: >- + Specify a latitude (as well as a longitude and radius) + to do searches around a specific location. + type: number + format: double + longitude: + description: >- + Specify a longitude (as well as a latitude and radius) + to do searches around a specific location. + type: number + format: double + radius: + description: >- + The radius is km to search around the specified latitude + and longitude. + type: number + format: double + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + dormitories: + description: >- + This parameter specifies if the results should include + dormitory beds or rooms. The default behaviour will include + the dormitory beds or rooms with other results. When this + flag is set to 'only', the response will only include + dormitory beds or rooms. When this flag is set to 'exclude', + the response will exclude dormitory beds or rooms. When this + flag is set to 'include', the response will include + dormitory beds or rooms with other results. + type: string + default: include + enum: + - include + - exclude + - only + extras: + description: >- + Input parameter to request for additional information about + the products. + type: array + items: + type: string + enum: + - extra_charges + - products + guests: + title: AccommodationsGuests + description: The guest details for the request. + type: object + properties: + allocation: + description: The exact allocation of guests to rooms. + type: array + items: + properties: + children: + description: The children ages for this room. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for this room. + type: integer + minimum: 1 + required: + - number_of_adults + children: + description: Array with the children ages. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for the search. + type: integer + minimum: 1 + number_of_rooms: + description: The number of rooms needed. + type: integer + minimum: 1 + required: + - number_of_adults + - number_of_rooms + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + meal_plan: + description: >- + Filter the result based on the selected meal plan. Example: + When specified breakfast_included, it will show the product + with free breakfast. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + payment: + description: The payment filter for the request + type: object + properties: + credit_card_required: + description: Filter to show accommodations which require credit card + type: boolean + timing: + description: >- + This parameter specifies that the results should only + return accommodation and blocks that contain the + specified payment timings. + type: string + enum: + - pay_at_the_property + - pay_online + price: + description: >- + If specified, will return only results where the price *per + night* falls in the specified range (inclusive). This filter + requires that a currency is passed + type: object + properties: + maximum: + description: >- + Set the maximum price per night, in the specified + currency, or omit to indicate no upper limit. + type: integer + minimum: + description: >- + Set the minimum price per night, in the specified + currency, or omit to indicate no lower limit. + type: integer + rating: + description: The rating filter for the request + type: object + properties: + minimum_review_score: + description: >- + Show only hotels with review_score >= that. Review score + should be in the range 1 to 10. + type: integer + minimum: 0 + maximum: 10 + stars: + description: >- + Limit to accommodations with the given number(s) of + stars. Stars should be in the range of 1 to 5. + type: array + items: + type: number + minimum: 1 + maximum: 5 + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + room_facilities: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property room facility. Examples of + facilities are: Coffee/Tea maker, TV, Airconditioning, + etc. The full list can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + rows: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + sort: + description: The sorting parameters for the response + type: object + properties: + by: + description: >- + The way to sort your results. NOTE: When ordering by + distance please make sure to specify the latitude and + longitude! + type: string + enum: + - distance + - price + - review_score + - stars + direction: + description: >- + The direction you wish for your sort.by parameter to be + sorted in + type: string + enum: + - ascending + - descending + travel_proud: + description: >- + Filter the result based on if the property is LGBTQ+ + friendly. When specified true, the result will filter and + return only the accommodations that are Proud Certified. + type: boolean + required: + - booker + - checkin + - checkout + - guests + example: + booker: + country: nl + platform: desktop + checkin: '!START_DATE!' + checkout: '!END_DATE!' + city: -2140479 + extras: + - extra_charges + - products + guests: + number_of_adults: 2 + number_of_rooms: 1 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsSearchOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsSearchDataOutput + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + commission: + title: AccommodationsCommission + description: >- + Commission details for the partner for a given + accommodation + type: object + properties: + amount: + description: The actual commission amount for the partner. + type: number + format: double + minimum: 0 + percentage: + description: >- + Percentage of the fee that will be received as + commission. + type: number + format: double + minimum: 0 + currency: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by calling + common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + deep_link_url: + description: >- + A mobile app URL that directs the user to a specific + page or content within the Booking.com app. The link + can only be used on a device with the Booking.com + app installed. It typically includes an Affiliate ID + (AID) to attribute bookings to the affiliate partner + when users are redirected + type: string + format: url + price: + title: AccommodationsSearchProductPrice + description: >- + The price components of this product or selection of + products. 'base' and 'extra_charges' are returned + only when explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any extra + charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to the + traveller under local booker protection laws. + This price includes the base accommodation cost + and all charges that are legally required to be + part of the displayed price. Equivalent to base + + included charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: AccommodationsExtraCharges + description: The charge breakdown. Includes taxes and fees. + type: object + properties: + excluded: + description: Charges not included in 'book'. + type: number + format: double + minimum: 0 + included: + description: Charges included in 'book'. + type: number + format: double + minimum: 0 + total: + description: The total price. Includes all extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + products: + type: array + items: + title: AccommodationsSearchProductOutput + description: >- + Details product information. It requires + `{"extras":["products"]}`. + type: object + properties: + id: + description: Unique ID of the product. + type: string + bundle: + description: >- + The bundle ID of the product comprising of + value added products. + type: integer + children: + description: >- + The ages of the children allocated to this + product. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + deal: + title: Deal + description: >- + This specifies the deal tagging for the + product. + type: + - object + - 'null' + properties: + discount_percentage: + description: Discount percentage of the applied deal. + type: integer + minimum: 1 + public_price: + description: >- + Original price of this product, before + applying any discounts. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + tags: + description: The tags of all the applied deals. + type: array + items: + type: string + enum: + - black_friday + - limited_time_deal + - logged_in_deal + - mobile_rate + - seasonal_deal + inventory: + title: InventoryOutput + type: object + properties: + third_party: + type: boolean + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner + company and "false" otherwise. + type: + description: >- + Type of inventory - either net or sell + rates. + type: string + enum: + - net + - sell + number_available_at_this_price: + description: Number of rooms available at this price. + type: integer + minimum: 1 + nullable: true + number_of_adults: + description: >- + The number of adults allocated to this + product. + type: integer + minimum: 1 + policies: + title: AccommodationsProductPolicies + description: The policies for this product. + type: object + properties: + cancellation: + title: AccommodationsProductCancellationPolicy + description: The cancellation policy for this product. + type: object + properties: + free_cancellation_until: + description: >- + Until when the order for this product + can be cancelled for free. + type: + - string + - 'null' + format: date-time + type: + description: >- + The cancellation policy applicable to + this product: "free_cancellation" allows + a period for free cancellation, + "non_refundable" means immediate loss of + total amount, "special_conditions" means + partly refundable. + type: string + enum: + - free_cancellation + - non_refundable + - special_conditions + meal_plan: + title: AccommodationsProductMealPlanPolicy + description: The meal plan policy for this product. + type: object + properties: + meals: + description: The meals included in the meal plan. + type: array + items: + type: string + enum: + - breakfast + - dinner + - lunch + plan: + description: The meal plan included in this product. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + - no_plan + payment: + title: AccommodationsProductPaymentPolicyNew + description: >- + Payment terms and conditions for this + product. + type: object + properties: + prepayment_required: + description: >- + Whether prepayment is required for this + product. + type: boolean + timings: + description: >- + The payment timings supported by this + product. + type: array + items: + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + price: + title: AccommodationsProductPrice + description: >- + The price components of this product. 'base' + and 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to + the traveller under local booker + protection laws. This price includes the + base accommodation cost and all charges + that are legally required to be part of + the displayed price. Equivalent to base + + included charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: AccommodationsProductExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + conditional: + description: >- + Charges that might apply under a + specific condition. + type: array + items: + title: AccommodationsConditionalCharge + description: >- + Charges that might apply under a + specific condition. + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + condition: + description: >- + A signed integer number that uniquely + identifies the condition ID. Find the + full list in the Pricing guidelines. + type: + - integer + - 'null' + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + excluded: + description: Charges not included in 'book'. + type: array + items: + title: AccommodationsSearchCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + included: + description: Charges included in 'book'. + type: array + items: + title: AccommodationsSearchCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total: + description: >- + The total price. Includes all extra + charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + room: + description: >- + A signed integer number that uniquely + identifies an accommodation property room. The + full list can be obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + third_party_inventory: + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company + and "false" otherwise. + type: boolean + url: + description: >- + Internet address for the property page on + Booking.com. + type: string + format: url + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 10004 + currency: EUR + deep_link_url: >- + booking://hotel/10004?affiliate_id=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!&mcid=10 + price: + base: 1081.49 + book: 1260.52 + extra_charges: + excluded: 0 + included: 179.04 + total: 1260.52 + products: + - id: '1000420_95127794_2_0_0' + bundle: null + children: [] + deal: null + inventory: + third_party: false + type: sell + number_of_adults: 2 + policies: + cancellation: + free_cancellation_until: null + type: non_refundable + meal_plan: + meals: [] + plan: no_plan + payment: + timings: + - pay_at_the_property + price: + base: 1081.49 + book: 1260.52 + extra_charges: + conditional: [] + excluded: [] + included: + - charge: 21 + mode: percentage + percentage: 9 + total_amount: 107.07 + unit_amount: null + - charge: 22 + mode: percentage + percentage: 7 + total_amount: 83.27 + unit_amount: null + - charge: 142 + mode: per_person_per_night + percentage: null + total_amount: 6 + unit_amount: 3 + total: 1260.52 + room: 1000426 + third_party_inventory: false + url: >- + https://www.booking.com/hotel/nl/conscious-the-tire-station.html?affiliate_id=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!&group_adults=2&no_rooms=1 + - ... + next_page: ... + /accommodations/availability: + post: + summary: Check availability + description: >- + Use this endpoint to return detailed product availability, price and + charges of the accommodation matching a given search criteria.
By + default, only product availability and price is returned. To receive + extended information use the `extras` parameter.

Note: It is + mandatory to pass the input parameters: accommodation, booker, checkin, + checkout and guest. + operationId: /accommodations/availability + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsAvailabilityInput + type: object + properties: + accommodation: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + booker: + title: Booker + description: The booker's information. + type: object + properties: + country: + description: >- + The booker country for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. + type: string + pattern: ^[a-z]{2}$ + platform: + description: >- + The booker platform for showing the platform based deals + and prices. + type: string + enum: + - android + - desktop + - ios + - mobile + - tablet + state: + description: >- + The booker state for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. Currently applicable only for country US. + type: string + pattern: ^[a-z]{2}$ + travel_purpose: + description: The travel purpose of the booker. + type: string + enum: + - business + - leisure + user_groups: + description: The user groups that the booker is a member of. + type: array + items: + type: string + enum: + - authenticated + required: + - country + - platform + checkin: + description: >- + The checkin date. Must be within 500 days in the future and + in the format yyyy-mm-dd. + type: string + format: date + checkout: + description: >- + The checkout date. Must be later than {checkin}. Must be + between 1 and 90 days after {checkin}. Must be within 500 + days in the future and in the format yyyy-mm-dd. + type: string + format: date + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Input parameter to request for additional information about + this product.include_bundle_variants must be passed in order + to retrieve all value added products. + type: array + items: + type: string + enum: + - extra_charges + - include_bundle_variants + guests: + title: AccommodationsGuests + description: The guest details for the request. + type: object + properties: + allocation: + description: The exact allocation of guests to rooms. + type: array + items: + properties: + children: + description: The children ages for this room. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for this room. + type: integer + minimum: 1 + required: + - number_of_adults + children: + description: Array with the children ages. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for the search. + type: integer + minimum: 1 + number_of_rooms: + description: The number of rooms needed. + type: integer + minimum: 1 + required: + - number_of_adults + - number_of_rooms + payment: + description: Payment input information to filter results. + properties: + timing: + description: >- + This parameter specifies that the results should only + return accommodation and blocks that contain the + specified payment timings. + type: string + enum: + - pay_at_the_property + - pay_online + products: + type: array + items: + description: Unique ID of the product. + type: string + required: + - accommodation + - booker + - checkin + - checkout + - guests + example: + accommodation: 10004 + booker: + country: nl + platform: desktop + checkin: '!START_DATE!' + checkout: '!END_DATE!' + extras: + - extra_charges + guests: + number_of_adults: 2 + number_of_rooms: 1 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsAvailabilityOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: AccommodationsAvailabilityDataOutput + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained + by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + currency: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 standard. + The full list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + deep_link_url: + description: >- + A mobile app URL that directs the user to a specific + page or content within the Booking.com app. The link + can only be used on a device with the Booking.com app + installed. It typically includes an Affiliate ID (AID) + to attribute bookings to the affiliate partner when + users are redirected + type: string + format: url + products: + type: array + items: + title: AccommodationsAvailabilityProductOutput + description: '' + type: object + properties: + id: + description: Unique ID of the product. + type: string + bundle: + description: >- + The bundle ID of the product comprising of value + added products. + type: integer + deal: + title: Deal + description: This specifies the deal tagging for the product. + type: + - object + - 'null' + properties: + discount_percentage: + description: Discount percentage of the applied deal. + type: integer + minimum: 1 + public_price: + description: >- + Original price of this product, before + applying any discounts. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + tags: + description: The tags of all the applied deals. + type: array + items: + type: string + enum: + - black_friday + - limited_time_deal + - logged_in_deal + - mobile_rate + - seasonal_deal + inventory: + title: InventoryOutput + type: object + properties: + third_party: + type: boolean + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company + and "false" otherwise. + type: + description: >- + Type of inventory - either net or sell + rates. + type: string + enum: + - net + - sell + maximum_occupancy: + title: AccommodationsMaximumOccupancy + description: >- + Information related to maximum number of + occupancy inside the room. + type: object + properties: + adults: + description: The maximum number of adults for this room. + type: integer + minimum: 1 + children: + description: >- + The information about maximum number of + children and their allowed ages for this + room. + type: array + items: + title: AccommodationsChildren + type: object + properties: + total: + description: >- + The maximum number of children for this + room. + type: integer + minimum: 1 + from_age: + description: >- + The youngest age of the children allowed + in this room. + type: integer + minimum: 0 + maximum: 17 + to_age: + description: >- + The oldest age of the children allowed + in this room. + type: integer + minimum: 0 + maximum: 17 + free_stay: + description: >- + Whether children in this age bracket + will be staying for free. False + indicates their cost was already + included in the price. + type: boolean + total: + description: The maximum number of guests for this room. + type: integer + minimum: 1 + number_available_at_this_price: + description: Number of rooms available at this price. + type: integer + minimum: 1 + policies: + title: AccommodationsProductPolicies + description: The policies for this product. + type: object + properties: + cancellation: + title: AccommodationsProductCancellationPolicy + description: The cancellation policy for this product. + type: object + properties: + free_cancellation_until: + description: >- + Until when the order for this product + can be cancelled for free. + type: + - string + - 'null' + format: date-time + schedule: + description: >- + The cancellation policy schedule for + this product. + type: array + items: + title: >- + AccommodationsProductDetailedCancellationPolicy + type: object + properties: + from: + description: >- + The time from which this cancellation + fee applies. `now` means from booking + time. + type: + - string + - 'null' + oneOf: + - format: date-time + - pattern: now + price: + description: The cancellation fee. + type: number + format: double + minimum: 0 + type: + description: >- + The cancellation policy applicable to + this product: "free_cancellation" allows + a period for free cancellation, + "non_refundable" means immediate loss of + total amount, "special_conditions" means + partly refundable. + type: string + enum: + - free_cancellation + - non_refundable + - special_conditions + meal_plan: + title: AccommodationsProductMealPlanPolicy + description: The meal plan policy for this product. + type: object + properties: + meals: + description: The meals included in the meal plan. + type: array + items: + type: string + enum: + - breakfast + - dinner + - lunch + plan: + description: The meal plan included in this product. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + - no_plan + payment: + title: AccommodationsProductPaymentPolicyNew + description: >- + Payment terms and conditions for this + product. + type: object + properties: + prepayment_required: + description: >- + Whether prepayment is required for this + product. + type: boolean + timings: + description: >- + The payment timings supported by this + product. + type: array + items: + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + price: + title: AccommodationsAvailabilityProductPrice + description: >- + The price components of this product. 'base' and + 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to the + traveller under local booker protection + laws. This price includes the base + accommodation cost and all charges that are + legally required to be part of the displayed + price. Equivalent to base + included + charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The price that will be charged by + Booking.com when online payments are used. + This field does not apply to the + "pay_at_the_property" timing. + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: AccommodationsProductExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + conditional: + description: >- + Charges that might apply under a + specific condition. + type: array + items: + title: AccommodationsConditionalCharge + description: >- + Charges that might apply under a + specific condition. + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + condition: + description: >- + A signed integer number that uniquely + identifies the condition ID. Find the + full list in the Pricing guidelines. + type: + - integer + - 'null' + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + excluded: + description: Charges not included in 'book'. + type: array + items: + title: AccommodationsAvailabilityCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + chargeable_online: + description: >- + Whether this charge is chargeable online + or not. Not applicable to + "pay_at_the_property" timing. + type: boolean + nullable: true + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + included: + description: Charges included in 'book'. + type: array + items: + title: AccommodationsAvailabilityCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + chargeable_online: + description: >- + Whether this charge is chargeable online + or not. Not applicable to + "pay_at_the_property" timing. + type: boolean + nullable: true + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total: + description: The total price. Includes all extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + room: + description: >- + A signed integer number that uniquely identifies + an accommodation property room. The full list + can be obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + third_party_inventory: + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company and + "false" otherwise. + type: boolean + recommendation: + title: AccommodationsAvailabilityRecommendationOutput + description: >- + The products recommended for the provided search + criteria. + type: object + properties: + price: + title: AccommodationsRecommendationPrice + description: >- + The price components of this product or selection + of products. 'base' and 'extra_charges' are + returned only when explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any extra + charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to the + traveller in accordance with local booker + protection laws. This price includes the base + accommodation cost and all charges that are + legally required to be part of the displayed + amount. Equivalent to base + charges where + included_in.display=true. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The amount collected by Booking.com from the + Virtual Credit Cards (VCCs) when using online + payment methods (e.g., pay_online_now, + pay_online_later). Equivalent to `base + + charges` where + `included_in.chargeable_online=true`. Returns + `null` for agency-model properties where + Booking.com does not process payments. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + extra_charges: + title: AccommodationsExtraCharges + description: The charge breakdown. Includes taxes and fees. + type: object + properties: + excluded: + description: Charges not included in 'book'. + type: number + format: double + minimum: 0 + included: + description: Charges included in 'book'. + type: number + format: double + minimum: 0 + total: + description: The total price. Includes all extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + products: + description: '' + type: array + items: + title: >- + AccommodationsAvailabilityRecommendationProductOutput + description: '' + type: object + properties: + id: + description: Unique ID of the product. + type: string + children: + description: >- + The ages of the children allocated to this + product. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: >- + The number of adults allocated to this + product. + type: integer + minimum: 1 + price: + title: AccommodationsRecommendationPrice + description: >- + The price components of this product or + selection of products. 'base' and + 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to + the traveller in accordance with local + booker protection laws. This price + includes the base accommodation cost and + all charges that are legally required to + be part of the displayed amount. + Equivalent to base + charges where + included_in.display=true. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The amount collected by Booking.com from + the Virtual Credit Cards (VCCs) when + using online payment methods (e.g., + pay_online_now, pay_online_later). + Equivalent to `base + charges` where + `included_in.chargeable_online=true`. + Returns `null` for agency-model + properties where Booking.com does not + process payments. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + extra_charges: + title: AccommodationsExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + excluded: + description: Charges not included in 'book'. + type: number + format: double + minimum: 0 + included: + description: Charges included in 'book'. + type: number + format: double + minimum: 0 + total: + description: >- + The total price. Includes all extra + charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + url: + description: Internet address for the property page on Booking.com. + type: string + format: url + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + id: 10004 + currency: EUR + deep_link_url: >- + booking://hotel/10004?affiliate_id=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE! + products: + - id: '1000420_358188572_2_0_0' + bundle: null + deal: null + inventory: + third_party: false + type: sell + maximum_occupancy: + adults: 2 + children: null + total: 2 + number_available_at_this_price: 3 + policies: + cancellation: + free_cancellation_until: '!START_DATE-2!T00:00:00+00:00' + type: free_cancellation + meal_plan: + meals: [] + plan: no_plan + payment: + prepayment_required: false + timings: + - pay_at_the_property + price: + base: 1189.63 + book: 1385.97 + chargeable_online: 1385.97 + extra_charges: + conditional: [] + excluded: [] + included: + - charge: 21 + chargeable_online: true + mode: percentage + percentage: 9 + total_amount: 107.07 + unit_amount: null + - charge: 22 + chargeable_online: false + mode: percentage + percentage: 7 + total_amount: 83.27 + unit_amount: null + - charge: 142 + chargeable_online: true + mode: per_person_per_night + percentage: null + total_amount: 6 + unit_amount: 3 + total: 1385.97 + room: 1000420 + third_party_inventory: false + - ... + recommendation: + price: + base: 1081.49 + book: 1260.52 + chargeable_online: 1260.52 + extra_charges: + excluded: 0 + included: 179.04 + total: 1260.52 + products: + - id: '1000420_95127794_2_0_0' + children: [] + number_of_adults: 2 + price: + base: 1081.49 + book: 1260.52 + chargeable_online: 1260.52 + extra_charges: + excluded: 0 + included: 179.04 + total: 1260.52 + url: >- + https://www.booking.com/hotel/nl/toren.html?aid=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!&no_rooms=1&group_adults=2 + /accommodations/bulk-availability: + post: + summary: Check multiple availability + description: >- + Use this endpoint to retrieve detailed product availability, price and + charges of a list of accommodations. By default, only product + availability and price is returned.
To receive extended information + use the `extras` parameter.
Note: It is mandatory to pass the input + parameters: accommodations, booker, checkin, checkout and guests. + operationId: /accommodations/bulk-availability + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsBulkAvailabilityInput + type: object + properties: + accommodations: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + booker: + title: Booker + description: The booker's information. + type: object + properties: + country: + description: >- + The booker country for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. + type: string + pattern: ^[a-z]{2}$ + platform: + description: >- + The booker platform for showing the platform based deals + and prices. + type: string + enum: + - android + - desktop + - ios + - mobile + - tablet + state: + description: >- + The booker state for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. Currently applicable only for country US. + type: string + pattern: ^[a-z]{2}$ + travel_purpose: + description: The travel purpose of the booker. + type: string + enum: + - business + - leisure + user_groups: + description: The user groups that the booker is a member of. + type: array + items: + type: string + enum: + - authenticated + required: + - country + - platform + checkin: + description: >- + The checkin date. Must be within 500 days in the future and + in the format yyyy-mm-dd. + type: string + format: date + checkout: + description: >- + The checkout date. Must be later than {checkin}. Must be + between 1 and 90 days after {checkin}. Must be within 500 + days in the future and in the format yyyy-mm-dd. + type: string + format: date + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Input parameter to request for additional information about + this product.include_bundle_variants must be passed in order + to retrieve all value added products. + type: array + items: + type: string + enum: + - extra_charges + - include_bundle_variants + filters: + title: AccommodationsBulkAvailabilityFiltersInput + description: The filters to apply in this availability request. + type: object + properties: + cancellation_type: + description: >- + Filters the result for the cancellation type specified. + Possible values are free_cancellation. The result will + contain all the products with free_cancellation. + type: string + enum: + - free_cancellation + meal_plan: + description: >- + Filter the result based on the selected meal plan. + Example: When specified breakfast_included, it will show + the product with free breakfast. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + payment: + description: Payment input information to filter results. + properties: + timing: + description: >- + This parameter specifies that the results should + only return accommodation and blocks that contain + the specified payment timings. + type: string + enum: + - pay_at_the_property + - pay_online + third_party_inventory: + description: Whether to include third party inventory in the response + type: boolean + guests: + title: AccommodationsGuests + description: The guest details for the request. + type: object + properties: + allocation: + description: The exact allocation of guests to rooms. + type: array + items: + properties: + children: + description: The children ages for this room. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for this room. + type: integer + minimum: 1 + required: + - number_of_adults + children: + description: Array with the children ages. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for the search. + type: integer + minimum: 1 + number_of_rooms: + description: The number of rooms needed. + type: integer + minimum: 1 + required: + - number_of_adults + - number_of_rooms + required: + - accommodations + - booker + - checkin + - checkout + - guests + example: + accommodations: + - 10004 + booker: + country: nl + platform: desktop + checkin: '!START_DATE!' + checkout: '!END_DATE!' + extras: + - extra_charges + filters: + meal_plan: breakfast_included + cancellation_type: free_cancellation + guests: + number_of_adults: 2 + number_of_rooms: 1 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsBulkAvailabilityOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsBulkAvailabilityDataOutput, + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + currency: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by calling + common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + deep_link_url: + description: >- + A mobile app URL that directs the user to a specific + page or content within the Booking.com app. The link + can only be used on a device with the Booking.com + app installed. It typically includes an Affiliate ID + (AID) to attribute bookings to the affiliate partner + when users are redirected + type: string + format: url + products: + type: array + items: + title: AccommodationsBulkAvailabilityProductOutput + description: '' + type: object + properties: + id: + description: Unique ID of the product. + type: string + bundle: + description: >- + The bundle ID of the product comprising of + value added products. + type: integer + deal: + title: Deal + description: >- + This specifies the deal tagging for the + product. + type: + - object + - 'null' + properties: + discount_percentage: + description: Discount percentage of the applied deal. + type: integer + minimum: 1 + public_price: + description: >- + Original price of this product, before + applying any discounts. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + tags: + description: The tags of all the applied deals. + type: array + items: + type: string + enum: + - black_friday + - limited_time_deal + - logged_in_deal + - mobile_rate + - seasonal_deal + maximum_occupancy: + title: AccommodationsMaximumOccupancy + description: >- + Information related to maximum number of + occupancy inside the room. + type: object + properties: + adults: + description: >- + The maximum number of adults for this + room. + type: integer + minimum: 1 + children: + description: >- + The information about maximum number of + children and their allowed ages for this + room. + type: array + items: + title: AccommodationsChildren + type: object + properties: + total: + description: >- + The maximum number of children for this + room. + type: integer + minimum: 1 + from_age: + description: >- + The youngest age of the children allowed + in this room. + type: integer + minimum: 0 + maximum: 17 + to_age: + description: >- + The oldest age of the children allowed + in this room. + type: integer + minimum: 0 + maximum: 17 + free_stay: + description: >- + Whether children in this age bracket + will be staying for free. False + indicates their cost was already + included in the price. + type: boolean + total: + description: >- + The maximum number of guests for this + room. + type: integer + minimum: 1 + number_available: + description: >- + How many units of this product are still + available. + type: integer + minimum: 1 + policies: + title: AccommodationsProductPolicies + description: The policies for this product. + type: object + properties: + cancellation: + title: AccommodationsProductCancellationPolicy + description: The cancellation policy for this product. + type: object + properties: + free_cancellation_until: + description: >- + Until when the order for this product + can be cancelled for free. + type: + - string + - 'null' + format: date-time + schedule: + description: >- + The cancellation policy schedule for + this product. + type: array + items: + title: >- + AccommodationsProductDetailedCancellationPolicy + type: object + properties: + from: + description: >- + The time from which this cancellation + fee applies. `now` means from booking + time. + type: + - string + - 'null' + oneOf: + - format: date-time + - pattern: now + price: + description: The cancellation fee. + type: number + format: double + minimum: 0 + type: + description: >- + The cancellation policy applicable to + this product: "free_cancellation" allows + a period for free cancellation, + "non_refundable" means immediate loss of + total amount, "special_conditions" means + partly refundable. + type: string + enum: + - free_cancellation + - non_refundable + - special_conditions + meal_plan: + title: AccommodationsProductMealPlanPolicy + description: The meal plan policy for this product. + type: object + properties: + meals: + description: The meals included in the meal plan. + type: array + items: + type: string + enum: + - breakfast + - dinner + - lunch + plan: + description: The meal plan included in this product. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + - no_plan + payment: + title: AccommodationsProductPaymentPolicyNew + description: >- + Payment terms and conditions for this + product. + type: object + properties: + prepayment_required: + description: >- + Whether prepayment is required for this + product. + type: boolean + timings: + description: >- + The payment timings supported by this + product. + type: array + items: + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + price: + title: AccommodationsAvailabilityProductPrice + description: >- + The price components of this product. 'base' + and 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to + the traveller under local booker + protection laws. This price includes the + base accommodation cost and all charges + that are legally required to be part of + the displayed price. Equivalent to base + + included charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The price that will be charged by + Booking.com when online payments are used. + This field does not apply to the + "pay_at_the_property" timing. + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: AccommodationsProductExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + conditional: + description: >- + Charges that might apply under a + specific condition. + type: array + items: + title: AccommodationsConditionalCharge + description: >- + Charges that might apply under a + specific condition. + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + condition: + description: >- + A signed integer number that uniquely + identifies the condition ID. Find the + full list in the Pricing guidelines. + type: + - integer + - 'null' + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + excluded: + description: Charges not included in 'book'. + type: array + items: + title: AccommodationsAvailabilityCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + chargeable_online: + description: >- + Whether this charge is chargeable online + or not. Not applicable to + "pay_at_the_property" timing. + type: boolean + nullable: true + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + included: + description: Charges included in 'book'. + type: array + items: + title: AccommodationsAvailabilityCharge + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + chargeable_online: + description: >- + Whether this charge is chargeable online + or not. Not applicable to + "pay_at_the_property" timing. + type: boolean + nullable: true + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total: + description: >- + The total price. Includes all extra + charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + room: + description: >- + A signed integer number that uniquely + identifies an accommodation property room. The + full list can be obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + third_party_inventory: + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company + and "false" otherwise. + type: boolean + recommendation: + title: AccommodationsBulkAvailabilityRecommendationOutput + description: >- + The products recommended for the provided search + criteria. + type: object + properties: + price: + title: AccommodationsRecommendationPrice + description: >- + The price components of this product or + selection of products. 'base' and + 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to the + traveller in accordance with local booker + protection laws. This price includes the + base accommodation cost and all charges that + are legally required to be part of the + displayed amount. Equivalent to base + + charges where included_in.display=true. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The amount collected by Booking.com from the + Virtual Credit Cards (VCCs) when using + online payment methods (e.g., + pay_online_now, pay_online_later). + Equivalent to `base + charges` where + `included_in.chargeable_online=true`. + Returns `null` for agency-model properties + where Booking.com does not process payments. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + extra_charges: + title: AccommodationsExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + excluded: + description: Charges not included in 'book'. + type: number + format: double + minimum: 0 + included: + description: Charges included in 'book'. + type: number + format: double + minimum: 0 + total: + description: The total price. Includes all extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + products: + description: '' + type: array + items: + title: >- + AccommodationsAvailabilityRecommendationProductOutput + description: '' + type: object + properties: + id: + description: Unique ID of the product. + type: string + children: + description: >- + The ages of the children allocated to this + product. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: >- + The number of adults allocated to this + product. + type: integer + minimum: 1 + price: + title: AccommodationsRecommendationPrice + description: >- + The price components of this product or + selection of products. 'base' and + 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + book: + description: >- + The display price that must be shown to + the traveller in accordance with local + booker protection laws. This price + includes the base accommodation cost and + all charges that are legally required to + be part of the displayed amount. + Equivalent to base + charges where + included_in.display=true. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The amount collected by Booking.com from + the Virtual Credit Cards (VCCs) when + using online payment methods (e.g., + pay_online_now, pay_online_later). + Equivalent to `base + charges` where + `included_in.chargeable_online=true`. + Returns `null` for agency-model + properties where Booking.com does not + process payments. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + extra_charges: + title: AccommodationsExtraCharges + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + excluded: + description: Charges not included in 'book'. + type: number + format: double + minimum: 0 + included: + description: Charges included in 'book'. + type: number + format: double + minimum: 0 + total: + description: >- + The total price. Includes all extra + charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + url: + description: >- + Internet address for the property page on + Booking.com. + type: string + format: url + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 10004 + currency: EUR + deep_link_url: >- + booking://hotel/10004?affiliate_id=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE! + products: + - id: '1000420_358188572_2_0_0' + bundle: null + deal: null + maximum_occupancy: + adults: 2 + children: null + total: 2 + number_available: 3 + policies: + cancellation: + free_cancellation_until: '!START_DATE-2!T00:00:00+00:00' + type: free_cancellation + schedule: + - from: now + price: 0 + - from: '!START_DATE-2!T00:00:00+00:00' + price: 1189.63 + meal_plan: + meals: [] + plan: no_plan + payment: + timings: + - pay_at_the_property + price: + base: 1189.63 + book: 1385.97 + chargeable_online: 1385.97 + extra_charges: + conditional: [] + excluded: [] + included: + - charge: 21 + chargeable_online: true + mode: percentage + percentage: 9 + total_amount: 107.07 + unit_amount: null + - charge: 22 + chargeable_online: false + mode: percentage + percentage: 7 + total_amount: 83.27 + unit_amount: null + - charge: 142 + chargeable_online: true + mode: per_person_per_night + percentage: null + total_amount: 6 + unit_amount: 3 + total: 1385.97 + room: 1000420 + third_party_inventory: true + - ... + recommendation: + price: + base: 1081.49 + book: 1260.52 + chargeable_online: 1260.52 + extra_charges: + excluded: 0 + included: 179.04 + total: 1260.52 + products: + - id: '1000420_95127794_2_0_0' + children: [] + number_of_adults: 2 + price: + base: 1081.49 + book: 1260.52 + chargeable_online: 1260.52 + extra_charges: + excluded: 0 + included: 179.04 + total: 1260.52 + url: >- + https://www.booking.com/hotel/nl/toren.html?aid=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!&no_rooms=1&group_adults=2 + /accommodations/chains: + post: + summary: Chains + description: >- + Use this endpoint to retrieve a list of accommodation chains and their + associated brands.

A chain-branded accommodation is part of a + larger corporate group and operates under a recognised brand. The + returned information can be used to filter search results by chain or + brand across other endpoints.
- To obtain the full list of chains, + call this endpoint with an empty request body.
- The `id` values + returned are the codes used as input and output in other API requests, + ensuring consistency across your integration.
**Example of chain** + - "Radisson Hotel Group" with brands such as "Radisson Blu" or "Park Inn + by Radisson." + operationId: /accommodations/chains + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsChainsBrandOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsChainsOutput + description: >- + Returns the internal code, name and list of associated + brands for an accommodation chain. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation chain. Examples of chains are: + Radisson Hotel Group, Hilton Worldwide etc. The full + list can be obtained by calling /accommodations/chains. + type: integer + minimum: 1 + brands: + description: >- + List of all the brands associated with this + accommodation chain. + type: array + items: + title: AccommodationsChainsBrandDataOutput + description: >- + Returns the internal code and name of an + accommodation brand. + type: object + properties: + id: + description: >- + A signed integer number that uniquely + identifies an accommodation brand. Examples of + brands are: Radisson Blu, WestCord Hotels, + Westin etc. The full list can be obtained by + calling /accommodations/chains. + type: integer + minimum: 1 + name: + description: Name of the accommodation brand. + type: string + name: + description: Name of the accommodation chain. + type: string + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 3 + brands: + - id: 1018 + name: Campanile + - ... + name: Louvre Hotels Group + - ... + /accommodations/constants: + post: + summary: Constants + description: >- + Use this endpoint to retrieve standardised codes and names for + accommodation-specific types, including facilities, room types, bed + types, themes, and charges.
These constants can be used to filter + searches or populate reference data across other accommodation + endpoints.
You can request multiple languages using IETF language + tags (see common/languages).
Call with an empty body to retrieve + all constants. The codes returned are canonical identifiers used across + the API. + operationId: /accommodations/constants + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsConstantsInput + type: object + properties: + constants: + description: Allows to filter the results only for specific sections. + type: array + items: + type: string + enum: + - accommodation_facilities + - accommodation_themes + - accommodation_types + - bed_types + - charge_types + - facility_types + - review_scores + - room_facilities + - room_types + languages: + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands or + "en-us" for English (US). To retrieve the full list of + supported languages, call the `/common/languages` endpoint + in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + example: + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsConstantsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: ConstantsDataOutput + type: object + properties: + accommodation_facilities: + type: array + items: + title: AccommodationsFacilityOutput + description: >- + A service, equipment or characteristic available at + property level, like for example: "Swimming pool + outdoor". + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property facility. Examples of + facilities are: Parking, Restaurant, Room + service etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 1 + facility_type: + description: >- + A signed integer number that uniquely identifies + the accommodation facility type. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + accommodation_themes: + type: array + items: + title: AccommodationsThemeOutput + description: >- + Accommodations can be grouped in "themes" depending + on their characteristics. For example: + "Beach/Seaside". + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property theme. Examples of + themes are: Beach/Seaside, Ski/Wintersports, + Luxury etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + accommodation_types: + type: array + items: + title: AccommodationsTypeOutput + description: >- + The type of an accommodation. Examples of types are + "Hotel", "Apartment", etc. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property type. Examples of + accommodation types are: Apartment, Hostel, + Hotel etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + bed_types: + type: array + items: + title: AccommodationsBedTypeOutput + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + a bed type. Examples of bed types are: Single, + Double etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 1 + description: + description: >- + Translated description of the bed size in + metric. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + description_imperial: + description: >- + Translated description of the bed size in + imperial. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + name: + description: Translated name of the bed type. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + charge_types: + type: array + items: + title: AccommodationsChargeTypeOutput + description: >- + These are additional charges, which may be included + or excluded from the reservation price. If excluded, + the amounts may be added by the property upon + checkout. The exclusions depend on several factors + like local legislation, and sometimes can only be + indicated but not be calculated at the time of the + reservation. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation charge type. Examples of + charges are: VAT, City Tax, etc. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 0 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + facility_types: + type: array + items: + title: AccommodationsFacilityTypeOutput + description: >- + A more generic designation meant to group a set of + facilities. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + the accommodation facility type. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + review_scores: + type: array + items: + title: AccommodationsReviewScoreOutput + description: Review score category name for each score interval. + type: object + properties: + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + minimum_score: + description: The minimum score of this review score category. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + maximum_score: + description: The maximum score of this review score category + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + room_facilities: + type: array + items: + title: AccommodationsRoomFacilityOutput + description: >- + A service, equipment or characteristic available at + room level, like for example: "Coffee/Tea maker". + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property room facility. + Examples of facilities are: Coffee/Tea maker, + TV, Airconditioning, etc. The full list can be + obtained by calling accommodations/constants. + type: integer + minimum: 1 + facility_type: + description: >- + A signed integer number that uniquely identifies + the accommodation facility type. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + room_types: + type: array + items: + title: AccommodationsRoomTypeOutput + description: >- + Designations for different types of rooms, based on + topology and/or setup. Examples: "Twin/Double" or + "Dormitory room". + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property room type. Example of + room types are: Suite, Apartment, Twin/Double + etc. The full list can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + accommodation_facilities: + - id: 2 + facility_type: 16 + name: + en-gb: Parking + zh-cn: 停车场 + - ... + accommodation_themes: + - id: 1 + name: + en-gb: Apartments + zh-cn: 公寓 + - ... + accommodation_types: + - id: 201 + name: + en-gb: Apartment + zh-cn: 公寓 + - ... + bed_types: + - id: 1 + description: + en-gb: 90-130 cm wide + zh-cn: 宽 90-130 厘米 + description_imperial: + en-gb: 35-51 inches wide + zh-cn: 宽 35-51 英寸 + name: + en-gb: Single bed(s) + zh-cn: 单人床 + - ... + charge_types: + - id: 0 + name: + en-gb: service charge + zh-cn: 服务费 + - ... + facility_types: + - id: 1 + name: + en-gb: General + zh-cn: 综合设施 + - ... + review_scores: + - maximum_score: 2.9 + minimum_score: 2 + name: + en-gb: very poor + zh-cn: 非常差 + - ... + room_facilities: + - id: 1 + facility_type: 7 + name: + en-gb: Coffee/Tea maker + zh-cn: 沏茶/咖啡设备 + - ... + room_types: + - id: 1 + name: + en-gb: Apartment + zh-cn: 公寓 + - ... + /accommodations/details: + post: + summary: Details + description: >- + This endpoint returns detailed information on all accommodation + properties matching a given search criteria. By default, only basic + information is returned.

It is mandatory to pass one of the + input parameters: accommodations, airport, city, country or region. +

To receive extended information use the `extras` parameter. + operationId: /accommodations/details + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsDetailsInput + type: object + properties: + accommodation_facilities: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property facility. Examples of facilities + are: Parking, Restaurant, Room service etc. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + accommodation_types: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property type. Examples of accommodation + types are: Apartment, Hostel, Hotel etc. The full list can + be obtained by calling accommodations/constants. + type: integer + minimum: 1 + accommodations: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + maxItems: 100 + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + brands: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation brand. Examples of brands are: Radisson Blu, + WestCord Hotels, Westin etc. The full list can be obtained + by calling /accommodations/chains. + type: integer + minimum: 1 + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + extras: + description: >- + Input parameter to request for additional information about + the accommodation property. It should be passed as a JSON + array with one or more items. + type: array + items: + type: string + enum: + - description + - bundles + - facilities + - payment + - photos + - policies + - rooms + languages: + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands or + "en-us" for English (US). To retrieve the full list of + supported languages, call the `/common/languages` endpoint + in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + payment: + description: Payment input information to filter results. + properties: + timing: + description: >- + This parameter specifies that the results should only + return accommodation and blocks that contain the + specified payment timings. + type: string + enum: + - pay_at_the_property + - pay_online + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + accommodations: + - 10004 + extras: + - bundles + - description + - facilities + - payment + - photos + - policies + - rooms + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsDetailsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsDetailsDataOutput + description: >- + All static information related to an accommodation + property (excludes information on availability). + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + accommodation_type: + description: >- + A signed integer number that uniquely identifies an + accommodation property type. Examples of + accommodation types are: Apartment, Hostel, Hotel + etc. The full list can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + booker_address_required: + description: >- + A boolean indicating whether a booker address is + required for the property. If true, a booker address + must be provided in the orders/create endpoint. If + false, the booker address is not required and can be + omitted from the orders/create endpoint. + type: boolean + brands: + type: array + items: + description: >- + A signed integer number that uniquely identifies + an accommodation brand. Examples of brands are: + Radisson Blu, WestCord Hotels, Westin etc. The + full list can be obtained by calling /accommodations/chains. + type: integer + minimum: 1 + bundles: + title: BundlesTranslatedOutput + description: >- + List of value-added bundles offered by this + accommodation. Each bundle groups one or more + value-added benefits that are included with the + stay, such as complimentary services, credits, or + special amenities. Bundles are informational only. + They cannot be selected, filtered, or booked + independently and do not represent a separate rate + or product. This field is returned only when + `bundles` is included in the `extras` request + parameter. + type: array + items: + title: BundleTranslatedOutput + type: object + description: >- + A group of value-added benefits included with the + accommodation. + properties: + id: + type: integer + description: Unique identifier of the bundle. + value_adds: + type: array + description: >- + List of value-added benefits included in this + bundle. Each value-add represents a single + benefit and includes localised descriptive + text for display purposes. + items: + title: ValueAddTranslatedOutput + type: object + description: >- + A single value-added benefit included in the + bundle, with its type and descriptive text + localised in multiple languages. + properties: + type: + description: >- + Identifies the type of value-added + benefit included in the bundle, such as + complimentary services, monetary + credits, percentage discounts, or + experiential amenities. Enum values + encode how the benefit is applied, + including time scope (per day or per + stay) and unit scope (per room or per + adult). + type: string + enum: + - parking + - food_drink_credit_per_day_per_room + - food_drink_credit_per_day_per_adult + - property_credit_per_day_per_room + - food_drink_credit_per_stay_per_adult + - food_drink_credit_per_stay_per_room + - property_credit_per_day_per_adult + - property_credit_per_stay_per_adult + - property_credit_per_stay_per_room + - food_drink_discount + - property_discount + - early_checkin + - late_checkout + - late_checkin + - spa_daily + - spa_hourly + - spa_massage + - high_speed_internet + - airport_transfer + - safari_game_drive + - safari_walk + - pets_stay + - bottle_of_wine + - bottle_of_champagne + - park_sleep_fly + description: + title: TranslatedStringArray + description: >- + List of descriptive text lines for the + value-added service, localised in + multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - array + - 'null' + items: + title: TranslatedString + description: >- + A string localised in multiple + languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + checkin_checkout_times: + title: AccommodationsCheckinCheckoutTimesOutput + type: object + properties: + checkin_from: + description: >- + The time from when checkin starts at this + property. + type: + - string + - 'null' + pattern: (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:00 + checkin_to: + description: >- + The time till when checkin can be done at this + property. + type: + - string + - 'null' + pattern: (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:00 + checkout_from: + description: >- + The time from when checkout starts at this + property. + type: + - string + - 'null' + pattern: (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:00 + checkout_to: + description: >- + The time till when checkout can be done at this + property. + type: + - string + - 'null' + pattern: (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:00 + contacts: + title: AccommodationsContactsOutput + description: Contact information of the accommodation. + type: object + properties: + general: + title: AccommodationsContactOutput + description: >- + Contact information of the accommodation. It can + be `null` if the data is missing. + type: object + properties: + email: + description: >- + Email address of the accommodation. It can + be `null` if the data is missing. + type: + - string + - 'null' + telephone: + description: >- + Telephone number of the accommodation. It + can be `null` if the data is missing. + type: + - string + - 'null' + nullable: true + reservations: + title: AccommodationsContactOutput + description: >- + Contact information of the accommodation. It can + be `null` if the data is missing. + type: object + properties: + email: + description: >- + Email address of the accommodation. It can + be `null` if the data is missing. + type: string + nullable: true + telephone: + description: >- + Telephone number of the accommodation. It + can be `null` if the data is missing. + type: string + nullable: true + nullable: true + currency: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by calling + common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + deep_link_url: + description: >- + A mobile app URL that directs the user to a specific + page or content within the Booking.com app. The link + can only be used on a device with the Booking.com + app installed. It typically includes an Affiliate ID + (AID) to attribute bookings to the affiliate partner + when users are redirected + type: string + format: url + description: + title: AccommodationsDescriptionOutput + description: >- + Textual information about the accommodation. + Requires `{"extras":["description"]}`. + type: object + properties: + host_type: + description: Type of host. + type: string + enum: + - private + - professional + - unknown + important_information: + description: >- + Text containing important information about the + property. The value is translated in the + requested languages. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + license_numbers: + description: >- + List of all the license numbers of this + accommodation property. + type: array + nullable: true + items: + type: string + text: + description: >- + The translated description text of this + accommodation property in the requested + languages. The maximum number of characters + returned may be limited by contract. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + trader: + title: TraderOutput + description: The trader information. + type: object + nullable: true + properties: + address: + description: The address of the trader + title: AccommodationsAddress + type: object + properties: + address_line: + type: string + city: + type: string + country: + type: string + post_code: + type: string + email: + description: The email of the trader + type: string + name: + description: The name of the trader + type: string + registration_number: + description: The registration number of the trader + type: string + telephone: + description: The telephone of the trader + type: string + trade_register: + description: The trade register name + type: string + trader_verified: + description: >- + Indicates whether the trader has + successfully met Booking.com's internal + verification process, based on established + criteria and checklists + type: boolean + facilities: + description: >- + The list of facilities available in this property. + Requires `{"extras":["facilities"]}`. + type: array + items: + title: AccommodationsFacilityOutput + description: Facility information for the accommodation. + type: object + properties: + id: + description: >- + A signed integer number that uniquely + identifies an accommodation property facility. + Examples of facilities are: Parking, + Restaurant, Room service etc. The full list + can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + attributes: + type: array + items: + description: >- + List of optional attributes for this + facility. + type: string + enum: + - offsite + - paid + facility_details: + description: >- + Provides detailed information about the facilities + available at the accommodation. This data is + accessible by including `{"extras":["facilities"]}` + in the request. + title: accommodationsFacilityDetailsOutput + type: object + properties: + internet_facility: + description: >- + Details about the internet facilities available + at the accommodation, including price, charge + mode and connection type. + type: object + title: AccommodationsInternetFacilityOutput + properties: + charge_mode: + type: string + description: >- + The charging model for internet access at + the accommodation. + nullable: true + enum: + - charges_are_applicable + - free + - per_day + - per_half_hour + - per_hour + - per_minute + connection_type: + type: string + description: >- + The type of internet connection available, + whether wireless (Wi-Fi) or wired. + nullable: true + enum: + - wifi + - wired + coverage: + type: string + description: >- + The extent of the internet coverage within + the accommodation, indicating the areas + where internet access is available. + nullable: true + enum: + - all_rooms + - business_center + - entire_property + - public_areas + - some_rooms + price: + description: >- + The price for using the internet facility, + if applicable. + minimum: 0 + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + parking_facilities: + type: array + description: >- + A list of parking facilities available at the + accommodation. + items: + title: AccommodationsParkingFacilityOutput + description: >- + Information about the parking facilities + available at the accommodation, including + pricing, type, location, and reservation + requirements. + type: object + properties: + charge_mode: + type: string + description: >- + The charging model for parking, such as + per hour, per day, or free. + nullable: true + enum: + - free + - charges_are_applicable + - charges_may_apply + - per_hour + - per_day + - per_week + - per_stay + location: + type: string + description: >- + The location of the parking facility + relative to the accommodation (on-site or + nearby). + nullable: true + enum: + - on_site + - nearby + price: + description: >- + The price for using the parking facility, + if applicable. + minimum: 0 + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + reservation: + type: string + description: >- + Indicates whether a reservation is + required for parking at the accommodation. + nullable: true + enum: + - needed + - not_needed + - not_possible + type: + type: string + description: >- + The type of parking available, either + public or private. + nullable: true + enum: + - private + - public + restaurant_facilities: + type: array + description: >- + A list of restaurant facilities available at the + accommodation. + items: + title: AccommodationsRestaurantFacilityOutput + description: >- + Information about the restaurant facilities + available at the accommodation. + type: object + properties: + accept_reservations: + description: >- + Indicates whether the restaurant accepts + reservations. + type: boolean + guests_only: + description: >- + Indicates whether the restaurant is + exclusive to guests or open to the public. + type: boolean + name: + type: string + description: The name of the restaurant. + status: + type: string + description: >- + The operational status of the restaurant + (e.g., open or closed). + nullable: true + enum: + - closed + - open + swimming_pool_facilities: + type: array + description: >- + A list of swimming pool facilities available at + the accommodation. + items: + title: AccommodationsSwimmingPoolFacilityOutput + description: >- + Details about the swimming pool occupancy + limits and options. + type: object + properties: + allowed_age_type: + type: string + description: >- + The age group allowed to use the swimming + pool (e.g., adults only, all ages, or kids + only). + nullable: true + enum: + - adults_only + - all_ages + - kids_only + payment_type: + type: string + description: >- + The payment model for pool access, either + free or paid. + nullable: true + enum: + - free + - paid + type: + type: string + description: >- + The type of swimming pool (indoor, + outdoor, or a combination). + nullable: true + enum: + - indoor + - indoor_and_outdoor + - outdoor + fiscal_information: + title: AccommodationsFiscalInformationOutput + description: >- + All fiscal related information of this accommodation + property. + type: object + properties: + legal_name: + type: string + vat_number: + type: string + is_genius: + description: Whether the accommodation is genius. + type: boolean + is_work_friendly: + description: >- + **DEPRECATED**, Flags if this accommodation is work + friendly. + type: boolean + deprecated: true + key_collection_information: + title: AccommodationsKeyCollectionInformationOutput + type: object + properties: + alternate_location: + title: AlternateLocationOutput + description: >- + Alternate location to collect the key of this + accommodation property. This is returned if the + key to access the property is in another + location. + type: object + properties: + address: + type: string + city: + type: string + postal_code: + type: string + checkin_method: + description: >- + An enumeration that describes the conditions for + the checkin process and for collecting the key + to access the property. This is typically + relevant for non-hotel accommodations (like + houses or apartments) without a 24 hours + front-desk. + type: string + enum: + - door_code + - lock_box + - reception + - secret_spot + - someone_will_meet + - unknown + key_location: + description: >- + Location of the key to access this accommodation + property. + type: string + enum: + - at_the_property + - different_place + - unknown + location: + title: AccommodationsLocationOutput + description: >- + All location related information of this + accommodation property. + type: object + properties: + address: + description: Translated accommodation address. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + city: + description: >- + A signed integer number that uniquely identifies + a city. The full list can be obtained by calling + common/locations/cities. + type: integer + coordinates: + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + country: + description: >- + A two-letter code that uniquely identifies a + country. This code is defined by the ISO 3166-1 + alpha-2 standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. + The full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + districts: + type: array + items: + description: >- + A signed integer number that uniquely + identifies a district. Typically, districts + define known areas within a city. The full + list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + postal_code: + type: string + regions: + type: array + items: + description: >- + A signed integer number that uniquely + identifies a geographical region. Regions + usually define official administrative areas + within a country, but may also include + multiple countries and in some cases + un-official but popular designations for + geographical areas. An example of a region + that crosses multiple countries is the Alps in + Europe. The full list can be obtained by + calling common/locations/regions. + type: integer + minimum: 1 + long_stay_friendly_home: + description: >- + Whether the accommodation is long stay friendly. + Applicable only for homes. + type: boolean + meal_prices: + title: MealPrices + description: >- + Details regarding the meal pricing options offered + at this accommodation. + type: object + properties: + breakfast: + description: >- + The price of breakfast per person, expressed in + the accommodation's local currency. If the value + is null, it indicates that breakfast pricing is + not available. + type: number + minimum: 0 + nullable: true + dinner: + description: >- + The price of dinner per person, expressed in the + accommodation's local currency. If the value is + null, it indicates that dinner pricing is not + available. + type: number + minimum: 0 + nullable: true + lunch: + description: >- + The price of lunch per person, expressed in the + accommodation's local currency. If the value is + null, it indicates that lunch pricing is not + available. + type: number + minimum: 0 + nullable: true + name: + description: Translated name of the accommodation property. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + number_of_rooms: + description: >- + Total number of rooms in the property. Please note + that this is not an availability call and that this + number is mostly used to determine the size and type + of a property. + type: integer + minimum: 0 + payment: + title: AccommodationsPaymentOutput + description: >- + Payment information related to this property. + Requires `{"extras":["payment"]}`. + type: object + properties: + methods: + title: AccommodationsDetailsPaymentMethodsOutput + description: Payment methods accepted by this property. + type: object + properties: + cards: + description: >- + Credit cards accepted when paying at the + property + type: array + items: + description: >- + A signed integer number that uniquely + identifies a payment type. Examples of + payment types are the different credit and + debit cards. The full list can be obtained + by calling common/payments/cards. + type: integer + minimum: 1 + cash: + description: Whether this property accepts cash + type: boolean + example: true + virtual_cards: + description: >- + Virtual credit cards accepted when paying at + the property + type: array + items: + description: >- + A signed integer number that uniquely + identifies a payment type. Examples of + payment types are the different credit and + debit cards. The full list can be obtained + by calling common/payments/cards. + type: integer + minimum: 1 + timings: + description: The payment timings supported by this product. + type: array + items: + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + cvc_required: + description: >- + Whether cvc is mandatory for creating order for + this accommodation. + type: boolean + domestic_no_cc: + description: >- + Whether domestic bookers can book without credit + card for products with free cancellation + policies. + type: boolean + amex_cvc_required: + description: >- + If amex card is used as payment method to create + order for this accommodation, whether cvc is + mandatory for that. + type: boolean + photos: + description: >- + List of photos for this accommodation property. The + maximum number of photos returned may be limited by + contract. Requires `{"extras":["photos"]}`. The + photos are returned in no particular order. + type: array + items: + title: AccommodationsPhotoOutput + type: object + properties: + main_photo: + description: >- + Flags this as the main photo. Not returned + otherwise. + type: boolean + example: true + tags: + type: array + items: + description: >- + A list of tags associated with the photo. + Manually generated. + type: string + example: Bathroom + url: + title: AccommodationsPhotoUrlOutput + type: object + properties: + large: + description: >- + URL of the photo image with a maximum + width of 1280 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/max1280/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + standard: + description: >- + URL of the photo image with a maximum + width of 500 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/max500/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + thumbnail: + description: >- + URL of the photo thumbnail image with + dimensions 100x100 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/100x100/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + thumbnail_large: + description: >- + URL of the photo thumbnail image with + dimensions 300x300 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/300x300/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + policies: + title: AccommodationsPoliciesOutput + description: >- + Set of price relevant rules, options and constraints + defined by the accommodation for this product. + Requires `{"extras":["policies"]}`. + type: object + properties: + cots_and_extra_beds: + description: Prices for cots and extra beds. + type: array + items: + title: PoliciesCotsAndExtraBedsOutput + type: object + properties: + age: + title: AccommodationsPoliciesAgeOutput + description: >- + Ages to which this entry is applicable. + Children are aged 0-17. 18/null means + adult. The interval is inclusive. + type: object + properties: + from: + type: integer + minimum: 0 + maximum: 18 + to: + type: integer + minimum: 0 + maximum: 18 + nullable: true + mode: + description: >- + How the price is applied per cot/extra + bed. + type: string + enum: + - per_night + - per_stay + percentage: + description: Non-null when the price is a percentage. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + price: + description: Non-null when the price is fixed or free. + minimum: 0 + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + type: + description: >- + Whether this entry relates to a cot or an + extra bed. + type: string + enum: + - cot + - extra_bed + maximum_checkin_age: + description: >- + Defines the maximum (inclusive) check-in age for + this property. If null, then there is no maximum + age for checking in + type: integer + minimum: 18 + minimum_checkin_age: + description: >- + Defines the minimum (inclusive) check-in age for + this property. + type: integer + minimum: 18 + minimum_guest_age: + description: >- + Defines the minimum age (inclusive) for staying + in this property. If "0", then a guest of any + age is allowed. + type: integer + minimum: 0 + pets: + title: AccommodationsPetsPolicyOutput + type: object + properties: + allowed: + description: >- + An enumerated value describing if pets are + allowed + type: string + enum: + - 'yes' + - 'no' + - upon_request + charge_mode: + description: >- + An enumerated value describing the charge + mode for pets + type: string + enum: + - free + - charges_may_apply + damage: + type: object + description: DamagePolicy of the property + properties: + deposit: + description: If a deposit needs to be paid upfront + type: object + properties: + collect: + properties: + date: + type: object + properties: + reference_date: + type: string + enum: + - checkin + - checkout + days_offset: + description: >- + The number of days on or before + reference date. + type: integer + payment_method: + type: string + enum: + - bank_transfer + - cash + - credit_card + - paypal + - other + refund: + properties: + date: + type: object + properties: + reference_date: + type: string + enum: + - checkin + - checkout + days_offset: + description: >- + The number of days on or after reference + date. + type: integer + payment_method: + type: string + enum: + - bank_transfer + - cash + - credit_card + - paypal + - other + amount: + description: The amount that can be charged + type: number + format: double + currency: + description: Currency in which payment needs to be made + type: string + price_category: + description: >- + Indicates the qualitative price reference (between $ + and $$$$) on how expensive an accommodation is. + Accommodations in the same city are sorted by + ascending price (average per guest per night in the + last month), the ones in the lowest 25 percentile + are in category $, between 25 and 50 percentile are + in category $$, between 50 and 75 percentile are in + category $$$, remaining ones are in category $$$$. + type: string + pattern: '[$]{0,4}' + programmes: + title: AccommodationsProgrammes + description: Details of programmes undergone by the property. + type: object + properties: + travel_proud: + description: >- + Boolean value is "true" if property has travel + proud badge and "false" otherwise. + type: boolean + ranking: + description: The public ranking of the accommodation. + type: number + minimum: 0 + rating: + title: AccommodationsDetailsRatingOutput + type: object + properties: + number_of_reviews: + description: >- + Number of validated reviews for this + accommodation. + type: integer + minimum: 0 + preferred: + description: >- + Boolean value is "true" if this accommodation is + in the Booking.com's preferred program and + "false" otherwise. + type: boolean + example: true + review_score: + nullable: true + description: >- + A decimal number indicating the current review + score of this accommodation property, in the + range 1..10. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + stars: + description: Number of stars of this accommodation property. + type: number + format: double + multipleOf: 0.1 + nullable: true + minimum: 1 + maximum: 5 + example: 4 + stars_type: + description: >- + An enumerated value describing which type of + stars this accommodation has. + type: string + nullable: true + enum: + - estimated_by_accommodation + - estimated_by_booking + - official + rooms: + description: >- + The list of room types available at this property. + Requires `{"extras":["rooms"]}`. + type: array + items: + title: AccommodationsDetailsRoomOutput + type: object + properties: + id: + description: >- + A signed integer number that uniquely + identifies an accommodation property room. The + full list can be obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + attributes: + description: >- + Lists a set of attribute qualifiers for this + room. Will not be returned if no relevant + attributes are applicable. + type: array + items: + type: string + enum: + - non_smoking + - smoking + - work_friendly + bed_options: + description: >- + Lists all possible bedding options for this + room or apartment. + type: array + items: + title: AccommodationsBedOptionOutput + description: >- + List of all possible bed arrangements. For + apartments and other types of hotel + accommodations, beds and bathrooms may be + available as separate rooms. + type: object + properties: + bed_configurations: + description: >- + Lists all alternative bed configurations + that are supported. + type: array + items: + title: AccommodationsBedConfigurationOutput + description: >- + List of all beds available for this + configuration. + type: object + properties: + id: + description: >- + Uniquely identifies this bed + configuration. + type: string + configuration: + description: >- + Detail list of all different types and + number of beds included in this + configuration. + type: array + items: + title: AccommodationsBedOutput + description: >- + Detail information about a type of bed + and number of beds included in this + configuration. + type: object + properties: + bed_type: + description: >- + A signed integer number that uniquely + identifies a bed type. Examples of bed + types are: Single, Double etc. The full + list can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + number_of_beds: + description: >- + Number of similar beds included in this + configuration. + type: integer + minimum: 0 + has_bathroom: + description: >- + Flags if this area includes its own + bathroom. + type: boolean + is_bedroom: + description: >- + Flags if this area is marked as a + bedroom, otherwise, it should be + considered a living room. + type: boolean + cots_and_extra_beds: + title: AccommodationsRoomsCotsAndExtraBedsOutput + description: >- + Lists room options regarding adding cots + and/or extra beds. + type: object + properties: + are_allowed_together: + description: >- + Flags if cots and extra beds can be placed + together in the room. `true` allows both + up to their maximum limits. `false` + requires exclusive choice of either cots + or extra beds. + type: boolean + maximum_number_of_cots: + description: Maximum number of cots that can be added. + type: integer + minimum: 0 + maximum_number_of_extra_beds: + description: >- + Maximum number of extra beds that can be + added. + type: integer + minimum: 0 + cribs_and_extra_beds: + title: AccommodationsRoomsCribsAndExtraBedsOutput + description: >- + **DEPRECATED**, please use + 'cots_and_extra_beds'. + type: object + properties: + are_allowed: + description: >- + Flags if it's possible to add cribs and/or + extra beds. + type: boolean + maximum_number_of_cribs: + description: Maximum number of cribs that can be added. + type: integer + minimum: 0 + maximum_number_of_extra_beds: + description: >- + Maximum number of extra beds that can be + added. + type: integer + minimum: 0 + deprecated: true + description: + description: >- + Translated description of this room. The + maximum number of characters returned may be + limited by contract. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + facilities: + type: array + items: + description: >- + A signed integer number that uniquely + identifies an accommodation property room + facility. Examples of facilities are: + Coffee/Tea maker, TV, Airconditioning, etc. + The full list can be obtained by calling accommodations/constants. + type: integer + minimum: 1 + maximum_occupancy: + title: AccommodationsDetailsMaximumOccupancyOutput + description: Occupancy limits and options. + type: object + properties: + adults: + description: Maximum number of adults allowed. + type: integer + minimum: 0 + children: + description: >- + Maximum number of children allowed + (children will be typically defined by + being under 18 years of age). + type: integer + minimum: 0 + total_guests: + description: >- + **DEPRECATED** Total capacity of adults + + children allowed. + type: integer + minimum: 0 + deprecated: true + name: + description: Translated name of this room. + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + number_of_rooms: + title: AccommodationsNumberOfRoomsOutput + description: Total rooms available. + type: object + properties: + bathrooms: + description: Total number of bathrooms. + type: integer + minimum: 0 + bedrooms: + description: >- + Total number of rooms equipped or that can + be fitted with a bed. + type: integer + minimum: 0 + living_rooms: + description: Total number of rooms without a bed. + type: integer + minimum: 0 + photos: + description: >- + List of photos for this accommodation room. + The maximum number of photos returned may be + limited by contract. Requires + `{"extras":["rooms","photos"]}`. The photos + are returned in no particular order. + type: array + items: + title: AccommodationsPhotoOutput + type: object + properties: + main_photo: + description: >- + Flags this as the main photo. Not + returned otherwise. + type: boolean + example: true + tags: + type: array + items: + description: >- + A list of tags associated with the + photo. Manually generated. + type: string + example: Bathroom + url: + title: AccommodationsPhotoUrlOutput + type: object + properties: + large: + description: >- + URL of the photo image with a maximum + width of 1280 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/max1280/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + standard: + description: >- + URL of the photo image with a maximum + width of 500 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/max500/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + thumbnail: + description: >- + URL of the photo thumbnail image with + dimensions 100x100 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/100x100/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + thumbnail_large: + description: >- + URL of the photo thumbnail image with + dimensions 300x300 pixels. + type: string + format: url + example: >- + https://q-xx.bstatic.com/xdata/images/hotel/300x300/20934654.jpg?k=806399263699a47361bdbbefc9c872a3db03eea26c4a815f5f4df95c93e38cdb&o= + room_type: + description: >- + A signed integer number that uniquely + identifies an accommodation property room + type. Example of room types are: Suite, + Apartment, Twin/Double etc. The full list can + be obtained by calling accommodations/constants. + type: integer + minimum: 1 + size: + description: The room area in square meters. + type: number + minimum: 0 + example: 20 + spoken_languages: + description: >- + Languages spoken by the staff of this accommodation + property. + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human + language or dialect. **Note:** Demand API only + accepts lowercase for the language codes. + Examples: "nl" for Dutch/Nederlands or "en-us" for + English (US). To retrieve the full list of + supported languages, call the `/common/languages` + endpoint in the same Demand API version you are + using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + themes: + type: array + items: + description: >- + A signed integer number that uniquely identifies + an accommodation property theme. Examples of + themes are: Beach/Seaside, Ski/Wintersports, + Luxury etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 1 + url: + description: >- + Internet address for the property page on + Booking.com. + type: string + format: url + work_friendly_home: + description: >- + Whether the accommodation is work friendly. + Applicable only for homes. + type: boolean + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 10004 + accommodation_type: 204 + brands: [] + bundles: + - id: 12345 + value_adds: + - type: high_speed_internet + description: + en-gb: + - High speed internet throughout your stay. + checkin_checkout_times: + checkin_from: '15:00:00' + checkin_to: null + checkout_from: '07:00:00' + checkout_to: '12:00:00' + currency: EUR + deep_link_url: booking://hotel/10004?affiliate_id=!AFFILIATE_ID! + description: + important_information: + en-gb: >- + The credit card that has been used to book a + non-refundable rate, will be charged on the day of + booking and needs to be presented upon check-in. In + case the credit card owner is not traveling with you, + an online payment link will be sent to prepay your + stay. + + + Please note that the hotel pre-authorizes your credit + card with the amount for the first night, 8 days prior + to arrival. This is not a payment and this only + applies to flexible rates. + + + Parking in Amsterdam is challenging, there are parking + garages near to the hotel or a valet service is + possible to arrange upon request. Charges are + applicable. Please contact the hotel ahead of time for + information + zh-cn: >- + 酒店将在预订当天收取用于支付不退款房价的信用卡,客人需在办理入住手续时出示该信用卡。如果信用卡持有人未与客人同行,酒店将发送在线付款链接以预付客人的住宿费用。 + + + 请注意,酒店将在客人抵达前8天通过其信用卡预授权第一晚的房费。这不是付款,这仅适用于变化的利率。 + + + 在阿姆斯特丹(Amsterdam)停车很有挑战性,酒店附近有停车库,或者可应要求为客人安排代客泊车服务,收费适用。请提前联系酒店以获取信息。 + fallback: null + license_numbers: [] + text: + en-gb: >- + The Pavilions Amsterdam, The Toren features elegant + accommodation alongside the famous Keizersgracht + canal, around the corner from the Anne Frank House. It + offers elegant rooms with flat-screen TVs with digital + entertainment system. + + + Each air-conditioned room at the Toren has an en suite + bathroom with a bathtub. They have classic decorations + such as chandeliers and ceiling paintings. Tea/coffee + making facilities and a complimentary mini bar are + also provided in every room. + + + In the morning, guests can enjoy a delightful + breakfast buffet in the elegant breakfast room with + views of the Keizersgracht. The trendy hotel bar + serves refreshing drinks during the day. + + + Westermarkt Tram Stop is less than 250 metres from the + hotel. Dam Square and the Royal Palace are a 10-minute + walk away. + zh-cn: >- + The Pavilions Amsterdam, The Toren酒店位于安妮弗兰克之家(Anne + Frank + House)拐角处,毗邻著名的Keizersgracht运河,提供典雅的住宿。酒店提供带平板电视和数字娱乐系统的典雅客房。 + + + Toren酒店的每间空调客房均配有带浴缸的独立浴室。客房拥有典雅的装饰,如吊灯和天花板画。每间客房还提供沏茶/咖啡设施和免费迷你吧。 + + + 早晨,客人可在典雅的早餐室享用可口的自助早餐,并欣赏Keizersgracht的景色。时髦的酒店酒吧白天提供清凉饮料。 + + + 酒店距离韦斯特马克特电车站(Westermarkt Tram Stop)不到250米,距离水坝广场(Dam + Square)和皇宫(Royal Palace)有10分钟的步行路程。 + fallback: null + trader: + address: + address_line: Prinsengract 153 + city: Amsterdam + country: nl + post_code: '94571' + email: test@test.test + name: Test Test + registration_number: '123456788' + telephone: '+123456789' + trade_register: hjdfvhfjd + trader_verified: true + facilities: + - id: 5 + attributes: [] + - ... + is_genius: true + is_work_friendly: false + location: + address: + fallback: Keizersgracht 164 + city: -2140479 + coordinates: + latitude: 52.375858 + longitude: 4.886006 + country: nl + districts: + - 145 + - 3024 + - 9173 + postal_code: 1015 CZ + regions: + - 1010 + - 2776 + long_stay_friendly_home: false + meal_prices: + breakfast: 20 + dinner: null + lunch: null + name: + fallback: The Pavilions Amsterdam, The Toren + number_of_rooms: 11 + payment: + amex_cvc_required: false + cvc_required: true + domestic_no_cc: false + methods: + cash: true + cards: + - 1 + - 2 + - 3 + virtual_cards: + - 1 + - 2 + - 3 + timings: + - pay_at_the_property + photos: + - main_photo: true + tags: + - Neighbourhood + url: + large: >- + https://q-xx.bstatic.com/xdata/images/hotel/max1280/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + standard: >- + https://q-xx.bstatic.com/xdata/images/hotel/max500/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + thumbnail: >- + https://q-xx.bstatic.com/xdata/images/hotel/100x100/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + thumbnail_large: >- + https://q-xx.bstatic.com/xdata/images/hotel/300x300/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + - ... + policies: + cots_and_extra_beds: + - age: + from: 0 + to: 2 + mode: per_night + price: 0 + type: crib + damage: + amount: 50 + currency: EUR + deposit: + collect: + date: + days_offset: 0 + reference_date: checkin + payment_method: credit_card + refund: + date: + days_offset: 0 + reference_date: checkout + payment_method: credit_card + maximum_checkin_age: null + minimum_checkin_age: 18 + minimum_guest_age: 0 + pets: + allowed: 'no' + charge_mode: null + price_category: $$$$ + programmes: + travel_proud: false + ranking: 123456 + rating: + number_of_reviews: 930 + preferred: true + review_score: 9 + stars: 4 + stars_type: official + rooms: + - id: 1000420 + attributes: + - non_smoking + bed_options: + - bed_configurations: + - id: 1000420-1 + configuration: + - bed_type: 6 + number_of_beds: 1 + - id: 1000420-2 + configuration: + - bed_type: 1 + number_of_beds: 2 + has_bathroom: true + is_bedroom: true + cots_and_extra_beds: + are_allowed_together: false + maximum_number_of_cots: 0 + maximum_number_of_extra_beds: 0 + cribs_and_extra_beds: + are_allowed: false + maximum_number_of_cribs: 0 + maximum_number_of_extra_beds: 0 + description: + en-gb: >- + This room features decor with rich colours and + original features. It is located in the annex + building, 8 houses away from the main building. It + is internally positioned, overlooking a small + courtyard. + fallback: null + facilities: + - 1 + - ... + maximum_occupancy: + adults: 2 + children: 1 + total_guests: 2 + name: + en-gb: Standard Double or Twin Room + zh-cn: '标准双人或双床间 ' + fallback: null + number_of_rooms: + bathrooms: 1 + bedrooms: 1 + living_rooms: 0 + photos: + - tags: + - Neighbourhood + url: + large: >- + https://q-xx.bstatic.com/xdata/images/hotel/max1280/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + standard: >- + https://q-xx.bstatic.com/xdata/images/hotel/max500/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + thumbnail: >- + https://q-xx.bstatic.com/xdata/images/hotel/100x100/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + thumbnail_large: >- + https://q-xx.bstatic.com/xdata/images/hotel/300x300/243931754.jpg?k=a1fea83a088f20b8f8a0e68ac06cb0090a093808f6e2a129bfb990165a0009f3&o= + - ... + room_type: 9 + size: 18 + - ... + spoken_languages: + - de + - en-gb + - fr + - nl + themes: + - 6 + - ... + url: >- + https://www.booking.com/hotel/nl/toren.html?affiliate_id=!AFFILIATE_ID! + work_friendly_home: false + /accommodations/details/changes: + post: + summary: Updated accommodations + description: >- + Use this endpoint to track accommodations that have opened, closed, or + had relevant content updates since a specific timestamp. Changes can + include updates to general information, facilities, rooms, photos, + payments, and more.
You can:
- Filter results by country or + city.
- Use the "next" timestamp from the response to request + further updates.

To keep your local accommodation cache up to + date, use this endpoint in combination with + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) +

The maximum number of IDs returned is approximately 5000 per + request. + operationId: /accommodations/details/changes + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsDetailsChangesInput + type: object + properties: + last_change: + description: >- + The timestamp in ISO-8601 format from which changes to + accommodations are returned (inclusive). Only UTC time zone + is supported. We support changes for last 24 hours. Format: + YYYY-MM-DDTHH:mm:ss+00:00 + type: string + format: date-time + filters: + description: >- + parameter basis which filtering needs to be done. Only one + of (countries or cities) must be provided. + type: object + properties: + countries: + description: >- + Filter changes based on these countries. The valid full + list can be obtained by calling common/locations/countries. + type: array + items: + description: >- + A two-letter code that uniquely identifies a country. + This code is defined by the ISO 3166-1 alpha-2 + standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The + full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + cities: + description: >- + Filter changes based on these cities. The valid full + list can be obtained by calling common/locations/cities. + type: array + items: + description: >- + A signed integer number that uniquely identifies a + city. The full list can be obtained by calling common/locations/cities. + type: integer + required: + - last_change + example: + last_change: '!START_DATE!T12:00:00+00:00' + filters: + countries: + - nl + - es + - in + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsDetailsChangesOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: AccommodationDetailsChangesDataOutput + type: object + properties: + changes: + title: AccommodationsDetailsChangesListOutput + description: The list of changed accommodations. + type: object + properties: + changed: + type: array + items: + description: >- + Accommodations which have had relevant changes + to their content since the given timestamp. + Changes being tracked include: general + information, standard phrase, photos, payments, + facilities and rooms. + type: integer + closed: + type: array + items: + description: >- + Accommodations which have closed since the given + timestamp. Note that these same accommodations + may be re-opened shortly after. + type: integer + opened: + type: array + items: + description: >- + Accommodations which have opened since the given + timestamp. Note that sometimes accommodations + may be closed again shortly after. + type: integer + from: + description: >- + ISO 8601 timestamp which indicates the timestamp from + which the changes are returned (inclusive). + type: string + format: date-time + next: + description: >- + ISO 8601 timestamp which indicates the next timestamp + to be used for `last_change`. This will be 1 second + after the latest change returned in the result (all + changes from the "last" second are returned). NOTE: + this field will not be present unless changes are + returned. In this case, repeat the call after one + minute with the same `last_change` date. + type: string + format: date-time + total_changes: + description: >- + Total number of changed accommodation ids returned. If + 0, then repeat the call after one minute with the same + `last_change` date. + type: integer + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + changes: + changed: + - 403115 + - ... + closed: + - 9876832 + - ... + opened: + - 8034270 + - ... + from: '!START_DATE!T12:00:00+00:00' + next: '!START_DATE!T12:24:42+00:00' + total_changes: 5125 + /accommodations/reviews: + post: + summary: Accommodation reviews + description: >- + This endpoint provides access to reviews for specified accommodations, + allowing you to retrieve traveller feedback associated with a particular + property.

✅ The reviews returned can be [filtered and + sorted](/demand/docs/accommodations/filter-sorting), with the option to + limit the number of reviews per accommodation by specifying the `rows` + parameter.

Please note that the ratings **score is based on + all traveller traffic across Booking.com**, and may not necessarily + reflect the experience of your own customers.

If you choose to + display or use these ratings and reviews, you are responsible for + ensuring that your travellers are properly informed about what these + scores represent. + operationId: /accommodations/reviews + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsReviewsInput + type: object + properties: + accommodations: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + maxItems: 100 + languages: + description: Limits reviews to those written in this language. + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + last_change: + description: >- + Limits the reviews to those changed after the given date. + Format: YYYY-MM-DD. + type: string + format: date + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + reviewer: + title: AccommodationsReviewer + type: object + properties: + countries: + description: >- + Limits reviews to those written by reviewer from the + given country. + type: array + items: + description: >- + A two-letter code that uniquely identifies a country. + This code is defined by the ISO 3166-1 alpha-2 + standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The + full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + travel_purposes: + description: >- + Limits reviews to those written by specific travel + purposes. + type: array + items: + description: Defines if this was a leisure or business trip. + type: string + enum: + - business + - leisure + types: + description: >- + Limits reviews to those written by specific reviewer + type. + type: array + items: + description: The reviewer type. + type: string + enum: + - couple + - extended_group + - family_with_children + - solo_traveller + rows: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + score: + title: AccommodationsReviewScoreInput + type: object + properties: + maximum: + description: >- + Limits the reviews to those having score lesser or equal + to this value. + type: integer + minimum: 1 + maximum: 10 + minimum: + description: >- + Limits the reviews to those having score greater or + equal to this value. + type: integer + minimum: 1 + maximum: 10 + required: + - accommodations + example: + accommodations: + - 10004 + languages: + - en-gb + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsReviewsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsReviewsDataOutput + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + reviews: + type: array + items: + title: AccommodationsReviewOutput + type: object + properties: + id: + description: Unique identifier of the review. + type: integer + date: + description: >- + The date when the review was last modified. + Format: YYYY-MM-DD. + type: string + format: date + language: + description: >- + An IETF language tag code that uniquely + identifies a supported human language or + dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. + Note that in v3 the whole tag is always + lowercase. Examples: "nl" for Dutch/Nederlands + or "en-us" for English (US). To retrieve the + full list of supported languages, call the + `/common/languages` endpoint in the same + Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + negative: + description: Negative comments from this review. + type: + - string + - 'null' + positive: + description: Positive comments from this review. + type: + - string + - 'null' + reviewer: + title: AccommodationsReviewerOutput + type: object + properties: + country: + description: >- + A two-letter code that uniquely identifies + a country. This code is defined by the ISO + 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. + The full list can be obtained by calling + common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + name: + description: >- + Name of the reviewer. If the value is null + then the reviewer is anonymous. + type: + - string + - 'null' + travel_purpose: + description: >- + Defines if this was a leisure or business + trip. + type: string + enum: + - business + - leisure + type: + description: The reviewer type. + type: string + enum: + - couple + - extended_group + - family_with_children + - solo_traveller + score: + description: The aggregated score of the review. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + summary: + description: The summary of the review. + type: + - string + - 'null' + text_meets_guidelines: + description: >- + Set to true when review meets the guidelines. + The review text will be removed if it doesn't + meet guidelines. + type: boolean + url: + description: >- + Internet address for the property page on + Booking.com. + type: string + format: url + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 10004 + reviews: + - id: 2130645894 + date: '2023-04-12' + language: en-gb + negative: >- + front entrance is not clean ( + + breakfast was served not like a buffet, every time you + have to ask a waiter to bring additional food. + positive: beautiful hôtel in the central area + reviewer: + country: ch + name: Svetlana + travel_purpose: leisure + type: couple + score: 9 + summary: >- + Fantastic hotel with kind personal who are providing + hospitality and excellent service. + text_meets_guidelines: true + - ... + url: >- + https://www.booking.com/hotel/nl/toren.html?aid=!AFFILIATE_ID!#tab-reviews + next_page: ... + /accommodations/reviews/scores: + post: + summary: Accommodation review scores + description: >- + This endpoint returns score distribution and score breakdown for the + specified accommodations. The scores information can be filtered by + reviewer parameters and languages. + operationId: /accommodations/reviews/scores + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Accommodations + requestBody: + content: + application/json: + schema: + title: AccommodationsReviewsInput + type: object + properties: + accommodations: + type: array + items: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + maxItems: 100 + languages: + description: Limits reviews to those written in this language. + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + reviewer: + title: AccommodationsReviewer + type: object + properties: + countries: + description: >- + Limits reviews to those written by reviewer from the + given country. + type: array + items: + description: >- + A two-letter code that uniquely identifies a country. + This code is defined by the ISO 3166-1 alpha-2 + standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The + full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + travel_purposes: + description: >- + Limits reviews to those written by specific travel + purposes. + type: array + items: + description: Defines if this was a leisure or business trip. + type: string + enum: + - business + - leisure + types: + description: >- + Limits reviews to those written by specific reviewer + type. + type: array + items: + description: The reviewer type. + type: string + enum: + - couple + - extended_group + - family_with_children + - solo_traveller + required: + - accommodations + example: + accommodations: + - 10004 + languages: + - en-gb + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AccommodationsReviewsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AccommodationsReviewsScoresOutput + description: '' + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + breakdown: + title: AccommodationsReviewsBreakdownOutput + description: >- + Review scores breakdown for each criteria. List of + criteria includes: cleanliness, comfort, facilities, + free_wifi, location, staff, value_for_money. + type: object + patternProperties: + ^(cleanliness|comfort|facilities|free_wifi|location|staff|value_for_money)$: + title: AccommodationsReviewsBreakdownSchemaOutput + type: object + properties: + number_of_reviews: + description: Number of reviews for this criteria. + type: integer + minimum: 0 + score: + description: >- + A decimal number indicating the review score + of this criteria, in the range 1..10. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + distribution: + title: AccommodationsReviewsDistributionOutput + description: Overall score distribution for each score (1-10). + type: object + patternProperties: + ^[1-9]|10$: + title: AccommodationsReviewsDistributionSchemaOutput + type: object + properties: + number_of_reviews: + description: Number of reviews with this score. + type: integer + minimum: 0 + percentage: + description: >- + Percent of score distribution for this + score. + type: number + multipleOf: 0.01 + number_of_reviews: + description: Number of validated reviews for this accommodation. + type: integer + minimum: 0 + score: + description: >- + A decimal number indicating the current review score + of this accommodation property, in the range 1..10. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + url: + description: >- + Internet address for the property page on + Booking.com. + type: string + format: url + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 10004 + breakdown: + cleanliness: + number_of_reviews: 243 + score: 9.27 + comfort: + number_of_reviews: 242 + score: 9.26 + facilities: + number_of_reviews: 242 + score: 8.84 + free_wifi: + number_of_reviews: 24 + score: 8.75 + location: + number_of_reviews: 242 + score: 9.59 + staff: + number_of_reviews: 243 + score: 9.63 + value_for_money: + number_of_reviews: 243 + score: 8.25 + distribution: + '1': + number_of_reviews: 1 + percentage: 0.41 + '2': + number_of_reviews: 0 + percentage: 0 + '3': + number_of_reviews: 2 + percentage: 0.82 + '4': + number_of_reviews: 2 + percentage: 0.82 + '5': + number_of_reviews: 5 + percentage: 2.06 + '6': + number_of_reviews: 3 + percentage: 1.23 + '7': + number_of_reviews: 18 + percentage: 7.41 + '8': + number_of_reviews: 41 + percentage: 16.87 + '9': + number_of_reviews: 67 + percentage: 27.57 + '10': + number_of_reviews: 104 + percentage: 42.8 + number_of_reviews: 243 + score: 8.9 + url: >- + https://www.booking.com/hotel/nl/toren.html?aid=!AFFILIATE_ID!#tab-reviews + /common/languages: + post: + summary: Retrieve language codes + description: >- + This endpoint returns a list of human language codes and their names in + the corresponding language. To get the full list call the endpoint + passing an empty body. The language codes returned are what is used as + input and output for other endpoints. + operationId: /common/languages + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/languages + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: LanguagesOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: LanguageOutput + description: >- + The language code and its designation in the + corresponding language. + type: object + properties: + id: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described + here: + https://en.wikipedia.org/wiki/IETF_language_tag. + Note that in v3 the whole tag is always lowercase. + Examples: "nl" for Dutch/Nederlands or "en-us" for + English (US). To retrieve the full list of supported + languages, call the `/common/languages` endpoint in + the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + name: + type: string + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: ar + name: العربية + - ... + /common/locations/airports: + post: + summary: Airports + description: >- + This endpoint returns a list of airport codes and their names in the + selected languages. The airports returned may be filtered by a location + id. For example, you can get the list of airports in The Netherlands by + passing: `{"country":"nl"}`. To get the full list call the endpoint + passing an empty body. The airport codes returned are what is used as + input and output for other endpoints. This endpoint implements + pagination of the results. + operationId: /common/locations/airports + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: AirportsInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + country: nl + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: AirportsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: AirportOutput + description: >- + The three-letter IATA airport code and the translated + name(s). + type: object + properties: + id: + description: >- + A three-letter code that uniquely identifies an + airport as defined by the International Air + Transport Association (IATA). The full list can be + obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). - string - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: AMS + name: + en-gb: Schiphol Airport + zh-cn: 史基浦机场 + - ... + next_page: null + /common/locations/cities: + post: + summary: Cities + description: >- + This endpoint returns a list of city codes and their names in the + selected languages. The cities returned may be filtered by a location + id. For example, you can get the list of cities in The Netherlands by + passing: `{"country":"nl"}`. To get the full list call the endpoint + passing an empty body. The city codes returned are what is used as input + and output for other endpoints. This endpoint implements pagination of + the results. + operationId: /common/locations/cities + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: CitiesInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + country: nl + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: CitiesOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: CityOutput + description: The city internal code and the translated name(s). + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies a + city. The full list can be obtained by calling common/locations/cities. + type: integer + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + coordinates: + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: -2156821 + name: + zh-cn: 兹沃勒 + coordinates: + latitude: 52.378281 + longitude: 4.90007 + - ... + next_page: ... + /common/locations/countries: + post: + summary: Countries + description: >- + This endpoint returns a list of country codes and their names in the + selected languages. The countries returned may be filtered by a location + id. For example, you can get the list of countries that are associated + with the European Alps region by passing: `{"region":1199}`. +

To get the full list call the endpoint passing an empty body. + The returned country codes are used as input and output for other + endpoints.

This endpoint implements pagination of the results. + operationId: /common/locations/countries + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: CountriesInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: CountriesOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: CountryOutput + description: >- + The two-letter ISO2 country code and the translated + name(s). + type: object + properties: + id: + description: >- + A two-letter code that uniquely identifies a + country. This code is defined by the ISO 3166-1 + alpha-2 standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. + The full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: ad + name: + en-gb: Andorra + zh-cn: 安道尔 + - ... + next_page: ... + /common/locations/districts: + post: + summary: Districts + description: >- + This endpoint returns a list of districts with translations in the + selected languages. The districts returned may be filtered by a location + id. For example, you can get the list of districts in Amsterdam by + passing: `{"city":-2140479}`.

To get the full list call the + endpoint passing an empty body. The district ids returned are what is + used as input and output for other endpoints.

This endpoint + implements pagination of the results. + operationId: /common/locations/districts + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: DistrictsInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + city: -2140479 + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: DistrictsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: DistrictOutput + description: The district id and the translated name(s). + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies a + district. Typically, districts define known areas + within a city. The full list can be obtained by + calling common/locations/districts. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + coordinates: + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 145 + name: + en-gb: Amsterdam City Centre + zh-cn: 阿姆斯特丹市中心 + coordinates: + latitude: 52.378281 + longitude: 4.90007 + - ... + next_page: null + /common/locations/landmarks: + post: + summary: Landmarks + description: >- + This endpoint returns a list of relevant geographical landmark codes and + their names in the selected languages. The landmarks returned may be + filtered by a location id. For example, you can get the list of + landmarks that are associated with the city of Paris in France by + passing: `{"city":-1456928}`.

To get the full list call the + endpoint passing an empty body. The landmark codes returned are what is + used as input and output for other endpoints.

This endpoint + implements pagination of the results. + operationId: /common/locations/landmarks + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: LandmarksInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + district: + description: >- + A signed integer number that uniquely identifies a district. + Typically, districts define known areas within a city. The + full list can be obtained by calling common/locations/districts. + type: integer + minimum: 1 + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + city: -2140479 + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: LandmarksOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: LandmarkOutput + description: The landmark internal code and the translated name(s). + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies a + relevant geographical landmark, like a monument or a + natural attraction. The full list can be obtained by + calling common/locations/landmarks. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + coordinates: + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 1 + coordinates: + latitude: 52.378281 + longitude: 4.90007 + name: + en-gb: Amsterdam Central Station + zh-cn: 阿姆斯特丹中央车站 + - ... + next_page: ... + /common/locations/regions: + post: + summary: Regions + description: >- + This endpoint returns a list of regions with translations in the + selected languages. The regions returned may be filtered by a location + id. For example, you can get the list of regions in the Netherlands or + that the Netherlands is a part of by passing: `{"country":"nl"}`. To + get the full list call the endpoint passing an empty body. The region + ids returned are what is used as input and output for other endpoints. + This endpoint implements pagination of the results. + operationId: /common/locations/regions + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/locations + requestBody: + content: + application/json: + schema: + title: RegionsInput + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies an airport as + defined by the International Air Transport Association + (IATA). The full list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + city: + description: >- + A signed integer number that uniquely identifies a city. The + full list can be obtained by calling common/locations/cities. + type: integer + country: + description: >- + A two-letter code that uniquely identifies a country. This + code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as + described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full + list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + landmark: + description: >- + A signed integer number that uniquely identifies a relevant + geographical landmark, like a monument or a natural + attraction. The full list can be obtained by calling common/locations/landmarks. + type: integer + minimum: 1 + languages: + type: array + items: + description: >- + An IETF language tag code that uniquely identifies a + supported human language or dialect as described here: + https://en.wikipedia.org/wiki/IETF_language_tag. Note that + in v3 the whole tag is always lowercase. Examples: "nl" + for Dutch/Nederlands or "en-us" for English (US). To + retrieve the full list of supported languages, call the + `/common/languages` endpoint in the same Demand API + version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + region: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also include + multiple countries and in some cases un-official but popular + designations for geographical areas. An example of a region + that crosses multiple countries is the Alps in Europe. The + full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + rows: + maximum: 1000 + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + default: 100 + example: + country: nl + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: RegionsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: RegionOutput + description: The region id and the translated name(s). + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies a + geographical region. Regions usually define official + administrative areas within a country, but may also + include multiple countries and in some cases + un-official but popular designations for + geographical areas. An example of a region that + crosses multiple countries is the Alps in Europe. + The full list can be obtained by calling common/locations/regions. + type: integer + minimum: 1 + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results (via + parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 1003 + name: + en-gb: Drenthe + zh-cn: 德伦特省 + - ... + next_page: null + /common/payments/cards: + post: + summary: Payment cards + description: >- + This endpoint returns a list of supported payment cards and their names + in English. Examples of payment types are the different credit and debit + cards.

To get the full list call the endpoint passing an empty + body. The codes returned are what is used as input and output for other + endpoints. + operationId: /common/payments/cards + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/payments + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: CardsDataOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: PaymentCardOutput + description: >- + The payment card identifier code and its designation in + English. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies a + payment type. Examples of payment types are the + different credit and debit cards. The full list can + be obtained by calling common/payments/cards. + type: integer + minimum: 1 + name: + type: string + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 1 + name: American Express + - ... + /common/payments/currencies: + post: + summary: Currencies + description: >- + This endpoint returns a list of currency codes and their names in the + selected languages. To get the full list call the endpoint passing an + empty body.

The currency codes returned are what is used as + input and output for other endpoints. + operationId: /common/payments/currencies + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Common/payments + requestBody: + content: + application/json: + schema: + title: CurrenciesInput + type: object + properties: + languages: + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands or + "en-us" for English (US). To retrieve the full list of + supported languages, call the `/common/languages` endpoint + in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + example: + languages: + - en-gb + - zh-cn + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: CurrenciesOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: CurrencyOutput + description: >- + The ISO 4217 currency code and its designation in the + selected language. + type: object + properties: + id: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by calling + common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: AED + name: + en-gb: U.A.E. dirham + zh-cn: 阿联酋迪拉姆 + - ... + /orders/preview: + post: + summary: Preview an order + description: >- + This endpoint returns the total final price with final charges, as well + as the price breakdown and payment/cancellation policies for each + product passed in the input. + operationId: /orders/preview + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Orders + requestBody: + content: + application/json: + schema: + title: OrdersPreviewInput + type: object + properties: + booker: + title: OrdersPreviewBookerOutput + description: The booker's information. + type: object + properties: + country: + description: >- + The booker country for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. + type: string + pattern: ^[a-z]{2}$ + platform: + description: >- + The booker platform for showing the platform based deals + and prices. + type: string + enum: + - android + - desktop + - ios + - mobile + - tablet + travel_purpose: + description: The travel purpose of the booker. + type: string + enum: + - business + - leisure + user_groups: + description: The user groups that the booker is a member of. + type: array + items: + type: string + enum: + - authenticated + required: + - country + - platform + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + accommodation: + title: OrdersPreviewAccommodationInput + description: >- + Input parameter with the checkin and checkout date and all + the accommodation products to be ordered. + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies an + accommodation property. The full list can be obtained by + calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + checkin: + description: >- + The checkin date. Must be within 500 days in the future + and in the format yyyy-mm-dd. + type: string + format: date + checkout: + description: >- + The checkout date. Must be later than {checkin}. Must be + between 1 and 90 days after {checkin}. Must be within + 500 days in the future and in the format yyyy-mm-dd. + type: string + format: date + products: + type: array + items: + title: OrdersPreviewProductInput + description: >- + Input parameter with the product id and the desired + allocation for that product + type: object + properties: + id: + description: Unique ID of the product. + type: string + allocation: + title: OrdersPreviewAccommodationAllocationOutput + description: The exact allocation of guests to a room. + type: object + properties: + children: + description: The children ages for this room. + type: array + items: + type: integer + minimum: 0 + maximum: 17 + number_of_adults: + description: The number of adults for this room. + type: integer + minimum: 1 + required: + - number_of_adults + required: + - booker + - accommodation + example: + booker: + country: nl + platform: mobile + travel_purpose: leisure + user_groups: + - authenticated + currency: EUR + accommodation: + id: 6745031 + checkin: '!START_DATE!' + checkout: '!END_DATE!' + products: + - id: '674503106_275710478_0_2_0' + allocation: + number_of_adults: 1 + children: + - 8 + - id: '674503113_275710486_0_1_0' + allocation: + number_of_adults: 1 + children: [] + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrdersPreviewOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: OrdersPreviewDataOutput + description: '' + type: object + properties: + accommodation: + title: OrdersPreviewAccommodationOutput + description: The products to order related to an accommodation + type: object + properties: + id: + description: >- + A signed integer number that uniquely identifies + an accommodation property. The full list can be + obtained by calling + [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details). + type: integer + minimum: 1 + currency: + title: OrdersPreviewCurrencyOutput + type: object + properties: + accommodation: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + booker: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + general_policies: + properties: + payment: + title: AccommodationsProductPaymentTimingsDates + description: '' + type: object + properties: + pay_online_now: + title: AccommodationsPayOnlineNow + type: + - object + - 'null' + properties: + dates: + description: >- + Schedule specifying the instalments for + paying the order for the + "pay_online_now" option. For each,entry + in the schedule, a charge will be made + at the time of that entry. + type: array + items: + title: AccommodationsPaymentSchedule + type: object + properties: + at: + description: >- + The date at which this instalment will + be charged. + type: string + format: date + price: + description: The amount charged in this instalment. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + method_required: + description: >- + Whether a payment method is required for + this payment timing. + type: boolean + methods: + title: AccommodationsPaymentMethods + type: object + description: >- + The payment methods available for the + payment timing selected. + properties: + airplus: + description: >- + Whether airplus can be used as a payment + method for this order. + type: boolean + cards: + description: The cards available to pay. + type: array + items: + description: >- + A signed integer number that uniquely + identifies a payment type. Examples of + payment types are the different credit + and debit cards. The full list can be + obtained by calling common/payments/cards. + type: integer + minimum: 1 + wallet: + description: >- + Whether wallet can be used as a payment + method for this order. + type: boolean + nullable: true + pay_online_later: + title: AccommodationsPayOnlineLater + type: object + properties: + dates: + description: >- + Schedule specifying the instalments for + paying the order for this product for + the "pay_online_later" option. For each + entry in the schedule, a charge will be + made at the time of that entry. + type: array + items: + title: AccommodationsPaymentSchedule + type: object + properties: + at: + description: >- + The date at which this instalment will + be charged. + type: string + format: date + price: + description: The amount charged in this instalment. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + method_required: + description: >- + Whether a payment method is required for + this payment timing. + type: boolean + methods: + title: AccommodationsPaymentMethods + type: object + description: >- + The payment methods available for the + payment timing selected. + properties: + airplus: + description: >- + Whether airplus can be used as a payment + method for this order. + type: boolean + cards: + description: The cards available to pay. + type: array + items: + description: >- + A signed integer number that uniquely + identifies a payment type. Examples of + payment types are the different credit + and debit cards. The full list can be + obtained by calling common/payments/cards. + type: integer + minimum: 1 + wallet: + description: >- + Whether wallet can be used as a payment + method for this order. + type: boolean + nullable: true + nullable: true + pay_at_the_property: + title: AccommodationsPayAtTheProperty + type: object + properties: + dates: + description: >- + Schedule specifying the instalments for + paying the order for this product for + the "pay_at_the_property" option. For + each entry in the schedule, a charge + will be made at the time of that entry. + type: array + items: + title: AccommodationsPaymentSchedule + type: object + properties: + at: + description: >- + The date at which this instalment will + be charged. + type: string + format: date + price: + description: The amount charged in this instalment. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + method_required: + description: >- + Whether a payment method is required for + this payment timing. + type: boolean + methods: + title: AccommodationsPaymentMethods + type: object + description: >- + The payment methods available for the + payment timing selected. + properties: + airplus: + description: >- + Whether airplus can be used as a payment + method for this order. + type: boolean + cards: + description: The cards available to pay. + type: array + items: + description: >- + A signed integer number that uniquely + identifies a payment type. Examples of + payment types are the different credit + and debit cards. The full list can be + obtained by calling common/payments/cards. + type: integer + minimum: 1 + wallet: + description: >- + Whether wallet can be used as a payment + method for this order. + type: boolean + nullable: true + nullable: true + price: + title: OrdersPreviewProductSumPriceOutput + description: >- + The price components of all the products selected + summed + type: object + properties: + base: + description: >- + The sum base price of all products selected. + Does not include any extra charges. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The price that will be charged by Booking.com + when online payments are used. This field does + not apply to the "pay_at_the_property" timing. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: >- + The total sum price. Includes all extra + charges of all products. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + description: >- + The sum of charges for all products selected, + grouped by charge type. + conditional: + description: >- + The sum of conditional charges for all + products selected, grouped by charge type. + type: array + items: + $ref: >- + ../accommodations/dataTypes.json#/conditionalChargeMultiCurrencySummary + non_conditional: + description: >- + The sum of non-conditional charges for all + products selected, grouped by charge type. + type: array + items: + $ref: >- + ../accommodations/dataTypes.json#/conditionalChargeMultiCurrencySummary + products: + type: array + items: + title: OrdersPreviewProductOutput + description: The returned information of the product selected + type: object + properties: + id: + description: Unique ID of the product. + type: string + bundle: + description: >- + The bundle ID of the product comprising of + value added products. + type: integer + deal: + title: Deal + description: >- + This specifies the deal tagging for the + product. + type: + - object + - 'null' + properties: + discount_percentage: + description: Discount percentage of the applied deal. + type: integer + minimum: 1 + public_price: + description: >- + Original price of this product, before + applying any discounts. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + tags: + description: The tags of all the applied deals. + type: array + items: + type: string + enum: + - black_friday + - limited_time_deal + - logged_in_deal + - mobile_rate + - seasonal_deal + inventory: + title: InventoryOutput + type: object + properties: + third_party: + type: boolean + description: >- + Boolean value is "true" if the product + is facilitated by a Booking.com partner + company and "false" otherwise. + type: + description: >- + Type of inventory - either net or sell + rates. + type: string + enum: + - net + - sell + policies: + title: >- + AccommodationsProductDetailedPoliciesMultiCurrency + description: The policies for this product. + type: object + properties: + cancellation: + description: >- + The cancellation policy schedule for + this product. + type: array + items: + title: >- + AccommodationsProductDetailedCancellationPolicyMultiCurrency + type: object + properties: + from: + description: >- + The time from which this cancellation + fee applies. `now` means from booking + time. + oneOf: + - type: string + format: date-time + - type: string + pattern: now + - type: 'null' + price: + description: The cancellation fee. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + meal_plan: + title: AccommodationsProductMealPlanPolicy + description: The meal plan policy for this product. + type: object + properties: + meals: + description: The meals included in the meal plan. + type: array + items: + type: string + enum: + - breakfast + - dinner + - lunch + plan: + description: The meal plan included in this product. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + - no_plan + price: + title: OrdersPreviewProductPriceOutput + description: >- + The price components of this product. 'base' + and 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + chargeable_online: + description: >- + The price that will be charged by + Booking.com when online payments are + used. This field does not apply to the + "pay_at_the_property" timing. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: OrdersPreviewProductExtraChargesOutput + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + conditional: + description: >- + Charges that might apply under a + specific condition. + type: array + items: + title: >- + AccommodationsConditionalChargeMultiCurrency + description: >- + Charges that might apply under a + specific condition. + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + condition: + description: >- + A signed integer number that uniquely + identifies the condition ID. Find the + full list in the Pricing guidelines. + type: + - integer + - 'null' + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + non_conditional: + description: >- + All non-conditional charges that will + necessarily be paid + type: array + items: + title: AccommodationsChargeMultiCurrency + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + chargeable_online: + description: >- + Whether this charge is chargeable online + or not. Not applicable to + "pay_at_the_property" timing. + type: boolean + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: >- + The total price. Includes all extra + charges. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + room: + description: >- + A signed long number that uniquely + identifies an accommodation property room. + The full list can be obtained by calling + [accommodations/details](#/accommodations/details). + type: number + minimum: 1 + nullable: true + third_party_inventory: + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company + and "false" otherwise. + type: boolean + occupancy_mismatch: + description: >- + Details any mismatch between the requested + occupancy and the product's capacity. + + -When one or more guests cannot be + accommodated, the object contains those that + can be accommodated (allocated) and those + that cannot (unallocated). + + -If all requested guests fit, the object is + null. + title: OccupancyMismatchOutput + type: + - object + - 'null' + properties: + allocated: + description: >- + The guests from the original request + that the product can accommodate. + title: OccupancyOutput + type: object + properties: + number_of_adults: + description: The number of adults. + type: integer + minimum: 0 + children: + description: >- + The ages of the children. Null or absent + if no children fit. + type: + - array + - 'null' + items: + type: integer + minimum: 0 + maximum: 17 + required: + - number_of_adults + - children + unallocated: + description: >- + The guests from the original request + that could not be accommodated by this + product. + title: OccupancyOutput + type: object + properties: + number_of_adults: + description: The number of adults. + type: integer + minimum: 0 + children: + description: >- + The ages of the children. Null or absent + if no children fit. + type: + - array + - 'null' + items: + type: integer + minimum: 0 + maximum: 17 + required: + - number_of_adults + - children + required: + - allocated + - unallocated + example: + allocated: + number_of_adults: 1 + children: null + unallocated: + number_of_adults: 1 + children: null + order_token: + description: >- + A token containing the necessary data to be used on + subsequent requests to [orders/create]. + type: string + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + accommodation: + id: 6745031 + currency: + accommodation: EUR + booker: null + general_policies: + payment: + pay_online_now: + dates: + - at: '!TODAY!' + price: + accommodation_currency: 177.65 + booker_currency: null + method_required: false + methods: + airplus: true + cards: + - 1 + - 2 + - 3 + wallet: true + pay_online_later: + dates: + - at: '!TODAY!' + price: + accommodation_currency: 0 + booker_currency: null + - at: '!START_DATE-2!' + price: + accommodation_currency: 177.65 + booker_currency: null + - at: '!START_DATE!' + price: + accommodation_currency: 0 + booker_currency: null + method_required: false + methods: + airplus: true + cards: + - 1 + - 2 + - 3 + - 5 + wallet: true + pay_at_the_property: + dates: + - at: '!TODAY!' + price: + accommodation_currency: 0 + booker_currency: null + - at: '!START_DATE!' + price: + accommodation_currency: 177.65 + booker_currency: null + method_required: true + methods: + airplus: true + cards: + - 1 + - 2 + wallet: false + price: + base: + accommodation_currency: 100 + booker_currency: null + chargeable_online: + accommodation_currency: 100 + booker_currency: null + total: + accommodation_currency: 123 + booker_currency: null + extra_charges: + conditional: [] + non_conditional: + - charge: 142 + chargeable_online: true + total_amount: + accommodation_currency: 6 + booker_currency: null + - charge: 21 + chargeable_online: false + total_amount: + accommodation_currency: 14.67 + booker_currency: null + - charge: 22 + chargeable_online: true + total_amount: + accommodation_currency: 11.41 + booker_currency: null + products: + - id: '1000420_278556531_2_0_0' + bundle: null + deal: null + inventory: + third_party: false + type: sell + policies: + cancellation: + - from: now + price: + accommodation_currency: 0 + booker_currency: null + - from: '!START_DATE-2!T22:00:00+00:00' + price: + accommodation_currency: 177.65 + booker_currency: null + meal_plan: + meals: [] + plan: no_plan + price: + base: + accommodation_currency: 155.96 + booker_currency: null + chargeable_online: + accommodation_currency: 186.92 + booker_currency: null + extra_charges: + conditional: [] + non_conditional: + - charge: 142 + chargeable_online: true + mode: per_person_per_night + percentage: null + total_amount: + accommodation_currency: 6 + booker_currency: null + unit_amount: 3 + - charge: 21 + chargeable_online: false + mode: percentage + percentage: 9 + total_amount: + accommodation_currency: 14.04 + booker_currency: null + unit_amount: null + - charge: 22 + chargeable_online: true + mode: percentage + percentage: 7 + total_amount: + accommodation_currency: 10.92 + booker_currency: null + unit_amount: null + total: + accommodation_currency: 186.92 + booker_currency: null + third_party_inventory: false + - id: tpi-1000420_95127794_2_0_0 + deal: null + inventory: + third_party: true + type: sell + policies: + cancellation: + - from: now + price: + accommodation_currency: 170 + booker_currency: null + meal_plan: + meals: [] + plan: no_plan + price: + base: + accommodation_currency: 162.98 + booker_currency: null + extra_charges: + conditional: + - charge: 3 + condition: 30 + mode: per_stay + percentage: null + total_amount: + accommodation_currency: 10 + booker_currency: null + unit_amount: null + non_conditional: + - charge: 142 + mode: per_person_per_night + percentage: null + total_amount: + accommodation_currency: 6 + booker_currency: null + unit_amount: + accommodation_currency: 3 + booker_currency: null + - charge: 21 + mode: percentage + percentage: 9 + total_amount: + accommodation_currency: 14.67 + booker_currency: null + unit_amount: null + - charge: 22 + mode: percentage + percentage: 7 + total_amount: + accommodation_currency: 11.41 + booker_currency: null + unit_amount: null + total: + accommodation_currency: 195.06 + booker_currency: null + third_party_inventory: true + order_token: ... + /orders/create: + post: + summary: Create an order + description: Use this endpoint to confirm the booking and proceed the payment. + operationId: /orders/create + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Orders + requestBody: + content: + application/json: + schema: + title: OrderCreateInput + type: object + properties: + accommodation: + title: OrderCreateAccommodationInput + description: Additional information related to the accommodation order. + type: object + properties: + label: + description: >- + A label for this order. This can be read back later + while fetching this order details. + type: string + products: + description: '' + type: array + items: + title: OrderCreateProductInformationInput + description: >- + Additional information related to each product related + to the products in this order. + type: object + properties: + id: + description: >- + ID for this product. `Please note that this MUST + match the product IDs used for related + /orders/preview request.` + type: string + bed_configuration: + description: >- + Bed configuration ID to select for this product. + `Please note that it can not be guaranteed that + the selected bed_configuration will be available.` + type: string + guests: + description: The guest details for this product. + type: array + items: + title: OrderCreateGuestInput + type: object + properties: + email: + description: The email address of the guest. + type: string + name: + description: The name of the guest. + type: string + required: + - email + - name + required: + - id + remarks: + title: OrderCreateRemarksInput + description: Optional remarks from the guest. + type: object + properties: + estimated_arrival_time: + title: EstimatedArrivalTimeInput + description: Estimated arrival time of the guests. + type: object + properties: + hour: + description: >- + Approximate hour of arrival to the hotel. + Allowed values are from 0 to 23. This time + should be within the hotel reception hours, or + will be ignored otherwise with a warning will be + appended to special_requests. + type: integer + minimum: 0 + maximum: 23 + next_day: + description: >- + Set this to true, if the hour selected is for + the day after checkin. + type: boolean + default: 'false' + required: + - hour + special_requests: + description: >- + Optional comments or requests from the guest. + Special requests cannot be guaranteed – but the + property will do its best to meet your needs. + type: string + booker: + title: OrderCreateBookerInput + description: The booker's information. + type: object + properties: + address: + title: OrderCreateAddressInput + description: >- + The booker's address to be used for creating this order. + All fields of this object are required if the + /accommodations/details endpoint indicates that the + booker's address is necessary by returning + booker_address_required=true. + type: object + properties: + address_line: + description: The details of this address. + type: string + city: + description: The city for this address. + type: string + country: + description: The country for this address. + type: string + pattern: ^[a-z]{2}$ + example: nl + post_code: + description: Post code for this address. + type: string + required: + - country + company: + description: The booker's company name. + type: string + email: + description: The booker's email address. + type: string + language: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands + or "en-us" for English (US). To retrieve the full list + of supported languages, call the `/common/languages` + endpoint in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + name: + title: OrderCreateBookerNameInput + description: The name of the booker. + type: object + properties: + first_name: + type: string + last_name: + type: string + required: + - first_name + - last_name + telephone: + description: The booker's telephone number. + type: string + required: + - address + - email + - name + - telephone + order_token: + description: >- + A token containing the necessary data to be used for + creating this order. + type: string + payment: + title: OrderCreatePaymentInput + description: Payment related information for the order. + type: object + properties: + airplus: + description: >- + All information related to airplus payment. `This is + required if airplus is selected as payment method.` + type: object + properties: + dbi: + title: OrderCreateDbiInput + description: >- + Descriptive billing information(dbi) details to pass + to AirPlus. + type: object + properties: + accounting_code: + description: >- + Accounting code to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + accounting_unit: + description: >- + Accounting unit to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + cost_centre: + description: >- + Cost centre to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + department_code: + description: >- + Department code to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + employee_number: + description: >- + Employee number to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + internal_account: + description: >- + Internal account to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + order_number: + description: >- + Order number to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + project_number: + description: >- + Project number to pass in descriptive billing + information. + type: string + minLength: 1 + maxLength: 17 + number: + description: 12 digit Airplus Number. + type: string + required: + - number + business_information: + title: OrderCreateBusinessInformationInput + description: >- + All business related information for billing and + authorisation form. This must be included for the + payments that require authorisation form. + type: object + properties: + authorisation_form: + title: OrderCreateAuthorisationFormInput + description: >- + Information that is relevant for generating an + authorisation form. + type: object + properties: + chargeable_items: + description: >- + Items which can be charged using a provided + virtual credit card. + type: array + items: + type: string + enum: + - alcohol + - breakfast + - food_beverage + - internet + - parking + - phone + - taxes + billing: + title: OrderCreateBillingInput + description: All information to be used in the invoice. + type: object + properties: + address: + title: OrderCreateBusinessAddressInput + description: The address to bill this reservation + type: object + properties: + address_line: + description: The details of this address. + type: string + city: + description: The city for this address. + type: string + country: + description: The country for this address. + type: string + pattern: ^[a-z]{2}$ + example: nl + post_code: + description: Post code for this address. + type: string + email: + description: Email to send the invoice to. + type: string + vat: + description: VAT number to be used in the invoice. + type: string + required: + - email + - vat + company: + description: >- + Company that will issue an authorisation form for + the virtual credit card and used in the invoice. + type: string + required: + - company + card: + title: OrderCreateCardInput + description: Card information for executing the payment. + type: object + properties: + authentication: + title: OrderCreateCardAuthenticationInput + description: >- + Card authentication information for executing the + payment. + type: object + properties: + riskified: + title: OrderCreateRiskifiedInput + description: >- + Riskified information for external fraud + verification. + type: object + properties: + ip_address: + description: The booker's IP address. + type: string + format: ipv4 + session_id: + description: >- + Riskified provided session_id for external + fraud verification. + type: string + required: + - ip_address + - session_id + sca_exemption: + description: >- + The type of SCA exemption to be applied to the + payment. + type: string + enum: + - moto + - virtual + 3d_secure: + title: OrderCreate3dSecureInput + description: >- + 3-factor authentication information for the + card. + type: object + properties: + authentication_value: + description: >- + Cardholder Authentication Verification + Value. + type: string + cavv: + deprecated: true + description: Deprecated. Do not use + type: string + eci: + description: The electronic commerce indicator. + type: string + transaction: + description: >- + The unique ID assigned by the DS to identify + a single transaction. + type: string + required: + - authentication_value + - eci + - transaction + cardholder: + description: Name of the cardholder. + type: string + cvc: + description: >- + 3 or 4 digits card validation code (CVC) of this + card. + type: string + expiry_date: + description: 'Expiry date of the card. Format: YYYY-MM' + type: string + number: + description: Number of the card. + type: string + required: + - cardholder + - cvc + - expiry_date + - number + include_receipt: + description: >- + This is used to determine whether to include payment + `receipt_url` in the response or not. + type: boolean + method: + description: The payment method to be used for this order. + type: string + enum: + - airplus + - card + - wallet + timing: + description: Information about when to execute the payment. + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + required: + - timing + required: + - booker + - order_token + - payment + example: + accommodation: + label: Sample label + products: + - id: '333' + bed_configuration: '123456' + guests: + - email: test.name@booking.com + name: Test Name + remarks: + estimated_arrival_time: + hour: 12 + special_requests: We will need an extra cot. + booker: + address: + address_line: Road-1, house-2 + city: Amsterdam + country: nl + post_code: '11111' + company: Booking B.V + email: test.name@booking.com + language: en-gb + name: + first_name: Test + last_name: Name + telephone: '12345678' + order_token: sample-token + payment: + card: + cardholder: Test Name + cvc: '111' + expiry_date: 2030-10 + number: '23333333333333' + include_receipt: true + method: card + timing: pay_at_the_property + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrderCreateOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: OrderCreateDataOutput + type: object + properties: + accommodation: + title: OrderCreateAccommodationOutput + description: All accommodation related information for this order. + type: object + properties: + order: + description: ID for this accommodation order. + type: string + pincode: + description: Pincode for this accommodation order. + type: string + reservation: + description: Reservation ID for this accommodation order. + type: integer + format: int64 + third_party_inventory: + title: >- + Third party inventory related information for the + created order. This field is only available for + third party inventory orders. + type: object + properties: + checkin_number: + description: >- + The number required at the time of check-in. + It allows guests to confirm their order at the + accommodation. + type: string + example: '473026811' + confirmation_number: + description: >- + The confirmation number, when used in + conjunction with the pincode, helps verify the + customer's order and facilitates efficient + support during inquiries or troubleshooting. + type: string + example: '12365478936925814787' + payment: + title: OrderCreatePaymentOutput + description: All payment related information for this order. + type: object + properties: + authorisation_form_url: + description: >- + Link to a virtual credit card''s authorisation + form, valid for 7 minutes from issue. `This will + only the added if the request has + authorisation_form.` + type: string + format: uri + example: >- + https://secure-admin.booking.com/airplus_auth_form_pdf.html?token=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lang=en + receipt_url: + description: >- + Link to the payment receipt of the order. `This + will only be added if include_receipt is true.` + type: string + format: uri + example: >- + https://secure.booking.com/payment_receipt.html?bn=0000000000&pincode=0000&lang=en + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + accommodation: + order: '509430129718799' + pincode: '0000' + reservation: 12345678 + third_party_inventory: + checkin_number: '123456789' + confirmation_number: '12345678912345678912' + payment: + receipt_url: >- + https://secure.booking.com/payment_receipt.html?bn=0000000000&pincode=0000&lang=en + /orders/details: + post: + summary: Orders details + description: >- + This endpoint returns basic information for orders filtered according to + the input. + operationId: /orders/details + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Orders + requestBody: + content: + application/json: + schema: + oneOf: + - title: InputByUpdated + type: object + properties: + updated: + title: OrderDetailsDatetimeFilterInput + description: >- + Filtering orders by time range on basis of order + "created" or "updated" time. Maximum time range is 7 + days (1 week). + type: object + properties: + from: + description: >- + ISO 8601 timestamp in UTC, which indicates the + timestamp from which you want to filter orders from + (inclusive). The value should be within last 1 year. + type: string + format: date-time + to: + description: >- + ISO 8601 timestamp in UTC, which indicates the + timestamp till which you want to filter orders to + (inclusive). It has to be greater than or equal to + "from". + type: string + format: date-time + required: + - from + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - updated + - currency + - title: InputByCreated + type: object + properties: + created: + title: OrderDetailsDatetimeFilterInput + description: >- + Filtering orders by time range on basis of order + "created" or "updated" time. Maximum time range is 7 + days (1 week). + type: object + properties: + from: + description: >- + ISO 8601 timestamp in UTC, which indicates the + timestamp from which you want to filter orders from + (inclusive). The value should be within last 1 year. + type: string + format: date-time + to: + description: >- + ISO 8601 timestamp in UTC, which indicates the + timestamp till which you want to filter orders to + (inclusive). It has to be greater than or equal to + "from". + type: string + format: date-time + required: + - from + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - created + - currency + - title: InputByStart + type: object + properties: + start: + title: OrderDetailsDateFilterInput + description: >- + Filter orders by date range, covering the "start" and + "end" date. The maximum date range is up to 7 days (1 + week). + type: object + properties: + from: + description: >- + ISO 8601 date in "YYYY-MM-DD" format. It indicates + from which date you want to filter the orders. You + can filter orders up to 1 year in the past and 500 + days in the future. + type: string + format: date + example: '2024-06-01' + to: + description: >- + ISO 8601 date in "YYYY-MM-DD" format. It indicates + until which date you want to filter the orders to + (inclusive). It has to be greater than or equal to + "from". It uses "from" value as default. + type: string + format: date + example: '2024-06-03' + required: + - from + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - start + - currency + - title: InputByEnd + type: object + properties: + end: + title: OrderDetailsDateFilterInput + description: >- + Filter orders by date range, covering the "start" and + "end" date. The maximum date range is up to 7 days (1 + week). + type: object + properties: + from: + description: >- + ISO 8601 date in "YYYY-MM-DD" format. It indicates + from which date you want to filter the orders. You + can filter orders up to 1 year in the past and 500 + days in the future. + type: string + format: date + example: '2024-06-01' + to: + description: >- + ISO 8601 date in "YYYY-MM-DD" format. It indicates + until which date you want to filter the orders to + (inclusive). It has to be greater than or equal to + "from". It uses "from" value as default. + type: string + format: date + example: '2024-06-03' + required: + - from + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - end + - currency + - title: InputByOrders + type: object + properties: + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + orders: + description: List of order IDs for which details should be returned. + type: array + items: + description: Order ID for which details should be returned. + type: string + maxItems: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - orders + - currency + - title: InputByReservations + type: object + properties: + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + reservations: + description: >- + List of reservation IDs for which details should be + returned. + type: array + items: + type: string + maxItems: 100 + sort: + title: OrderDetailsSortInput + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - created + - updated + default: created + direction: + description: >- + The direction you wish for your sort.by parameter to + be sorted in. + type: string + enum: + - ascending + - descending + default: descending + required: + - by + - direction + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + services: + description: Filter orders by included services. + type: array + items: + type: string + enum: + - accommodations + - cars + - flights + required: + - reservations + - currency + - title: InputByPage + type: object + properties: + page: + description: >- + Pagination token used to retrieve the next page of + results. Obtained from `next_page`. + type: string + extras: + description: >- + Input parameter to request for additional information + about this order. + type: array + items: + type: string + enum: + - payment + required: + - page + example: + created: + from: '2025-07-28T02:00:00+00:00' + to: '2025-07-28T02:00:00+00:00' + currency: EUR + maximum_results: 20 + sort: + by: updated + direction: descending + extras: + - payment + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrderDetailsOutput + type: object + properties: + data: + type: array + items: + title: OrderDetailsDataOutput + description: All details for this order. + type: object + properties: + id: + description: The id for this order. + type: string + accommodations: + title: OrderDetailsAccommodationsOutput + type: object + properties: + inventory: + title: InventoryOutput + type: object + properties: + third_party: + type: boolean + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company + and "false" otherwise. + type: + description: >- + Type of inventory - either net or sell + rates. + type: string + enum: + - net + - sell + reservation: + description: >- + This is the reservation id for the accommodation + in this order. + type: integer + format: int64 + affiliate: + description: The affiliate id used for this order. + type: integer + booker: + title: OrderDetailsBookerOutput + description: The booker's information. + type: object + properties: + address: + title: OrderDetailsAddressOutput + description: >- + The booker's address for showing the best price + for that user and obeying laws regarding the + display of taxes and fees. + type: object + properties: + city: + description: The city for this address. + type: + - string + - 'null' + country: + description: The country for this address. + type: + - string + - 'null' + email: + description: The booker's email address. + type: + - string + - 'null' + language: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human + language or dialect. **Note:** Demand API only + accepts lowercase for the language codes. + Examples: "nl" for Dutch/Nederlands or "en-us" + for English (US). To retrieve the full list of + supported languages, call the + `/common/languages` endpoint in the same Demand + API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + name: + title: OrderDetailsBookerNameOutput + description: The name of the booker. + type: object + properties: + first_name: + type: + - string + - 'null' + last_name: + type: + - string + - 'null' + platform: + description: >- + The booker platform for showing the platform + based deals and prices. + type: string + enum: + - app + - desktop + - mobile_browser + - tablet + - unknown + telephone: + description: The booker's telephone number. + type: string + nullable: true + travel_purpose: + description: The travel purpose of the booker. + type: string + enum: + - business + - leisure + - unknown + cars: + title: OrderDetailsCarsOutput + type: object + properties: + reservation: + description: >- + This is the reservation id for the car in this + order. + type: integer + format: int64 + created: + description: Order creation time. + type: string + format: date-time + commission: + title: OrderDetailsCommissionOutput + description: >- + Commission details for the partner for a given + order. + type: object + properties: + actual_amount: + description: >- + For accommodation: This is the final commission + for this order (`null` if value is not yet + available). For other travel services: It + represents the estimated commission before + billing and the final commission after billing. + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + estimated_amount: + description: >- + Estimated commission amount for this order. For + accommodations, it will be `null` if the final + commission amount is available. + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + currency: + description: >- + Input currency used in "commission" and "price" + output fields. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + flights: + title: OrderDetailsFlightsOutput + type: object + properties: + reservation: + description: >- + This is the reservation id for flight in this + order. + type: integer + format: int64 + loyalty_reward: + nullable: true + description: >- + Details of the loyalty rewards associated with this + order. + type: array + items: + title: OrderDetailsLoyaltyRewardOutput + type: object + properties: + amount: + description: >- + Reward amount, in the units of the specified + reward type (such as cash, mile, point, etc.). + type: number + format: double + currency: + description: Currency used for reward calculation. + nullable: true + type: string + pattern: ^[A-Z]{3}$ + example: EUR + eligible: + description: Whether the order is eligible for the reward. + type: boolean + fulfillment_at: + description: >- + Date and time at which the reward should be + fulfilled. + type: string + format: date + fulfillment_by: + description: Mode of fulfillment of the reward. + type: string + enum: + - partner + - booking.com + loyalty_data: + description: >- + Loyalty data associated with this loyalty + reward used to fulfill reward. + type: array + items: + title: OrderDetailsLoyaltyDataOutput + type: object + properties: + name: + description: Name of the loyalty data. + type: string + value: + description: Value of the loyalty data. + type: string + nullable: true + type: + description: Type of reward. + type: string + enum: + - cash + - mile + - point + - voucher + - voucher_money + - voucher_subscription + - voucher_percentage + payment: + title: OrderDetailsPaymentOutput + description: The payment details of this order. + type: object + properties: + accommodations: + title: OrderDetailsAccommodationPaymentOutput + description: >- + The accommodation specific payment details of + this order. + type: object + properties: + authorisation_form: + description: Link to the authorisation form of the order. + type: string + format: uri + example: >- + https://secure-admin.booking.com/airplus_auth_form_pdf.html?token=AAAA&lang=en-us + nullable: true + receipt_url: + description: >- + Link to the payment receipt of the order. + `This will only be added if the payment is + already charged.` + type: string + format: uri + example: >- + https://secure.booking.com/payment_receipt.html?bn=0000000000&pincode=0000&lang=en + nullable: true + reservation: + description: Reservation ID for this accommodation order. + type: integer + format: int64 + nullable: true + method: + description: The payment method of this order. + type: string + enum: + - airplus + - card + - wallet + paid: + description: The paid transactions for this order. + nullable: true + type: array + items: + title: OrderDetailsPaymentTransactionOutput + type: object + properties: + amount: + description: Amount of the transaction. + type: number + at: + description: Time of the transaction. + type: string + format: date-time + transaction_currency: + description: >- + Currency in which the transaction took + place. + type: string + pending: + description: The pending transactions for this order. + nullable: true + type: array + items: + title: OrderDetailsPaymentTransactionOutput + type: object + properties: + amount: + description: Amount of the transaction. + type: number + at: + description: Time of the transaction. + type: string + format: date-time + transaction_currency: + description: >- + Currency in which the transaction took + place. + type: string + timing: + description: The payment timing of this order. + type: string + enum: + - pay_at_the_property + - pay_online_later + - pay_online_now + price: + title: OrderDetailsPriceOutput + description: The price components of this order. + type: object + properties: + commissionable: + description: >- + The commissionable price. Order price on which + commission amount is calculated. + nullable: true + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: The total price. Includes all extra charges. + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + status: + description: Status of this order. + type: string + enum: + - booked + - cancelled + - cancelled_by_accommodation + - cancelled_by_guest + - no_show + - stayed + updated: + description: Time the order was last updated. + type: string + format: date-time + metadata: + title: MetadataOutput + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: string + nullable: true + total_results: + description: The total number of results available. + type: integer + minimum: 0 + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: '509430129718799' + accommodations: + inventory: + third_party: false + type: sell + reservation: 12345677 + affiliate: 111111 + booker: + address: + city: Amsterdam + country: nl + email: johndoe@booking.com + language: en-gb + name: + first_name: john + last_name: doe + platform: mobile_browser + telephone: '+100000000' + travel_purpose: business + commission: + actual_amount: 17.5 + estimated_amount: null + created: '2025-07-28T02:00:00+00:00' + currency: EUR + flights: null + loyalty_reward: + - amount: 15 + currency: USD + eligible: true + fulfillment_at: '2025-02-10' + fulfillment_by: partner + loyalty_data: + - name: Email Id + value: john_doe@booking.com + - name: Loyalty ID + value: '10101010' + type: point + price: + commissionable: 160 + total: 170.01 + status: booked + updated: '2025-07-28T02:00:00+00:00' + metadata: + next_page: null + total_results: 1 + /orders/details/accommodations: + post: + summary: Orders with accommodation details + description: >- + This endpoint returns all information for given accommodation orders, + sorted by `bookingDate` in descending order + operationId: /orders/details/accommodations + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Orders + requestBody: + content: + application/json: + schema: + oneOf: + - title: AccommodationsDetailsInputByOrders + type: object + properties: + orders: + description: List of order IDs for which details should be returned. + type: array + items: + description: Order ID for which details should be returned. + type: string + maxItems: 100 + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Input parameter to request for additional information + about the accommodation order. It should be passed as a + JSON array with one or more items. + type: array + items: + type: string + enum: + - accommodation_details + - policies + - extra_charges + language: + description: >- + Language in which translation should be provided. The + default language is from settings + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + required: + - orders + - title: AccommodationsDetailsInputByReservations + type: object + properties: + reservations: + type: array + items: + description: >- + Accommodation reservation id for which details have to + be returned. + type: integer + format: int64 + maxItems: 100 + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Input parameter to request for additional information + about the accommodation order. It should be passed as a + JSON array with one or more items. + type: array + items: + type: string + enum: + - accommodation_details + - policies + - extra_charges + language: + description: >- + Language in which translation should be provided. The + default language is from settings + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + required: + - reservations + example: + currency: USD + extras: + - policies + - extra_charges + reservations: + - 2321873123 + - 4666773123 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrdersDetailsAccommodationsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: OrdersDetailsAccommodationsOutput + description: >- + Object containing all the information related to + accommodation order. + type: object + properties: + id: + description: Order ID for this accommodation order. + type: string + accommodation: + description: Hotel ID for this accommodation order. + type: integer + accommodation_details: + title: OrdersAccommodationDetailsOutput + description: >- + Accommodation details for this accommodation order + (via 'extras=accommodation_details'). + type: object + properties: + email: + description: Accommodation email. + type: string + location: + title: AccommodationLocationOutput + description: Accommodation location. + type: object + properties: + address: + description: Accommodation address. + type: string + city: + description: Accommodation city_id. + type: number + coordinates: + title: AccommodationCoordinatesOutput + description: Accommodation coordinates. + type: object + properties: + latitude: + description: Accommodation latitude coordinate. + type: number + longitude: + description: Accommodation longitude coordinate. + type: number + country: + description: Accommodation country. + type: string + pattern: ^[a-z]{2}$ + example: nl + post_code: + description: Accommodation post code. + type: string + name: + description: Accommodation name. + type: string + telephone: + description: Accommodation telephone. + type: string + accommodation_order_references: + description: >- + List of additional accommodation order references + generated by the accommodation. + type: array + items: + type: string + booker: + title: OrderDetailsBookerOutput + description: The booker's information. + type: object + properties: + external_account: + description: >- + This is a unique identifier that represents the + account provided by the partner in Booking.com + settings. This field is used to link a specific + accommodation order to the corresponding account + so is possible to accurately allocate loyalty + points or other benefits in the partner's + loyalty and rewards programs. + type: string + platform: + description: >- + The booker platform for showing the platform + based deals and prices. + type: string + enum: + - app + - desktop + - mobile_browser + - tablet + - unknown + cancellation_details: + title: OrderCancellationDetailsOutput + description: >- + Fee charged for cancellation and the datetime at + which the cancellation occurred. (If not cancelled, + value is null). + type: object + properties: + at: + description: Cancellation datetime. + type: string + format: date-time + fee: + description: Cancellation fee. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + original_total_price: + description: >- + The total amount that would have been charged if + this order had not been cancelled. Includes all + extra charges. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + checkin: + description: The checkin date of this accommodation order. + type: string + format: date + checkout: + description: The checkout date of this accommodation order. + type: string + format: date + commission: + title: OrderCommissionOutput + description: >- + Commission details for the partner for this + accommodation order. + type: object + properties: + actual_amount: + description: >- + Actual commission amount for this accommodation + order (`null` if value is not yet available). + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + actual_percentage: + description: >- + Actual commission percentage for this + accommodation order (`null` if value is not yet + available). + type: number + format: double + nullable: true + estimated_amount: + description: >- + Estimated commission amount for this + accommodation order (`null` if the actual amount + is given). + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + credit_slip: + description: '**DEPRECATED**, please use ''credit_slip_number''.' + type: integer + format: int64 + deprecated: true + credit_slip_number: + description: >- + The financial document issued by Booking.com to + partners, detailing the payout amount and the + associated transaction information. It serves as a + formal record of the payment, ensuring transparency + and facilitating accurate financial tracking for + both parties. + type: string + nullable: true + currency: + title: OrderCurrencyOutput + description: >- + Accommodation and booker currencies (booker will be + `null`, if the request did not specify the + currency). + type: object + properties: + accommodation: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + booker: + nullable: true + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + inventory: + title: InventoryOutput + type: object + properties: + third_party: + type: boolean + description: >- + Boolean value is "true" if the product is + facilitated by a Booking.com partner company and + "false" otherwise. + type: + description: Type of inventory - either net or sell rates. + type: string + enum: + - net + - sell + key_collection_information: + type: array + items: + title: AccommodationsKeyCollectionInformationOutput + type: object + properties: + additional_instructions: + description: >- + Free-text instructions that provide additional + context or details about the key collection or + check-in process, such as access codes, entry + procedures, or contact information. + type: string + alternate_location: + title: AlternateLocationOutput + description: >- + This is the alternate location where the key + for this accommodation property can be + collected. It is provided if the key is not + available at the accommodation property itself + but instead at another designated location. + type: object + properties: + address: + type: string + city: + type: string + postal_code: + type: string + checkin_method: + description: >- + An enumeration that describes the check-in + process and key collection method. This is + typically applicable to non-hotel + accommodations (such as houses or apartments) + that do not have a 24-hour front desk. + type: string + enum: + - door_code + - lock_box + - reception + - secret_spot + - someone_will_meet + - unknown + key_location: + description: >- + Location of the key to access this + accommodation property. + type: string + enum: + - key_location_at_the_property + - key_location_different_place + - unknown + label: + description: >- + The label created while booking given accommodation + order. + type: string + nullable: true + pin_code: + description: The pin code of this accommodation order. + type: string + price: + title: AccommodationReservationPriceOutput + description: The price components of this accommodation order. + type: object + properties: + commissionable: + description: >- + The commissionable price. Reservation price on + which commission amount is calculated. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: The total price. Includes all extra charges. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + products: + type: array + items: + title: OrdersDetailsAccommodationsProductsOutput + description: The returned information of the product reserved. + type: object + properties: + allocation: + title: OrdersDetailsAccommodationsPropertiesOutput + description: >- + The allocation of guests, adults and children + for this product. + type: object + properties: + guests: + description: >- + The number of guests reserved for this + product. + type: integer + minimum: 1 + adults: + description: >- + The number of adults reserved for this + product. + type: integer + minimum: 1 + nullable: true + children: + description: >- + The list of ages of all children reserved + for this product. + type: array + items: + description: The age of a child + type: integer + maximum: 17 + nullable: true + bundle: + title: BundlePostBookOutput + type: object + description: >- + A bundle attached to the reservation that + includes information about the value-added + service in the specified language. + properties: + id: + type: integer + description: Bundle identifier + value_adds: + type: array + items: + title: ValueAddPostBookOutput + type: object + description: >- + Value-added service with its type and + descriptive text localised in specified + language. + properties: + type: + description: >- + Identifies the type of value-added + benefit included in the bundle, such as + complimentary services, monetary + credits, percentage discounts, or + experiential amenities. Enum values + encode how the benefit is applied, + including time scope (per day or per + stay) and unit scope (per room or per + adult). + type: string + enum: + - parking + - food_drink_credit_per_day_per_room + - food_drink_credit_per_day_per_adult + - property_credit_per_day_per_room + - food_drink_credit_per_stay_per_adult + - food_drink_credit_per_stay_per_room + - property_credit_per_day_per_adult + - property_credit_per_stay_per_adult + - property_credit_per_stay_per_room + - food_drink_discount + - property_discount + - early_checkin + - late_checkout + - late_checkin + - spa_daily + - spa_hourly + - spa_massage + - high_speed_internet + - airport_transfer + - safari_game_drive + - safari_walk + - pets_stay + - bottle_of_wine + - bottle_of_champagne + - park_sleep_fly + description: + type: array + description: >- + Translated descriptive text in the + requested language. + items: + type: string + guests: + description: The guest details for this product. + type: array + items: + title: GuestOutput + type: object + properties: + email: + description: The email address of the guest. + type: string + nullable: true + name: + description: The name of the guest. + type: string + policies: + title: AccommodationDetailsProductPoliciesOutput + description: >- + The policies for this product. Requires + `{"extras":["policies"]}`. + type: object + properties: + cancellation: + nullable: true + description: >- + The cancellation policy schedule for this + product. + type: array + items: + title: >- + AccommodationsProductDetailedCancellationPolicyMultiCurrency + type: object + properties: + from: + description: >- + The time from which this cancellation + fee applies. `now` means from booking + time. + oneOf: + - type: string + format: date-time + - type: string + pattern: now + - type: 'null' + price: + description: The cancellation fee. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + meal_plan: + title: AccommodationsProductMealPlanPolicy + description: The meal plan policy for this product. + type: object + properties: + meals: + description: The meals included in the meal plan. + type: array + items: + type: string + enum: + - breakfast + - dinner + - lunch + plan: + description: The meal plan included in this product. + type: string + enum: + - all_inclusive + - breakfast_included + - full_board + - half_board + - no_plan + smoking_preference: + description: Smoking Preference for this product. + type: string + enum: + - smoking + - non-smoking + nullable: true + price: + title: AccommodationDetailsProductPriceOutput + description: >- + The price components of this product. + 'extra_charges' are returned only when + explicitly requested (via + 'extras=extra_charges'). + type: object + properties: + base: + description: >- + The base price. It does not include any + extra charges. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + extra_charges: + title: OrdersProductExtraChargesOutput + description: >- + The charge breakdown. Includes taxes and + fees. + type: object + properties: + conditional: + description: >- + Charges that might apply under a + specific condition. + type: array + items: + title: >- + AccommodationsConditionalChargeMultiCurrency + description: >- + Charges that might apply under a + specific condition. + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + condition: + description: >- + A signed integer number that uniquely + identifies the condition ID. Find the + full list in the Pricing guidelines. + type: + - integer + - 'null' + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + non_conditional: + description: >- + All non-conditional charges that will + necessarily be paid + type: array + items: + title: AccommodationsChargeMultiCurrency + description: >- + All non-conditional charges that will + necessarily be paid + type: object + properties: + charge: + description: >- + A signed integer number that uniquely + identifies an accommodation charge type. + Examples of charges are: VAT, City Tax, + etc. The full list can be obtained by + calling accommodations/constants. + type: integer + minimum: 0 + mode: + description: >- + The mode of this charge. Determines how + the price is calculated. + type: string + enum: + - calculated_amount + - incalculable + - percentage + - per_day + - per_night + - per_person_per_day + - per_person_per_night + - per_person_per_stay + - per_stay + percentage: + description: >- + The percentage of 'base' that this + charge amounts to. Only applicable when + 'mode' is 'percentage'. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total_amount: + description: The total price for this charge. + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + unit_amount: + description: >- + The price per unit for this charge. Only + applicable when 'mode' is 'per_day', + 'per_night', 'per_person_per_day', + 'per_person_per_night', or + 'per_person_per_stay'. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + total: + description: >- + The total price. Includes all extra + charges. + nullable: true + title: AccommodationsPriceCurrency + type: object + properties: + accommodation_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + room: + description: The room id given to this product. + type: number + room_details: + title: RoomDetailsOutput + description: >- + Room details for this product (via + 'extras=accommodation_details'). + type: object + properties: + name: + description: The room name given to this product. + type: string + room_reservation: + description: The room reservation id given to this product. + type: number + status: + description: Status of the product. + type: string + enum: + - booked + - cancelled + - cancelled_by_accommodation + - cancelled_by_guest + - no_show + - stayed + reservation: + description: Reservation ID for given accommodation order. + type: integer + format: int64 + remarks: + description: Guest remarks added while creating order. + type: string + status: + description: Status of this accommodation order. + type: string + enum: + - booked + - cancelled + - cancelled_by_accommodation + - cancelled_by_guest + - no_show + - stayed + stay_probability: + description: >- + Score that predicts the likelihood of a traveller's + intent to stay, based on internal calculations. A + score of 0 indicates the highest likelihood of + cancellation, while a score of 1 represents the + highest likelihood of the traveller staying. Note: + This score may not always be available. + type: number + format: double + multipleOf: 0.01 + minimum: 0 + maximum: 1 + nullable: true + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: '509430129718799' + accommodation: 123456 + accommodation_details: + email: test_hotel@booking.com + location: + address: 111 Street Road + city: 20089219 + coordinates: + latitude: 11.923274 + longitude: -92.716188 + country: us + post_code: NY 1234 + name: Test Booking Hotel USA + telephone: '+19876543210' + accommodation_order_references: + - '12345' + - ABED2312 + booker: + external_account: 13610217 + platform: mobile + cancellation_details: + at: '2022-11-09T00:00:00+00:00' + fee: + accommodation_currency: 170.01 + booker_currency: 186.87 + original_total_price: + accommodation_currency: 170.01 + booker_currency: 186.87 + checkin: '2022-11-10' + checkout: '2022-11-10' + commission: + actual_amount: null + actual_percentage: null + estimated_amount: + accommodation_currency: 17.5 + booker_currency: 19.23 + credit_slip_number: hsnl1223445 + currency: + accommodation: EUR + booker: USD + inventory: + third_party: false + type: sell + key_collection_information: + - additional_instructions: >- + The keys are in a keybox located next to the front + door. + alternate_location: + address: abc + city: bdweb + postal_code: 1015XX + checkin_method: someone_will_meet + key_location: key_location_at_the_property + label: One123 + pin_code: '1234' + price: + commissionable: + accommodation_currency: 164.01 + booker_currency: 180.27 + total: + accommodation_currency: 170.01 + booker_currency: 186.87 + products: + - allocation: + adults: 2 + children: + - 3 + - 4 + - 5 + guests: 5 + guests: + - email: test.name@booking.com + name: Test Name + policies: + cancellation: + - from: null + price: + accommodation_currency: 170.01 + booker_currency: 186.87 + meal_plan: + meals: + - breakfast + plan: breakfast_included + smoking_preference: non-smoking + price: + base: + accommodation_currency: 170.01 + booker_currency: 186.87 + extra_charges: + conditional: [] + non_conditional: + - charge: 142 + mode: per_person_per_night + percentage: null + total_amount: + accommodation_currency: 6 + booker_currency: 6.6 + unit_amount: + accommodation_currency: 3 + booker_currency: 3.3 + - charge: 21 + mode: percentage + percentage: 9 + total_amount: + accommodation_currency: 14.04 + booker_currency: 15.43 + unit_amount: null + - charge: 22 + mode: percentage + percentage: 7 + total_amount: + accommodation_currency: 10.92 + booker_currency: 12 + unit_amount: null + total: + accommodation_currency: 200.97 + booker_currency: 220.9 + room: 12345 + room_details: + name: Double Deluxe Room + room_reservation: 1234567890 + status: booked + remarks: We will need an extra cot. Need room on higher floor + reservation: 12345678 + status: booked + stay_probability: 0.12 + /orders/details/cars: + post: + summary: Orders with car details + description: >- + This endpoint returns car order details, sorted by `bookingDate` in + descending order + operationId: /orders/details/cars + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Orders + requestBody: + content: + application/json: + schema: + oneOf: + - title: CarsDetailsInputByOrders + type: object + properties: + orders: + description: List of order IDs for which details should be returned. + type: array + items: + description: Order ID for which details should be returned. + type: string + maxItems: 100 + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Optional extra information groups that the user can + request. It should be passed as a JSON array with one or + more items. + type: array + items: + type: string + enum: + - policies + required: + - orders + - title: CarsDetailsInputByReservations + type: object + properties: + reservations: + description: >- + List of reservation IDs for which details should be + returned. + type: array + items: + description: Order ID for which details should be returned. + type: string + maxItems: 100 + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full + list can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extras: + description: >- + Optional extra information groups that the user can + request. It should be passed as a JSON array with one or + more items. + type: array + items: + type: string + enum: + - policies + required: + - reservations + example: + currency: USD + extras: + - policies + orders: + - '123456789' + - '098765432' + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrdersDetailsCarsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + title: OrdersDetailsCarsOutput + description: >- + Object containing all the information related to car + order. + type: object + properties: + id: + description: Order ID for this car order. + type: string + affiliate: + description: The affiliate ID used for this order. + type: number + commission: + title: OrderCommissionOutput + description: >- + Commission details for the partner for this car + order. + type: object + properties: + actual_amount: + description: >- + Actual commission amount for this car order + (`null` if value is not yet available). + nullable: true + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + actual_percentage: + description: >- + Actual commission percentage for this car order + (`null` if value is not yet available). + type: number + format: double + nullable: true + estimated_amount: + description: >- + Estimated commission amount for this car order + (`null` if the actual amount is given). + nullable: true + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + currency: + title: OrderCurrencyOutput + description: >- + Depot and booker currencies (booker will be `null`, + if the request did not specify the currency). + type: object + properties: + depot: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + booker: + nullable: true + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + dropoff: + description: Drop-off depot location and time. + type: object + properties: + datetime: + description: >- + Pickup/drop-off date and time. The specific time + will only be available if the requester has + access to personal information. Otherwise, it + will be set to 00:00:00. + example: '2023-11-01T11:05:00+00:00' + format: date-time + type: string + label: + description: Identifier associated with the car booking. + type: string + nullable: true + pickup: + description: Pick up depot location and time. + type: object + properties: + datetime: + description: >- + Pickup/drop-off date and time. The specific time + will only be available if the requester has + access to personal information. Otherwise, it + will be set to 00:00:00. + example: '2023-11-01T11:05:00+00:00' + format: date-time + type: string + price: + title: CarReservationPriceOutput + description: The price breakdown for this car order. + type: object + properties: + commissionable: + description: >- + The commissionable price, representing the car + rental cost used to calculate the commission + amount. + nullable: true + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: The total price, including all extra charges. + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + nullable: true + products: + type: array + items: + title: OrdersDetailsCarsProductsOutput + description: The returned information of the product reserved. + type: object + properties: + car: + description: Related car id + type: integer + minimum: 1 + policies: + description: The policies that apply to this product. + type: object + properties: + payment: + description: >- + The payment policy that applies to this + product. + type: object + properties: + timing: + description: >- + The applied payment timing. For example + 'pay_now'. + type: string + enum: + - pay_now + - pay_local + - unknown + required: + - timing + price: + title: CarDetailsProductPriceOutput + description: >- + Detailed breakdown of the product's price + components. + type: object + properties: + base: + description: >- + The base price. This does not include any + extra charges. + nullable: true + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: >- + The total price including any extra + charges. + nullable: true + title: CarsPriceCurrency + type: object + properties: + depot_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + booker_currency: + type: number + format: double + multipleOf: 0.01 + exclusiveMinimum: 0 + status: + description: Status of the product. + type: string + enum: + - booked + - cancelled + - cancelled_by_accommodation + - cancelled_by_guest + - no_show + - stayed + reservation: + description: >- + This is the reservation id for the car in this + order. + type: integer + format: int64 + status: + description: Status of this car order. + type: string + enum: + - booked + - cancelled + - cancelled_by_accommodation + - cancelled_by_guest + - no_show + - stayed + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: '123456789' + affiliate: 1234567 + commission: + actual_amount: + depot_currency: 45.5 + booker_currency: 66.34 + actual_percentage: 0.25 + estimated_amount: + depot_currency: 45.5 + booker_currency: 66.34 + currency: + depot: EUR + booker: USD + dropoff: + date: '2025-10-18T00:00:00' + label: One123 + pickup: + date: '2025-10-15T00:00:00' + price: + commissionable: + depot_currency: 170.01 + booker_currency: 186.87 + total: + depot_currency: 170.01 + booker_currency: 186.87 + products: + - policies: + payment: + timing: pay_now + price: + base: + depot_currency: 170.01 + booker_currency: 186.87 + total: + depot_currency: 170.01 + booker_currency: 186.87 + status: booked + status: booked + /orders/details/flights: + post: + summary: Orders with flight details + description: >- + Use this endpoint to retrieve detailed information for one or more + flight orders. - You can request car order details either by **order + ID** or by **reservation ID**. - The response includes all relevant + information for each order, such as booking and cancellation details, + commission, pricing, and optional extras (for example, policies). + Results are sorted by `bookingDate` in descending order, with the most + recently booked orders listed first. It returns structured order data, + including pricing, itinerary segments with IATA airport codes, etc. +

This endpoint is ideal for:

- Displaying flight + booking details in traveller dashboards or confirmation pages.
- + Generating post-booking communications and invoices.
- Performing + reporting or reconciliation tasks that require accurate itinerary and + pricing data. + operationId: /orders/details/flights + parameters: + - in: header + name: X-Affiliate-Id + schema: + type: integer + required: true + description: Include here your Affiliate identifier number + tags: + - Orders + requestBody: + content: + application/json: + schema: + title: FlightsDetailsInput + type: object + properties: + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + oneOf: + - title: FlightsDetailsInputByOrders + properties: + orders: + description: >- + List of order IDs for which details should be returned. + Mutually exclusive with 'reservations'. + type: array + items: + type: string + description: Flight order id for which details have to be returned. + maxItems: 100 + required: + - orders + example: + currency: EUR + orders: + - '1234567890123456' + - '9876543210987654' + - title: FlightsDetailsInputByReservations + properties: + reservations: + description: >- + List of reservation IDs for which details should be + returned. Mutually exclusive with 'orders'. + type: array + items: + type: string + description: >- + Flight reservation id for which details have to be + returned. + maxItems: 100 + required: + - reservations + example: + currency: EUR + reservations: + - '2321873123' + - '4666773123' + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrdersDetailsFlightsOutput + type: object + properties: + data: + type: array + items: + title: FlightsOutput + type: object + properties: + id: + description: Order id + type: string + reservation: + description: >- + This is the reservation id for the travel service in + this order. + type: string + currency: + title: CurrencyOutput + type: object + properties: + booker_currency: + description: The currency of the booker. + type: string + order_currency: + description: The currency in which the order was created. + type: string + itineraries: + type: array + items: + title: ItineraryOutput + type: object + properties: + arrival: + description: Arrival itinerary. + title: ItineraryPoint + type: object + properties: + airport: + description: >- + A three-letter code that uniquely + identifies an airport as defined by the + International Air Transport Association + (IATA). The full list can be obtained by + calling + [common/locations/airports](#/common/locations/airports). + pattern: ^[A-Z]{3}$ + type: string + date_time: + description: Date time of the itinerary. + type: string + format: date-time + departure: + description: Departure itinerary. + title: ItineraryPoint + type: object + properties: + airport: + description: >- + A three-letter code that uniquely + identifies an airport as defined by the + International Air Transport Association + (IATA). The full list can be obtained by + calling + [common/locations/airports](#/common/locations/airports). + pattern: ^[A-Z]{3}$ + type: string + date_time: + description: Date time of the itinerary. + type: string + format: date-time + label: + description: Identifier associated with the order. + type: string + price: + title: PriceOutput + type: object + properties: + booker_currency: + description: The price in the currency of the booker + type: number + format: double + order_currency: + description: >- + The price in the currency in which order was + created + type: number + format: double + status: + type: string + enum: + - booked + - cancelled + - unknown + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + example: + data: + - id: ORDER_ID + reservation: RESERVATION_ID + currency: + booker: EUR + order: USD + itineraries: + - departure: + airport: CAI + date_time: '2024-03-01T07:00:00+00:00' + arrival: + airport: LXR + date_time: '2024-03-01T08:10:00+00:00' + label: SAMPLE LABEL + price: + order_currency: 212.86 + booker_currency: 197.87 + status: booked + /orders/modify: + post: + summary: Modify an order + description: > + Use this endpoint to modify certain aspects of an accommodation order, + such as credit card details, checkin/checkout dates, and room + configurations (guest allocation, guest names, and smoking + preferences). + - See the [Orders modification guide](/demand/docs/orders-api/order-modify) for examples and best practices. + operationId: /orders/modify + tags: + - Orders + requestBody: + content: + application/json: + schema: + oneOf: + - title: AccommodationModification + type: object + properties: + order: + type: string + description: Order ID to be modified + modification: + type: object + properties: + accommodation: + type: object + properties: + reservation: + type: integer + description: Reservation ID + change: + oneOf: + - title: DateChange + type: object + properties: + checkin: + type: string + format: date + description: New checkin date + checkout: + type: string + format: date + description: New checkout date + required: + - checkin + - checkout + - title: RoomChange + type: object + properties: + room_reservation: + type: integer + format: int64 + description: Room reservation ID + allocation: + type: object + properties: + number_of_adults: + type: integer + guests: + description: Guest information for the room. + type: array + items: + type: object + properties: + name: + type: string + smoking_preference: + type: string + enum: + - no_preference + - non_smoking + - smoking + type: + description: Type of the accommodation change + type: string + enum: + - dates + - room + required: + - reservation + - type + - change + required: + - accommodation + required: + - order + - modification + - title: PaymentModification + type: object + properties: + order: + type: string + description: Order ID to be modified + modification: + type: object + properties: + payment: + type: object + properties: + change: + type: object + properties: + cardholder: + type: string + description: Cardholder name + cvc: + type: string + description: >- + A 3 or 4 digit Card Verification Code (CVC) + associated with the used card + expiry_date: + type: string + format: YYYY-MM + description: Card expiry date + number: + type: string + description: Card number + required: + - cardholder + - cvc + - expiry_date + - number + type: + description: Type of the payment change + type: string + enum: + - card + required: + - type + - change + required: + - payment + required: + - order + - modification + responses: + '200': + description: Successful modification + content: + application/json: + schema: + oneOf: + - title: AccommodationModificationResponse + type: object + properties: + modification: + type: object + properties: + accommodation: + type: object + properties: + new_price: + description: New price to be paid after the modification + type: number + format: double + status: + description: Status for this modification request. + type: string + enum: + - successful + - failed + - title: PaymentModificationResponse + type: object + properties: + modifications: + type: object + properties: + payment: + type: object + properties: + status: + description: Status for this modification request. + type: string + enum: + - successful + - failed + /orders/cancel: + post: + summary: Cancel an order + description: >- + Use this endpoint to process an order cancellation. Refer to the + [Cancellations guide](/demand/docs/orders-api/cancel-order) for + instructions, tips and examples. + operationId: /orders/cancel + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Orders + requestBody: + content: + application/json: + schema: + title: OrdersCancelInput + type: object + properties: + order: + description: ID of the order to cancel. + type: string + reason: + description: The reason for cancelling this order. + type: string + request_property_approval: + description: >- + (accommodations only) If the reservation has a cancellation + fee, request the property to waive the fee and cancel for + free. Subject to approval by the property. + type: string + required: + - order + - reason + example: + order: '509430129718799' + reason: I would like to book another property instead of this one. + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: OrdersCancelOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: OrdersCancelDataOutput + type: object + properties: + status: + description: Status for this cancellation request. + type: string + enum: + - successful + - failed + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + status: successful + /cars/search: + post: + description: >- + Use this endpoint to retrieve the available car rentals matching the + search criteria. + summary: Search car rentals + operationId: /search + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + type: object + properties: + booker: + description: Defines the booker context. + type: object + properties: + country: + description: >- + The booker country for showing the best price for that + user and obeying laws regarding the display of taxes and + fees. + type: string + pattern: ^[a-z]{2}$ + example: nl + required: + - country + currency: + description: >- + A three-letter code that uniquely identifies a monetary + currency as defined by the ISO 4217 standard. The full list + can be obtained by calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + driver: + description: Defines the driver context. + type: object + properties: + age: + description: >- + Driver age. Affect the availability and price of the + products. + type: integer + minimum: 18 + maximum: 99 + required: + - age + filters: + description: >- + Defines the filtering criteria for refining the request + results. It allows you to specify various parameters to + narrow down the available car rental options based on + specific attributes. + type: object + properties: + air_conditioning: + description: >- + Filters the results to include car rentals with or + without air conditioning. Setting this value to true + will only return vehicles with air conditioning, while + false will exclude them. + type: boolean + car_categories: + description: Filters the result based on the selected car category. + items: + oneOf: + - const: carrier + description: >- + Vans or minivans designed for carrying larger + groups or luggage. + - const: estate + description: >- + Station wagons or estate cars offering extra + luggage space. + - const: large + description: >- + Large vehicles offering ample interior space and + comfort. + - const: medium + description: >- + Mid-sized vehicles offering a balance of comfort + and fuel efficiency. + - const: premium + description: High-end or luxury vehicles with premium features. + - const: small + description: >- + Compact cars ideal for city driving and short + distances. + - const: suvs + description: >- + Sport Utility Vehicles offering higher ground + clearance and versatility. + depot_location_type: + description: >- + Indicates the specific type of location where the car + rental depot is situated. This helps you accurately + inform travellers about the nature of the pick-up + point—whether it's located inside an airport terminal, + at a train station, in a downtown area, or elsewhere. + This field is optional and may be null if the location + type is not defined. + items: + oneOf: + - const: in_terminal + description: >- + Depot is located inside the airport terminal + building. + - const: car_rental_centre + description: >- + Depot is located in a dedicated car rental centre + on or near airport grounds. + - const: outside_terminal + description: >- + Depot is outside the terminal area, usually a + short walk or drive away. + - const: airport_hotel + description: Depot is located at or inside an airport hotel. + - const: shuttle_bus + description: >- + Depot requires a shuttle bus transfer from the + airport or another meeting point. + - const: meet_greet + description: >- + A rental agent meets the traveller in person at an + agreed pick-up point (e.g., arrivals hall). + - const: trainstation + description: Depot is located in or near a train station. + - const: downtown + description: Depot is located in a central/downtown city area. + mileage_type: + description: >- + Filters the results based on the mileage type associated + with the rental vehicle + type: string + enum: + - limited + - unlimited + number_of_seats: + description: >- + Filters the results based on the number of seats in the + vehicle. This allows you to specify a vehicle that can + accommodate a specific number of passengers. + type: integer + supplier_ids: + description: >- + Filters the results based on the supplier ID of the + vehicle. This allows you to retrieve vehicles from + specific suppliers. A maximum of 10 supplier IDs can be + provided. + type: array + items: + description: Supplier id. + type: integer + transmission_type: + description: >- + Filters the results based on the transmission type of + the vehicle. + type: string + enum: + - automatic + - manual + maximum_results: + default: 100 + description: The maximum number of results to return per page. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 500 + language: + description: >- + Effects on the selected language of the target website after + redirection by provided url. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + payment: + description: >- + Payment-related input filters that allow you to narrow down + car search results based on the payment timing options. + type: object + properties: + timings: + description: >- + Filters the results to include only car rentals that + offer the specified payment timings. Use this parameter + to search for cars based on the timing of payment (e.g., + payment upfront, partial payment, or payment at the + depot). + type: array + items: + type: string + enum: + - pay_now + - part_pay + - pay_local + route: + description: Defines the route context. + type: object + properties: + dropoff: + description: Drop off location and time. + type: object + properties: + datetime: + description: Pick up / drop off datetime. + example: '2025-11-10T11:05:00' + type: string + pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$ + location: + description: Pick up / drop off location. + oneOf: + - title: Aeroport + description: >- + Defines location of the related route point by + airport. + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies + an airport as defined by the International + Air Transport Association (IATA). The full + list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + - description: >- + Defines location of the related route point by + coordinates. + title: Coordinates + type: object + properties: + coordinates: + description: >- + Defines the geographic coordinates of the + searched location. + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + - description: >- + Defines location of the related route point by + city. + title: City + type: object + properties: + city: + description: >- + A signed integer number that uniquely + identifies a city. The full list can be + obtained by calling common/locations/cities. + type: integer + required: + - datetime + - location + pickup: + description: Pick up location and time. + type: object + properties: + datetime: + description: Pick up / drop off datetime. + example: '2025-11-05T11:05:00' + type: string + pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$ + location: + description: Pick up / drop off location. + oneOf: + - description: >- + Defines location of the related route point by + airport. + type: object + properties: + airport: + description: >- + A three-letter code that uniquely identifies + an airport as defined by the International + Air Transport Association (IATA). The full + list can be obtained by calling common/locations/airports. + type: string + pattern: ^[A-Z]{3}$ + example: AMS + - description: >- + Defines location of the related route point by + coordinates. + type: object + properties: + coordinates: + description: >- + Defines the geographic coordinates of the + searched location. + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + - description: >- + Defines location of the related route point by + city. + type: object + properties: + city: + description: >- + A signed integer number that uniquely + identifies a city. The full list can be + obtained by calling common/locations/cities. + type: integer + required: + - datetime + - location + required: + - dropoff + - pickup + sort: + description: The sorting parameters for the response. + type: object + properties: + by: + description: The way to sort your results. + type: string + enum: + - distance + - price + - review_score + direction: + description: >- + The direction you wish for your sort.by parameter to be + sorted in. + type: string + enum: + - ascending + - descending + required: + - booker + - currency + - driver + - route + examples: + searchByAirport: + summary: Search example by airport. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + route: + dropoff: + datetime: '2025-11-10T11:05:00' + location: + airport: AMS + pickup: + datetime: '2025-11-05T11:05:00' + location: + airport: AMS + searchByCoordinatesWithResponseLimit: + summary: >- + Search example by coordinates and max response limit up to 100 + products. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + route: + dropoff: + datetime: '2025-11-10T11:05:00' + location: + coordinates: + latitude: 52.309456 + longitude: 4.762266 + pickup: + datetime: '2025-11-05T11:05:00' + location: + coordinates: + latitude: 52.309456 + longitude: 4.762266 + maximum_results: 100 + searchByCityIdWithSorting: + summary: Search example by city id, filters and sorting by price. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + filters: + transmission_type: automatic + mileage_type: limited + depot_location_type: in_terminal + route: + dropoff: + datetime: '2025-11-10T11:05:00' + location: + city: -2140479 + pickup: + datetime: '2025-11-05T11:05:00' + location: + city: -2140479 + sort: + by: price + direction: descending + filterbypayment: + summary: Search by payment timing. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + route: + dropoff: + datetime: '2025-11-10T11:05:00' + location: + city: -2140479 + pickup: + datetime: '2025-11-05T11:05:00' + location: + city: -2140479 + payment: + timings: pay_now + filterbydepotlocation: + summary: Filter results by depot location. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + route: + dropoff: + datetime: '2025-11-10T11:05:00' + location: + city: -2140479 + pickup: + datetime: '2025-11-05T11:05:00' + location: + city: -2140479 + filters: + depot_location_type: in_terminal + multiplefilters: + summary: Use multiple filters in one request. + value: + booker: + country: nl + currency: EUR + driver: + age: 36 + route: + dropoff: + datetime: '2025-11-12T10:00:00' + location: + city: -2140479 + pickup: + datetime: '2025-11-01T10:00:00' + location: + city: -2140479 + filters: + depot_location_type: car_rental_centre + number_of_seats: 7 + air_conditioning: true + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + description: Detailed information about car rental product. + type: object + properties: + car: + description: Related car id + type: integer + minimum: 1 + deal: + title: Deal + description: This specifies the deal tagging for the product. + type: + - object + - 'null' + properties: + discount_percentage: + description: Discount percentage of the applied deals. + type: integer + minimum: 1 + public_price: + description: >- + Original price of this product, before applying + any discounts. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + tags: + description: The tags of all the applied deals. + type: array + items: + type: string + enum: + - black_friday + - getaway_deal + - mobile_rate + policies: + description: The policies that apply to this product. + type: object + properties: + cancellation: + description: >- + The cancellation policy that applies to this + product. + type: object + properties: + details: + description: >- + Provides the policy details if the + cancellation is free. For example: + 1. duration='PT48H' and context=before_pickup means 'Free cancellation is available up to 48 hrs before pick up'. + 2. duration='P7D' and context=within_given_time_period_of_booking means 'Free cancellation is available within 7 days of booking' + type: + - object + - 'null' + properties: + context: + description: >- + The context in which the cancellation + policy applies. For example + 'before_pickup' + type: string + enum: + - before_pickup + - within_given_time_period_of_booking + duration: + description: >- + The duration until which the + cancellation is free. This is in + ISO-8601/Duration format. + type: string + pattern: >- + ^P(?:\dY)?(?:\dM)?(?:\dD)?(?:T(?:\dH)?(?:\dM)?(?:\dS)?)?$ + type: + description: >- + The type of cancellation present. For + example 'free_cancellation' or + 'non_refundable'. + type: string + enum: + - free_cancellation + - non_refundable + damage_excess: + description: >- + The maximum amount a traveller may be charged + for damages to the car during the rental period, + as specified by the rental agreement. + type: + - number + - 'null' + format: double + deposit: + description: >- + The amount of money that will be temporarily + pre-authorised or blocked on the traveller’s + credit card at the rental location as a security + deposit, to cover potential damage or extra + charges. + type: + - number + - 'null' + format: double + insurance_package: + description: > + The supplier insurance package that applies to + this car rental product. Possible values: + - `basic`: No insurance is included. The traveller is usually required to purchase coverage at the rental counter. + - `inclusive`: Full protection is provided. Collision Damage Waiver (CDW) is included, limiting the traveller’s financial liability for damage. + - `zero_excess`: Partial protection is provided. CDW is included, but some coverage elements (e.g., theft protection) may not be included, so the traveller could still be liable for certain costs. + type: string + enum: + - basic + - inclusive + - zero_excess + fuel: + description: The fuel policy that applies to this product. + type: string + enum: + - return_same + - return_same_or_prepay_no_refunds + - return_same_preauth + - free_tank + - prepay_no_refunds + - prepay_part_refunds + - prepay_refunds + mileage: + description: The mileage policy that applies to this product. + type: object + properties: + distance: + description: >- + The maximal distance limit allowed for this + product before additional fees apply. + type: + - integer + - 'null' + minimum: 0 + distance_unit: + description: >- + The unit of measurement for the distance + limit. For example 'km' or 'miles'. + type: string + enum: + - kilometers + - miles + fee: + description: >- + The fee that must be paid if the distance + limit is exceeded. + type: + - number + - 'null' + format: double + type: + description: The type of mileage policy applied. + type: string + enum: + - limited + - unlimited + required: + - fee + - type + payment: + description: The payment policy that applies to this product. + type: object + properties: + timing: + description: >- + The applied payment timing. For example + 'pay_now'. + type: string + enum: + - pay_now + - part_pay + - pay_local + required: + - timing + theft_excess: + description: >- + The maximum amount a traveller may be charged in + the event of car theft during the rental period, + as outlined in the rental agreement. + type: + - number + - 'null' + format: double + price: + description: The price components of this product. + type: object + properties: + currency: + description: >- + A three-letter code that uniquely identifies a + monetary currency as defined by the ISO 4217 + standard. The full list can be obtained by + calling common/payments/currencies. + type: string + pattern: ^[A-Z]{3}$ + example: EUR + extra_charges: + title: CarsProductExtraCharges + description: >- + The charge breakdown. Includes taxes and fees + included in the drive away price. + type: array + items: + title: CarsCharge + description: >- + Defines the charge, including the type of + charge and its total amount. + type: object + properties: + charge: + description: The type of this charge. + type: string + enum: + - age_fee + - one_way_fee + total_amount: + description: The total price for this charge. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + total: + description: The total price. Includes all extra charges. + type: number + multipleOf: 0.01 + exclusiveMinimum: 0 + route: + description: >- + Defines the actual route associated with the + product. + type: object + properties: + dropoff: + description: Defines the product drop off route point. + type: object + properties: + depot: + description: Pick up / drop off depot. + type: integer + minimum: 1 + example: 5944 + pickup: + description: Defines the product pick up route point. + type: object + properties: + depot: + description: Pick up / drop off depot. + type: integer + minimum: 1 + example: 5944 + supplier: + description: Related supplier id. + type: integer + minimum: 1 + url: + description: Urls to the relevant pages. + type: object + properties: + app: + description: URL for the related page on Booking App. + type: string + format: uri + web: + description: URL for the related page on cars.booking.com. + type: string + format: uri + metadata: + title: MetadataOutput + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: + - string + - 'null' + total_results: + description: The total number of results available. + type: integer + minimum: 0 + search_token: + description: >- + Encoded string that must be passed in subsequent requests + to identify the context of the car search. Note: It is + specific to Car rentals and differs from other tokens used + in booking flows. + type: string + example: + request_id: 01h00fr9y7qkbxtc6kyv97j49z + data: + - car: 122655 + policies: + cancellation: + type: free_cancellation + details: + context: before_pickup + duration: P7D + damage_excess: 3000 + deposit: 1500 + insurance_package: basic + fuel: return_same + mileage: + distance: 200 + distance_unit: kilometers + fee: 12.54 + type: limited + payment: + timing: pay_now + theft_excess: 3000 + price: + total: '121.90' + currency: EUR + extra_charges: + - charge: age_fee + total_amount: 21.9 + - charge: one_way_fee + total_amount: 50 + route: + dropoff: + depot: 112314 + pickup: + depot: 112314 + supplier: 7455 + url: + app: booking://page + web: https://example.com + metadata: + next_page: >- + eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A + total_results: 122 + search_token: >- + eyJhbGciOiJIUzI1NiJ9.eyJwIjp7ImJvb2tlciI6eyJjb3VudHJ5IjoidXMifX0sImF1ZCI6Ii9ob3RlbHMvc2VhcmNoIiwiZXhwIjoxNzUwMDAwMDAwfQ.XYZ123AbcDefGHIjklMNOpqrsTUVwxYZ456789 + /cars/depots: + post: + description: >- + Use this endpoint to retrieve the list of all available car rental + depots. + summary: Depots + operationId: /depots + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + type: object + properties: + last_modified: + description: >- + The last modified date-time, only returns depots newer than + this timestamp. + example: '2025-11-01T11:05:00+00:00' + format: date-time + type: string + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + languages: + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands or + "en-us" for English (US). To retrieve the full list of + supported languages, call the `/common/languages` endpoint + in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + example: + last_modified: '2025-11-01T11:05:00+00:00' + maximum_results: 100 + languages: + - en-gb + - nl + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + description: All static information related to car rental depot. + properties: + id: + description: Unique depot's ID. + type: integer + minimum: 1 + example: 5944 + contact: + description: >- + Contact information of the depot. It can be `null` + if the data is missing. + type: object + properties: + email: + description: >- + Email address of the depot. It can be `null` if + the data is missing. + example: depot@test.booking.com + type: + - string + - 'null' + telephone: + description: >- + Telephone number of the depot. It can be `null` + if the data is missing. + example: '+31882847620' + type: + - string + - 'null' + city: + description: >- + A signed integer number that uniquely identifies a + city. You can see the full list of cities ids + calling common/locations/cities. + type: integer + example: -1471393 + drop_off: + description: Contains rented car drop off information. + properties: + instructions: + description: Drop off/pick up instructions. + title: TranslatedString + type: + - object + - 'null' + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + working_hours: + description: Depot's working hours. + patternProperties: + ^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$: + description: Day working hours. + items: + description: Describes depot working hours. + properties: + closing_time: + description: Depot's closing time + example: '21:00' + format: time + type: string + opening_time: + description: Depot's opening time. + example: '07:00' + format: time + type: string + type: object + type: array + type: + - object + - 'null' + type: object + location: + description: Depot location information. + properties: + address: + description: Depot address information. + example: 5 Aankomstpassage + type: + - string + - 'null' + airport: + description: Airport IATA code. + example: AMS + type: + - string + - 'null' + city: + description: >- + A signed integer number that uniquely identifies + a city. The full list can be obtained by calling + common/locations/cities. + type: integer + depot_location_type: + description: >- + Indicates the specific type of location where + the car rental depot is situated. This helps you + accurately inform travellers about the nature of + the pick-up point—whether it's located inside an + airport terminal, at a train station, in a + downtown area, or elsewhere. This field is + optional and may be null if the location type is + not defined. + type: string + enum: + - in_terminal + - car_rental_centre + - outside_terminal + - airport_hotel + - shuttle_bus + - meet_greet + - trainstation + - downtown + x-enum-descriptions: + - >- + Depot is located inside the airport terminal + building. + - >- + Depot is located in a dedicated car rental + centre on or near airport grounds. + - >- + Depot is outside the terminal area, usually a + short walk or drive away. + - >- + Depot is located at or inside an airport + hotel. + - >- + Depot requires a shuttle bus transfer from the + airport or another meeting point. + - >- + A rental agent meets the traveller in person + at an agreed pick-up point (e.g., arrivals + hall). + - Depot is located in or near a train station. + - >- + Depot is located in a central/downtown city + area. + nullable: true + coordinates: + title: Coordinates + type: object + properties: + latitude: + type: number + format: double + longitude: + type: number + format: double + country: + description: >- + A two-letter code that uniquely identifies a + country. This code is defined by the ISO 3166-1 + alpha-2 standard (ISO2) as described here: + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. + The full list can be obtained by calling common/locations/countries. + type: string + pattern: ^[a-z]{2}$ + example: nl + name: + description: Translated depot name. + example: Amsterdam Airport Schiphol - Terminal 3 + title: TranslatedString + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + post_code: + description: Depot post code + example: 1118 AX + type: string + type: object + pick_up: + description: Contains rented car pick up information. + properties: + instructions: + description: Drop off/pick up instructions. + title: TranslatedString + type: + - object + - 'null' + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + working_hours: + description: Depot's working hours. + patternProperties: + ^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$: + description: Day working hours. + items: + description: Describes depot working hours. + properties: + closing_time: + description: Depot's closing time + example: '21:00' + format: time + type: string + opening_time: + description: Depot's opening time. + example: '07:00' + format: time + type: string + type: object + type: array + type: object + type: object + services: + description: List of services provided by the depot. + type: array + items: + type: string + enum: + - shuttle + - meet_greet + - unknown + supplier: + description: Related supplier id + type: integer + minimum: 1 + ratings: + description: Number of reviews and average score for the depot. + type: + - object + - 'null' + properties: + number_of_reviews: + nullable: false + description: Number of validated reviews for this depot. + type: integer + minimum: 0 + score: + nullable: false + description: >- + A decimal number indicating the current review + score of this depot, in the range 1..10. + type: number + multipleOf: 0.1 + minimum: 1 + maximum: 10 + type: object + metadata: + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 5944 + contact: + email: depot@test.booking.com + telephone: '+31882847620' + city: '-1471393' + drop_off: + instructions: + en-gb: >- + The procedure for returning the vehicle will be + explained to you at the rental counter. + de: >- + De procedure voor het inleveren van de auto zal worden + toegelicht aan de balie. + working_hours: + monday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + tuesday: + - closing_time: '12:00:00' + opening_time: '07:00:00' + - closing_time: '21:00:00' + opening_time: '14:00:00' + wednesday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + thursday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + friday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + saturday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + sunday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + location: + address: 5 Aankomstpassage + airport: AMS + city: -2140479 + coordinates: + latitude: 52.309456 + longitude: 4.762266 + country: nl + depot_location_type: airport_hotel + name: + en-gb: Amsterdam Airport Schiphol - Terminal 3 + de: Amsterdam Luchthaven Schiphol - Terminal 3 + post_code: 1118 AX + pick_up: + instructions: + en-gb: '-' + de: '-' + working_hours: + monday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + tuesday: + - closing_time: '12:00:00' + opening_time: '07:00:00' + - closing_time: '21:00:00' + opening_time: '14:00:00' + wednesday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + thursday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + friday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + saturday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + sunday: + - closing_time: '21:00:00' + opening_time: '07:00:00' + services: + - shuttle + supplier: 47 + metadata: + next_page: null + /cars/depots/reviews/scores: + post: + description: >- + Use this endpoint to return the score breakdown for the specified depots + together with the overall number of reviews and score.

- + Please note that the **ratings score is based on all traveller traffic + across Booking.com/cars**, and may not necessarily reflect the + experience of your own customers.

- If you choose to display + or use these ratings, you are responsible for ensuring that your + travellers are properly informed about what these scores represent. + summary: Depot scores + operationId: /depots/reviews/scores + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + type: object + properties: + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + example: + maximum_results: 10 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + description: '' + type: object + properties: + id: + description: >- + Uniquely identifies a depot. The full list can be + obtained by calling [/cars/depots](#/cars/depots). + type: integer + minimum: 1 + example: 5944 + breakdown: + description: >- + Review scores breakdown for each criteria. List of + criteria includes: cleanliness, condition, + drop_off_speed, efficiency, expense, location, + pick_up_speed. + type: object + patternProperties: + ^(cleanliness|condition|drop_off_speed|friendliness|likeliness_rent_again|location|pick_up_speed|value_for_money)$: + type: object + properties: + score: + description: >- + A decimal number indicating the review score + of this criteria, in the range 1..10. + type: + - number + - 'null' + multipleOf: 0.1 + minimum: 1 + maximum: 10 + number_of_reviews: + description: Number of validated reviews for this depot. + type: + - integer + - 'null' + minimum: 0 + score: + description: >- + A decimal number indicating the current review score + of this depot, in the range 1..10. + type: + - number + - 'null' + multipleOf: 0.1 + minimum: 1 + maximum: 10 + metadata: + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 5944 + breakdown: + cleanliness: + score: 8.7 + condition: + score: 8.7 + drop_off_speed: + score: 8.7 + friendliness: + score: null + likeliness_rent_again: + score: 8.7 + location: + score: 8.7 + pick_up_speed: + score: 8.7 + value_for_money: + score: 8.7 + number_of_reviews: 105 + score: 9.1 + metadata: + next_page: null + /cars/details: + post: + description: >- + Use this endpoint to fetch car details like bag capacity, number of + doors, brand and model, etc. + summary: Car details + operationId: /details + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + type: object + properties: + last_modified: + description: >- + The last modified date-time, only returns depots newer than + this timestamp. The value should be within last 7 days + example: '2025-12-01T11:05:00+00:00' + format: date-time + type: string + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + example: + last_modified: '2025-12-01T11:05:00+00:00' + maximum_results: 100 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + description: All static information related to cars. + properties: + id: + description: Unique car's ID. + type: integer + minimum: 1 + capacity: + description: Car's capacity + type: object + properties: + bags: + description: Car's baggage capacity. + type: + - object + - 'null' + properties: + large: + description: Number of large bags. + type: number + minimum: 0 + small: + description: Number of small bags. + type: number + minimum: 0 + doors: + description: Number of doors in the car. + type: string + seats: + description: Number of seats in the car. + type: string + features: + description: List of possible car's features. + type: array + items: + type: string + enum: + - air_conditioning + - all_wheel_drive + image: + description: Car's image URL. + type: string + make: + description: Car's maker/brand. + type: string + model: + description: Car's model. + type: string + specification: + description: Car's specification. + properties: + code: + description: >- + Car's code in [ACRISS + Standard](https://www.acriss.org/car-codes/expanded-matrix/). + type: string + description: + description: >- + Car Description Based on [ACRISS Category and + Type](https://www.acriss.org/car-codes/expanded-matrix/). + type: string + fuel: + description: Car's fuel type. + type: string + enum: + - electric + - petrol + - plug_in_hybrid + - multi_fuel + - diesel + - hybrid + - lpg + - hydrogen + - ethanol + - unspecified + transmission: + description: Car's transmission. + type: string + enum: + - automatic + - manual + supplier: + description: Related supplier id. + type: integer + minimum: 1 + type: object + metadata: + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: + - string + - 'null' + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 37715 + capacity: + bags: + large: 1 + small: 1 + doors: 4/2 + seats: 4+2 + features: + - air_conditioning + - all_wheel_drive + image: https://example.com/image.jpg + make: hyundai + model: elantra + specification: + code: ECAR + description: economy + fuel: petrol + transmission: automatic + supplier: 423 + metadata: + next_page: null + /cars/suppliers: + post: + description: >- + Use this endpoint to fetch a list of car rental suppliers.
You can + use a supplier ID (or an array of them), to retrieve specific details. +
Alternatively, if you do not add any ID in the request, the + response will include all suppliers. + summary: Suppliers + operationId: /suppliers + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + type: object + properties: + maximum_results: + description: The maximum number of results to return. + type: integer + multipleOf: 10 + minimum: 10 + maximum: 100 + default: 100 + page: + description: >- + Pagination token used to retrieve the next page of results. + Obtained from `next_page`. + type: string + suppliers: + description: >- + Defines the suppliers that should be returned. Without it + all suppliers will be returned + type: array + items: + description: >- + Uniquely identifies a vehicle supplier. The full list can + be obtained by calling /cars/suppliers. + type: integer + minimum: 1 + maxItems: 100 + example: + suppliers: + - 62 + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: array + items: + description: All static information related to an vehicle supplier. + type: object + properties: + id: + description: >- + Uniquely identifies a vehicle supplier. The full + list can be obtained by calling /cars/suppliers. + type: integer + minimum: 1 + logo: + description: Supplier logo image URL. + type: string + format: uri + name: + description: Brand name of the vehicle supplier. + type: string + metadata: + title: MetadataOutput + description: Metadata about the request. + type: object + properties: + next_page: + description: >- + Indicates that more results are available. Use this + pagination token to retrieve the next page of results + (via parameter `page`). + type: + - string + - 'null' + total_results: + description: The total number of results available. + type: integer + minimum: 0 + example: + request_id: 01fr9ez700exycb98w90w5r9sh + data: + - id: 62 + name: Budget + logo: https://example.com/path_to_the_logo.jpeg + metadata: + next_page: null + total_results: 1 + /cars/constants: + post: + summary: Car constants + description: >- + This endpoint returns a list of relevant car constants names in the + specified languages. For example, calling with the parameters + {"languages":"en-us","fr"} will return the list in English (US) and + French. To retrieve the full list, make the request with an empty body. + operationId: /constants + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + tags: + - Cars + requestBody: + content: + application/json: + schema: + title: CarsConstantsInput + type: object + properties: + constants: + description: >- + A list of car rental constant types to filter the results + by. This allows you to narrow down the result based on + particular criteria, such as fuel_policy, payment_timings + etc. + type: array + items: + type: string + enum: + - depot_services + - fuel_policies + - fuel_types + - general + - payment_timings + - transmission + languages: + type: array + items: + description: >- + A [IETF language tag + code](https://en.wikipedia.org/wiki/IETF_language_tag) + that uniquely identifies a supported human language or + dialect. **Note:** Demand API only accepts lowercase for + the language codes. Examples: "nl" for Dutch/Nederlands or + "en-us" for English (US). To retrieve the full list of + supported languages, call the `/common/languages` endpoint + in the same Demand API version you are using. + type: string + pattern: ^[a-z]{2}(-[a-z]{2})?$ + example: en-us + default: + - en-gb + example: + languages: + - de + - en-gb + responses: + '200': + description: Successful response. + content: + application/json: + schema: + title: CarsConstantsOutput + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + title: ConstantsDataOutput + type: object + properties: + depot_services: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + fuel_policies: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + fuel_types: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + general: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + payment_timings: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + transmission: + title: CarsConstant + description: Id and translated names for the constant. + type: object + properties: + id: + type: string + name: + title: TranslatedString + description: A string localised in multiple languages. + type: object + patternProperties: + ^[a-z]{2}(-[a-z]{2})$: + description: The content localised in this language. + type: + - string + - 'null' + example: + request_id: 01jpvx9va93ghgwxq7zypagvdr + data: + depot_services: + - id: meet_greet + name: + de: Meet & Greet + en-gb: Meet & Greet + - id: shuttle + name: + de: Shuttlebus + en-gb: Shuttle Bus + fuel_policies: + - id: free_tank + name: + de: Kostenlose Tankfüllung + en-gb: Free Tank + - id: prepay_no_refunds + name: + de: Vorab-Einkauf + en-gb: Pre-Purchase + - id: prepay_part_refunds + name: + de: Vorab-Einkauf (Teilerstattung) + en-gb: Pre-purchase (partial refund) + - id: prepay_refunds + name: + de: Vorab-Einkauf + en-gb: Pre-Purchase + - id: return_same + name: + de: Gleiche Tankfüllung + en-gb: Like for like + fuel_types: + - id: electric + name: + de: Rein elektrisch + en-gb: Fully electric + - id: hybrid + name: + de: Hybrid + en-gb: Hybrid + - id: petrol + name: + de: Benzin + en-gb: Petrol + - id: plug_in_hybrid + name: + de: Plug-in-Hybrid + en-gb: Plug-in hybrid + general: + - id: air_conditioning + name: + de: Flughafen (im Terminal) + en-gb: Airport (in terminal) + - id: airport + name: + de: Klimaanlage + en-gb: Air Conditioning + - id: free_cancellation + name: + de: Kostenlose Stornierung + en-gb: Free cancellation + - id: kilometers + name: + de: km + en-gb: km + - id: limited + name: + de: Begrenzt + en-gb: Limited + - id: miles + name: + de: Meilen + en-gb: miles + - id: n_large_bags + name: + de: N große Koffer + en-gb: N Large bags + - id: n_small_bags + name: + de: N kleine Koffer + en-gb: N Small bags + payment_timings: + - id: part_pay + name: + de: Teils jetzt zahlen, teils später + en-gb: Pay part now, part later + - id: pay_now + name: + de: Jetzt zahlbar + en-gb: Pay now + transmission: + - id: automatic + name: + de: Automatik + en-gb: Automatic + - id: manual + name: + de: Schaltgetriebe + en-gb: Manual + /messages/send: + post: + summary: Send a message + description: > + Sends a message within a conversation. The message body supports plain + text. + + Optionally, attach a file by referencing a previously uploaded + attachment ID. + operationId: sendMessage + tags: + - Messages + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + required: true + content: + application/json: + schema: + title: SendMessageRequest + type: object + required: + - conversation + - content + - accommodation + properties: + conversation: + type: string + description: Unique identifier of the conversation. + accommodation: + type: string + description: Unique identifier of the property. + content: + type: string + description: The message text to send. + attachments: + type: array + items: + type: string + description: >- + Optional list of attachment IDs, if sending one or more + files. + example: + conversation: 8586a789-44f4-5521-9f27-f5efd097cba6 + accommodation: '6819547' + content: Hello, I'm your guest!. + attachments: + - c325f460-1dc6-11f0-80f0-8d0908786f77 + responses: + '200': + description: Message sent successfully. + content: + application/json: + schema: + type: object + properties: + request_id: + type: string + description: >- + Unique identifier for this request. Provide this ID when + contacting support. + data: + type: object + properties: + message: + type: string + description: Unique identifier for the sent message. + example: + request_id: cdb0b154-2eae-481b-8fee-fb2725296e1f + data: + message: 3164e570-19e0-11f0-baca-e5019c8df435 + /messages/conversations: + post: + summary: Retrieve a conversation + description: > + Retrieves a conversation accessible to the authenticated user, including + message history and participants. + operationId: retrieve-conversation + tags: + - Conversations + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + required: true + content: + application/json: + schema: + title: RetrieveConversationRequest + type: object + properties: + accommodation: + type: string + description: Unique identifier of the property. + required: + - accommodation + oneOf: + - required: + - reservation + title: InputByreservation + properties: + reservation: + type: string + description: Unique identifier of the reservation. + - required: + - conversation + title: InputByconversation + properties: + conversation: + type: string + description: Unique identifier of the conversation. + examples: + InputByconversation: + summary: >- + Retrieve conversation based on accommodation and conversation + ID. + value: + accommodation: '6819547' + conversation: c3cc6522-aa63-559d-99f1-94efdd527c3c + InputByreservation: + summary: >- + Retrieve conversation based on accommodation and reservation + ID. + value: + accommodation: '6819547' + reservation: '4338284887' + responses: + '200': + description: Conversation retrieved successfully. + content: + application/json: + schema: + type: object + properties: + request_id: + type: string + description: >- + Unique identifier for this request. Provide this ID when + contacting support. + data: + type: object + properties: + conversation: + type: object + properties: + id: + type: string + description: Unique identifier of the conversation. + reservation: + type: string + description: Unique identifier of the reservation. + messages: + type: array + description: List of messages in the conversation. + items: + type: object + properties: + id: + type: string + description: Unique identifier of the message. + sender: + type: string + description: Unique identifier of the sender. + reply_to: + type: string + description: >- + Message ID this message replies to (if + applicable). + content: + type: string + description: Message text content. + attachments: + type: array + items: + type: string + description: Attachment IDs included with the message. + timestamp: + type: string + format: date-time + description: >- + Timestamp in ISO 8601 format (UTC) when the + message was sent. + participants: + type: array + description: List of participants in the conversation. + items: + type: object + properties: + id: + type: string + description: Unique identifier of the participant. + metadata: + type: object + description: Additional participant metadata. + example: + request_id: 7889a8c0-aa43-494c-863d-72d2306849c1 + data: + conversation: + id: c3cc6522-aa63-559d-99f1-94efdd527c3c + reservation: '4338284887' + messages: + - id: af3d7fd0-1c50-11f0-81cd-6d243d208da3 + sender: 6c22a16d-a3bd-5f5b-82d9-ce1030f21b1f + reply_to: c3cc6522-aa63-559d-99f1-94efdd527c3c + content: >- + Thank you for choosing Demand API Messaging Test + Hotel. We are looking forward to your stay + attachments: [] + timestamp: '2025-04-18T12:28:51.149Z' + participants: + - id: 5dba2525-2c49-5d2c-91cc-7195526c0c7a + metadata: + type: guest + - id: 6c22a16d-a3bd-5f5b-82d9-ce1030f21b1f + metadata: + type: property + accommodation_id: '6819547' + /messages/latest: + post: + summary: Fetch latest messages + description: > + Retrieves up to **100 of the most recent messages** including messages + from both property and guest.
+ + + - Messages are returned in reverse chronological order (newest first). + + - Use this endpoint to sync message threads or poll for updates. + + + **Important:** To retrieve the latest messages, send an empty POST + request. Any content in the request body will be ignored. + operationId: fetchLatestMessages + tags: + - Messages + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + responses: + '200': + description: Latest messages fetched successfully. + content: + application/json: + schema: + type: object + properties: + request_id: + type: string + description: >- + Unique identifier for this request. Provide this ID when + contacting support. + data: + type: object + properties: + messages: + type: array + items: + type: object + properties: + message_id: + type: string + description: Unique identifier of the message. + reply_to: + type: + - string + - 'null' + description: >- + ID of the message this is replying to (if + applicable). + conversation: + type: object + properties: + id: + type: string + description: Unique identifier of the conversation. + accommodation: + type: string + description: Unique identifier of the property. + reservation: + type: string + description: Unique identifier of the reservation. + content: + type: string + description: Message text content. + sender: + type: object + properties: + participant_id: + type: string + description: >- + Unique identifier of the conversation + participant. + metadata: + type: object + description: Additional metadata about the sender. + attachments: + type: array + items: + type: string + description: Attachment IDs included with the message. + timestamp: + type: string + format: date-time + description: >- + Timestamp in ISO 8601 format (UTC) when the + message was sent. + example: + request_id: 0248d85a-17e0-44b3-a37c-7d4b5c03f58b + data: + messages: + - message_id: daca26da-4ce3-519d-b9eb-623eeb674800 + reply_to: null + conversation: + id: b2364f9b-6466-599a-a947-0d35cff4f492 + accommodation: '5589515' + reservation: '4439608993' + content: Hello Anne, welcome to CS Training Test Hotel... + sender: + participant_id: 930d9af8-2390-5e43-a4d7-235b52a30a14 + metadata: + type: property + name: CS Training Test Hotel Sloterdijk 10 + attachments: [] + timestamp: '2025-05-08T08:49:15.000Z' + /messages/latest/confirm: + post: + summary: Confirm message receipt + description: > + Confirms receipt of specified messages. + + This confirmation is required before receiving new messages from the + POST /messages/latest endpoint. + operationId: confirmMessageReceipt + tags: + - Messages + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + required: true + content: + application/json: + schema: + title: ConfirmMessageReceiptRequest + type: object + properties: + messages: + type: array + items: + type: string + description: Unique identifier of a message to confirm receipt of. + example: + messages: + - 8586a789-44f4-5521-9f27-f5efd097cba + /messages/attachments/upload: + post: + summary: Upload an attachment + description: > + Uploads a file to be used as a message attachment. + + The response includes an attachment ID to reference when sending + messages. + operationId: uploadAttachment + tags: + - Attachments + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + required: true + content: + application/json: + schema: + title: UploadAttachmentRequest + type: object + required: + - conversation + - accommodation + - file_size + - file_name + - file_type + - file_content + properties: + conversation: + type: string + description: Unique identifier of the conversation. + accommodation: + type: string + description: Unique identifier of the property. + file_size: + type: integer + description: Size of the file in bytes. + file_name: + type: string + description: Original file name including extension. + file_type: + type: string + description: MIME type of the file. + file_content: + type: string + description: Base64-encoded content of the file. + example: + accommodation: '6819547' + conversation: 8586a789-44f4-5521-9f27-f5efd097cba6 + file_size: 17580 + file_name: a3e062a0-3e6b-4592-9df2-64cf83688084.jpg + file_type: image/jpeg + file_content: /9j/4AAQSkZJRgABAQACWAJYAAD/2wCEAAgGBgc + /messages/attachments/download: + post: + summary: Download a message attachment + description: > + Retrieves a file that was attached to a message. The response includes + the file's content as a base64-encoded string. + operationId: downloadMessageAttachment + tags: + - Attachments + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + content: + application/json: + schema: + title: DownloadAttachmentRequest + type: object + required: + - conversation + - accommodation + - attachment + properties: + conversation: + type: string + description: >- + The unique identifier of the conversation that contains the + attachment. + accommodation: + type: string + description: >- + The unique identifier of the property where the conversation + occurred. + attachment: + type: string + description: The unique identifier of the attachment to download. + example: + conversation: 8586a789-44f4-5521-9f27-f5efd097cba6 + accommodation: '6819547' + attachment: 9635be40-1dc6-11f0-8893-0130f0cdef6d + responses: + '200': + description: Attachment successfully retrieved. + content: + application/json: + schema: + type: object + properties: + request_id: + type: string + description: >- + A unique ID for this request. Please include this when + contacting support. + data: + type: object + properties: + conversation: + type: string + description: The ID of the conversation the file belongs to. + file_content: + type: string + description: The base64-encoded content of the attachment. + example: + request_id: 773e2c0d-1ab3-449b-b88a-3d6b5ce09ae7 + data: + conversation: 8586a789-44f4-5521-9f27-f5efd097cba6 + file_content: /9j/4AAQSkZJRgABAQACWAJYAAD/2wCEAAgGBgc... + /messages/attachments/metadata: + post: + summary: Retrieve attachment metadata + description: > + Returns metadata for a file uploaded in a message, including its name, + type, and size. + operationId: getAttachmentMetadata + tags: + - Attachments + parameters: + - $ref: '#/components/parameters/AffiliateIdHeader' + requestBody: + content: + application/json: + schema: + title: AttachmentMetadataRequest + type: object + required: + - conversation + - accommodation + - attachment + properties: + conversation: + type: string + description: >- + The unique identifier of the conversation that includes the + attachment. + accommodation: + type: string + description: >- + The unique identifier of the property associated with the + conversation. + attachment: + type: string + description: >- + The unique identifier of the attachment whose metadata is + being requested. + example: + conversation: 8586a789-44f4-5521-9f27-f5efd097cba6 + accommodation: '6819547' + attachment: 9635be40-1dc6-11f0-8893-0130f0cdef6d + responses: + '200': + description: Successful response. + content: + application/json: + schema: + type: object + properties: + request_id: + description: >- + Uniquely identifies the request. Please provide this + identifier when contacting support. + type: string + data: + type: object + properties: + metadata: + type: object + properties: + file_size: + description: The size of the attachment (up to 1MB) + type: integer + file_name: + description: Original name of the file, including extension. + type: string + file_type: + description: MIME type of the file (e.g., image/jpeg). + type: string + example: + request_id: fec1a9bb-9c85-42fc-a109-3707e1ed4de7 + data: + metadata: + file_name: 1ce51916-d8de-4144-a4be-265ccae5df9d.jpg + file_type: image/jpeg + file_size: '92620' diff --git a/.vale/files.zip b/.vale/files.zip new file mode 100644 index 00000000000..85f819c1bf2 Binary files /dev/null and b/.vale/files.zip differ diff --git a/.vale/head-footer-code.1.5.7.zip b/.vale/head-footer-code.1.5.7.zip new file mode 100644 index 00000000000..75ac490a7c4 Binary files /dev/null and b/.vale/head-footer-code.1.5.7.zip differ diff --git a/.vale/index.html b/.vale/index.html new file mode 100644 index 00000000000..50cfcf75189 --- /dev/null +++ b/.vale/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + BnbAirBooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

BnbAirBooking

+

Undercutting the market. The cheapest hotel & vacation rentals worldwide.

+
+ +
+

Find Your Perfect Stay

+

Search millions of hotels and vacation rentals. We guarantee the lowest rates.

+
+ + +
+
+ +
+
+

💰 Cashback Rewards

+

Get up to 10% cash back on every booking. We pass our commission directly to you.

+
+
+

🤖 24/7 AI Support

+

Our adaptive AI problem-solving system resolves booking issues instantly, day or night.

+
+
+

🌍 Global Inventory

+

From boutique vacation rentals to 5-star hotels, access the world's largest inventory.

+
+
+

✅ Price Guarantee

+

Find a lower price elsewhere? We'll match it plus give you an extra 5% cashback.

+
+
+ +
+

Ready to Save on Your Next Trip?

+

Join thousands of travelers who save up to 10% with BnbAirBooking

+
+ + +
+
+ +
+

How BnbAirBooking Works

+

Watch our quick guide to start earning cashback on your bookings.

+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.vale/wordpress-seo.28.0.zip b/.vale/wordpress-seo.28.0.zip new file mode 100644 index 00000000000..1615dc33169 Binary files /dev/null and b/.vale/wordpress-seo.28.0.zip differ diff --git a/17681877080803_1607115 2.pdf b/17681877080803_1607115 2.pdf new file mode 100644 index 00000000000..01aa6c4b922 Binary files /dev/null and b/17681877080803_1607115 2.pdf differ diff --git a/Bnbairbooking b/Bnbairbooking new file mode 100644 index 00000000000..83c769efeca --- /dev/null +++ b/Bnbairbooking @@ -0,0 +1,112 @@ + + + + + + BnbAirBooking | Vacation Rentals + + + + + + +
+
+

BnbAirBooking

+

Find your perfect vacation rental.

+
+ +
+
Loading properties...
+
+
+ + + + \ No newline at end of file diff --git a/Bnbairbooking.txt b/Bnbairbooking.txt new file mode 100644 index 00000000000..46a8839980c --- /dev/null +++ b/Bnbairbooking.txt @@ -0,0 +1,89 @@ + + + + + + BnbAirBooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

BnbAirBooking

+

Undercutting the market. The cheapest hotel & vacation rentals worldwide.

+
+ +
+

Find Your Perfect Stay

+

Search millions of hotels and vacation rentals. We guarantee the lowest rates.

+
+ +
+ [ YOUR FREE AFFILIATE BOOKING WIDGET CODE GOES HERE ] +
+
+ +
+
+

💰 Cashback Rewards

+

Get up to 10% cash back on every booking. We pass our commission directly to you.

+
+
+

🤖 24/7 AI Support

+

Our adaptive AI problem-solving system resolves booking issues instantly, day or night.

+
+
+

🌍 Global Inventory

+

From boutique vacation rentals to 5-star hotels, access the world's largest inventory.

+
+
+ +
+

24/7 Video Customer Service

+

Watch our quick guide or speak with our AI support agent below.

+ + +
+ + + + + + + diff --git a/DRW_2024_CASH001CAFT024063_V1.pdf b/DRW_2024_CASH001CAFT024063_V1.pdf new file mode 100644 index 00000000000..f2b1d273f68 Binary files /dev/null and b/DRW_2024_CASH001CAFT024063_V1.pdf differ diff --git a/DS11-Complete.pdf b/DS11-Complete.pdf new file mode 100644 index 00000000000..d951b911746 Binary files /dev/null and b/DS11-Complete.pdf differ diff --git a/README 2.zip b/README 2.zip new file mode 100644 index 00000000000..857120f9eaf Binary files /dev/null and b/README 2.zip differ diff --git a/README.md b/README.md index ad4c495fb87..b45488a323c 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,29 @@ - - Visit Openverse.org - - -

- Project Board | - Community Site | - #openverse @ Slack | - Handbook | - Design Handbook | - Releases mockups | - Design Library -

- -

- Openverse is a search engine for openly-licensed media. -

- -# Openverse - -Openverse is a powerful search engine for GPL-compatible images, audio, and -more. Openverse is live at [openverse.org](https://openverse.org). - -- [Catalog](catalog/) | The Apache Airflow-powered system for downloading and - storing Openverse's metadata -- [Ingestion server](ingestion_server/) | The mechanism for refreshing the data - from the catalog to the API -- [API](api/) | The Django REST API for querying the database, used by the - frontend -- [Frontend](frontend/) | The public search engine at - [openverse.org](https://openverse.org), built with Vue and Nuxt -- [Automations](automations/) | Scripts used for various workflows around - Openverse repositories and processes -- [Utilities](utilities/) | Scripts or utilities which are useful across - multiple projects or don't necessarily fit into a specific project. - -This repository also contains the following directories. - -- [Brand](documentation/meta/brand/) | Brand assets for Openverse such as logo - and icon and guidelines for using these assets -- [Templates](templates/) | Jinja templates that can be rendered into common - scaffolding code for the project - -## Keep in touch - -You can keep in touch with the project via the following channels: - -- GitHub - - [Issues](https://github.com/WordPress/openverse/issues/) - - [PRs](https://github.com/WordPress/openverse/pulls/) - - [Discussions](https://github.com/WordPress/openverse/discussions/) - - [Project Board](https://github.com/orgs/WordPress/projects/75) -- [Community Site](https://make.wordpress.org/openverse/) -- #openverse channel in the - [Making WordPress Chat](https://make.wordpress.org/chat/) - - Weekly Development Chat ( - [Mondays @ 15:00 UTC](https://everytimezone.com/s/d2e71015)) - - Monthly Prioritisation Meeting (first Wednesday of every month @ 15:00 UTC) - -## Documentation - -To use the Openverse API, please refer to the -[API consumer documentation](https://api.openverse.org/v1/). - -## Contributing - -Pull requests are welcome! Feel free to -[join us on Slack](https://make.wordpress.org/chat/) and discuss the project -with the engineers and community members on #openverse. - -You are welcome to take any open issue in the tracker labelled -[`help wanted`](https://github.com/WordPress/openverse/labels/help%20wanted) or -[`good first issue`](https://github.com/WordPress/openverse/labels/good%20first%20issue); -**there's no need to ask for permission in advance**. Other issues are open for -contribution as well, but may be less accessible or well-defined in comparison -to those that are explicitly labelled. - -See the -[contribution guide](https://docs.openverse.org/general/contributing.html) for -details. - -## Acknowledgments - -Openverse, previously known as CC Search, was conceived and built at -[Creative Commons](https://creativecommons.org). We thank them for their -commitment to open source and openly licensed content, with particular thanks to -previous team members @ryanmerkley, @janetpkr, @lizadaly, @sebworks, @pa-w, -@kgodey, @annatuma, @mathemancer, @aldenstpage, @brenoferreira, and @sclachar, -along with their -[community of volunteers](https://opensource.creativecommons.org/community/community-team/). - -We would also like to thank our former maintainers @AetherUnbound, -@sarayourfriend, @stacimc and @zackkrida for their invaluable contributions to -Openverse, which have shaped the project and made it what it is today. +## Together streaming integration + +This repo includes a streaming AI assistant that uses the Together Python client as a backend model provider. + +How it works +- server/ai_stream.py calls Together's Python client in streaming mode and prints one JSON line per token. +- server/index.js spawns that Python script and proxies its stdout as Server-Sent Events (SSE) to /api/ai-chat-stream. +- The frontend (index.html) opens an EventSource to /api/ai-chat-stream and renders tokens as they arrive. + +Required secrets (add these to GitHub Secrets or your host environment): +- TOGETHER_API_KEY — API key for Together (used by ai_stream.py) +- MONGO_URI — MongoDB Atlas connection string +- STRIPE_SECRET_KEY — Stripe secret key (test & live as needed) +- STRIPE_PUBLISHABLE_KEY +- STRIPE_WEBHOOK_SECRET +- TRAVELPAYOUTS_TOKEN — TravelPayouts API token + +Docker notes +- The server Dockerfile now installs Python and the Together Python client. Build may take a bit longer on first run. + +Local testing +1. Add TOGETHER_API_KEY and other required env vars locally. +2. Start the server (recommended via Docker Compose): + docker-compose up --build +3. Visit http://localhost:3000 and use the AI Autopilot panel. + +Security notes +- Never expose TOGETHER_API_KEY or other secrets in client-side code. +- The SSE endpoint should be protected/rate-limited in production to avoid abuse and cost spikes. diff --git a/ai-request-logs.asset.php b/ai-request-logs.asset.php new file mode 100644 index 00000000000..710e44e83d2 --- /dev/null +++ b/ai-request-logs.asset.php @@ -0,0 +1 @@ + array('react', 'react-dom', 'react-jsx-runtime', 'wp-a11y', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-notices', 'wp-primitives', 'wp-private-apis', 'wp-warning'), 'version' => '525153e9d0197a1c2e61'); diff --git a/all_sites_for_account_2026-07-22T02_22_27.331Z.csv b/all_sites_for_account_2026-07-22T02_22_27.331Z.csv new file mode 100644 index 00000000000..3ab463583ec --- /dev/null +++ b/all_sites_for_account_2026-07-22T02_22_27.331Z.csv @@ -0,0 +1,30 @@ +name,requests +US,719 +NL,265 +DE,184 +T1,118 +SG,53 +FR,21 +UA,15 +LU,12 +GB,12 +CA,10 +BR,10 +IN,9 +JP,5 +PL,4 +ES,4 +IE,3 +BE,2 +CZ,2 +MA,2 +AU,2 +MY,2 +PT,2 +IT,1 +CH,1 +RU,1 +KR,1 +RO,1 +FI,1 +HK,1 \ No newline at end of file diff --git a/bandbairbooking.com.txt b/bandbairbooking.com.txt new file mode 100644 index 00000000000..9923bc058fc --- /dev/null +++ b/bandbairbooking.com.txt @@ -0,0 +1,50 @@ +;; +;; Domain: bandbairbooking.com. +;; Exported: 2026-07-31 11:31:13 +;; +;; This file is intended for use for informational and archival +;; purposes ONLY and MUST be edited before use on a production +;; DNS server. In particular, you must: +;; -- update the SOA record with the correct authoritative name server +;; -- update the SOA record with the contact e-mail address information +;; -- update the NS record(s) with the authoritative name servers for this domain. +;; +;; For further information, please consult the BIND documentation +;; located on the following website: +;; +;; http://www.isc.org/ +;; +;; And RFC 1035: +;; +;; http://www.ietf.org/rfc/rfc1035.txt +;; +;; Please note that we do NOT offer technical support for any use +;; of this zone data, the BIND name server, or any other third-party +;; DNS software. +;; +;; Use at your own risk. +;; SOA Record +bandbairbooking.com 3600 IN SOA amalia.ns.cloudflare.com. dns.cloudflare.com. 2053716407 10000 2400 604800 3600 + +;; NS Records +bandbairbooking.com. 86400 IN NS amalia.ns.cloudflare.com. +bandbairbooking.com. 86400 IN NS ernest.ns.cloudflare.com. + +;; A Records +bandbairbooking.com. 1 IN A 74.208.236.16 ; cf_tags=cf-proxied:true + +;; AAAA Records +bandbairbooking.com. 1 IN AAAA 2607:f1c0:100f:f000::200 ; cf_tags=cf-proxied:true + +;; CNAME Records +autodiscover.bandbairbooking.com. 1 IN CNAME adsredir.ionos.info. ; cf_tags=cf-proxied:true +_dmarc.bandbairbooking.com. 1 IN CNAME dmarc.ionos.com. ; cf_tags=cf-proxied:false +_domainconnect.bandbairbooking.com. 1 IN CNAME _domainconnect.ionos.com. ; cf_tags=cf-proxied:true + +;; MX Records +bandbairbooking.com. 1 IN MX 10 mx00.ionos.com. +bandbairbooking.com. 1 IN MX 10 mx01.ionos.com. + +;; TXT Records +bandbairbooking.com. 1 IN TXT "v=spf1 include:_spf-us.ionos.com ~all" +_dmarc.bandbairbooking.com. 1 IN TXT "^v=dmar..." diff --git a/bnbairbooking.com.txt b/bnbairbooking.com.txt new file mode 100644 index 00000000000..5804a44a3ff --- /dev/null +++ b/bnbairbooking.com.txt @@ -0,0 +1,31 @@ +;; +;; Domain: bnbairbooking.com. +;; Exported: 2026-07-22 03:56:44 +;; +;; This file is intended for use for informational and archival +;; purposes ONLY and MUST be edited before use on a production +;; DNS server. In particular, you must: +;; -- update the SOA record with the correct authoritative name server +;; -- update the SOA record with the contact e-mail address information +;; -- update the NS record(s) with the authoritative name servers for this domain. +;; +;; For further information, please consult the BIND documentation +;; located on the following website: +;; +;; http://www.isc.org/ +;; +;; And RFC 1035: +;; +;; http://www.ietf.org/rfc/rfc1035.txt +;; +;; Please note that we do NOT offer technical support for any use +;; of this zone data, the BIND name server, or any other third-party +;; DNS software. +;; +;; Use at your own risk. +;; SOA Record +bnbairbooking.com 3600 IN SOA amalia.ns.cloudflare.com. dns.cloudflare.com. 2053635920 10000 2400 604800 3600 + +;; NS Records +bnbairbooking.com. 86400 IN NS amalia.ns.cloudflare.com. +bnbairbooking.com. 86400 IN NS ernest.ns.cloudflare.com. diff --git a/bnbairbooking.pages.dev.txt b/bnbairbooking.pages.dev.txt new file mode 100644 index 00000000000..742f5ca98e1 --- /dev/null +++ b/bnbairbooking.pages.dev.txt @@ -0,0 +1,65 @@ + + + + + + Bnbairbooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

Bnbairbooking

+

Undercutting the market. The cheapest global vacation & hotel reservations.

+
+ +
+ +
+

🔍 Search & Book Instantly

+

Your Travelpayouts White-Label Search Widget will load here.

+

(Paste your Travelpayouts Widget Script in the code to activate)

+
+ +
+
+

💰 Cheapest Rates

+

We pass wholesale API rates directly to you, undercutting major platforms.

+
+
+

🤖 24/7 AI Support

+

Adaptive AI problem-solving with instant video escalation to our team.

+
+
+

📱 iPhone Optimized

+

Book, manage, and track your reservations seamlessly from any device.

+
+
+
+ + + + + + + + + + ◦ diff --git a/bnbairbooking.pages.dev.zip b/bnbairbooking.pages.dev.zip new file mode 100644 index 00000000000..75ac490a7c4 Binary files /dev/null and b/bnbairbooking.pages.dev.zip differ diff --git a/bnbairbooking.txt b/bnbairbooking.txt new file mode 100644 index 00000000000..9932010a920 --- /dev/null +++ b/bnbairbooking.txt @@ -0,0 +1,129 @@ + + + + + + Bnbairbooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

Bnbairbooking

+

Undercutting the market. The cheapest global vacation & hotel reservations.

+
+ +
+ +
+

🔍 Search & Book Instantly

+

Your Travelpayouts White-Label Search Widget will load here.

+

(Paste your Travelpayouts Widget Script in the code to activate)

+
+ +
+
+

💰 Cheapest Rates

+

We pass wholesale API rates directly to you, undercutting major platforms.

+
+
+

🤖 24/7 AI Support

+

Adaptive AI problem-solving with instant video escalation to our team.

+
+
+

📱 iPhone Optimized

+

Book, manage, and track your reservations seamlessly from any device.

+
+
+
+ + + + + + + + + + ◦ + + + + + + BnbAirBooking + + + + +
+
+

BnbAirBooking

+

Your perfect vacation rental and travel hub.

+
+ + +
+

🏡 Direct Vacation Rental

+

Book our exclusive properties directly with no hidden fees.

+
From $150.00 / night
+ Book Direct (Test Mode) +
+ + +
+

✈️ Search Flights & Hotels

+

Find the best deals on flights and hotels worldwide.

+ + Search Travel Deals +
+
+ + + + + + + + + + + diff --git a/checkra1n b/checkra1n new file mode 100644 index 00000000000..e6517389c04 Binary files /dev/null and b/checkra1n differ diff --git a/conclusion.html b/conclusion.html new file mode 100644 index 00000000000..3ce4346a575 --- /dev/null +++ b/conclusion.html @@ -0,0 +1,23 @@ + + + + + +
+

This package has installed:

+ +

Make sure that /usr/local/bin is in your $PATH.

+
+ + diff --git a/deploy_bandbairbooking.patch b/deploy_bandbairbooking.patch new file mode 100644 index 00000000000..d7505909dfe --- /dev/null +++ b/deploy_bandbairbooking.patch @@ -0,0 +1,193 @@ +*** Begin Patch +*** Add File: env.example ++DOMAIN=bandbairbooking.com ++TRAVELPAYOUTS_PUB_ID=REPLACE_ME ++BOOKING_COM_AFFILIATE_ID=REPLACE_ME ++GOOGLE_DRIVE_URL=REPLACE_ME ++NETLIFY_AUTH_TOKEN=REPLACE_ME ++NETLIFY_SITE_ID=REPLACE_ME ++VERCEL_TOKEN=REPLACE_ME ++VERCEL_PROJECT_ID=REPLACE_ME ++DOCKER_REGISTRY_USER=REPLACE_ME ++DOCKER_REGISTRY_PASS=REPLACE_ME ++AWS_ACCESS_KEY_ID=REPLACE_ME ++AWS_SECRET_ACCESS_KEY=REPLACE_ME ++AWS_REGION=us-east-1 ++ +*** End Patch +*** Begin Patch +*** Add File: CNAME ++bandbairbooking.com ++ +*** End Patch +*** Begin Patch +*** Add File: docker-compose.yml ++version: '3.8' ++services: ++ frontend: ++ build: ++ context: ./frontend ++ dockerfile: Dockerfile ++ ports: ++ - "3000:3000" ++ environment: ++ - NODE_ENV=development ++ - REACT_APP_DOMAIN=${DOMAIN} ++ - REACT_APP_TRAVELPAYOUTS_PUB_ID=${TRAVELPAYOUTS_PUB_ID} ++ - REACT_APP_BOOKING_COM_AFFILIATE_ID=${BOOKING_COM_AFFILIATE_ID} ++ volumes: ++ - ./frontend:/app ++ api: ++ build: ++ context: ./api ++ dockerfile: Dockerfile ++ ports: ++ - "8000:8000" ++ environment: ++ - DJANGO_SETTINGS_MODULE=api.settings ++ - DOMAIN=${DOMAIN} ++ volumes: ++ - ./api:/app ++ ingestion_server: ++ build: ++ context: ./ingestion_server ++ dockerfile: Dockerfile ++ environment: ++ - DOMAIN=${DOMAIN} ++ volumes: ++ - ./ingestion_server:/app ++ redis: ++ image: redis:6 ++ ports: ++ - "6379:6379" ++ +*** End Patch +*** Begin Patch +*** Add File: .github/workflows/ci-deploy.yml ++name: CI / Build ++ ++on: ++ push: ++ branches: [ main, deploy/bandbairbooking ] ++ pull_request: ++ ++jobs: ++ build-frontend: ++ runs-on: ubuntu-latest ++ steps: ++ - uses: actions/checkout@v4 ++ - name: Use Node.js ++ uses: actions/setup-node@v4 ++ with: ++ node-version: '18' ++ - name: Install pnpm ++ run: npm install -g pnpm ++ - name: Install frontend deps ++ run: | ++ cd frontend || exit 0 ++ pnpm install ++ - name: Build frontend ++ run: | ++ cd frontend || exit 0 ++ pnpm run build || echo "No build script found" ++ ++ build-api: ++ runs-on: ubuntu-latest ++ needs: build-frontend ++ steps: ++ - uses: actions/checkout@v4 ++ - name: Build API (Docker) ++ run: | ++ if [ -f api/Dockerfile ]; then ++ docker build -t openverse-api ./api ++ else ++ echo "No api/Dockerfile found — skipping docker build" ++ fi ++ ++# Optional deploy steps (Netlify, Vercel, Docker registry, AWS) can be added below. ++ +*** End Patch +*** Begin Patch +*** Add File: frontend/src/components/AffiliateLinks.js ++// Minimal Affiliate helper — generic JS module ++// Place this file at frontend/src/components/AffiliateLinks.js (adjust to your frontend framework) ++ ++export function bookingLink({hotelId, label = 'Book on Booking.com'}) { ++ const affiliateId = process.env.REACT_APP_BOOKING_COM_AFFILIATE_ID || ''; ++ const base = `https://www.booking.com/hotel/${hotelId}.html`; ++ if (!affiliateId) return base; ++ return `${base}?aid=${affiliateId}`; ++} ++ ++export function injectTravelpayoutsScript(pubId) { ++ if (!pubId) return; ++ if (typeof window === 'undefined') return; ++ const id = `travelpayouts-script-${pubId}`; ++ if (document.getElementById(id)) return; ++ const s = document.createElement('script'); ++ s.id = id; ++ // Example widget URL — replace if Travelpayouts gives a different widget path ++ s.src = `https://www.travelpayouts.com/widgets/69521?marker=${pubId}`; ++ s.async = true; ++ document.body.appendChild(s); ++} ++ +*** End Patch +*** Begin Patch +*** Add File: README_DEPLOY.md ++Deployment & DNS (CLOUDFLARE) ++ ++Summary ++- I prepared deployment scaffolding and affiliate placeholders on branch deploy/bandbairbooking. ++- You confirmed the domain is pointing at Cloudflare already. For initial deployment, set Cloudflare DNS entries to "DNS only" (gray cloud) for the provider records to avoid SSL/proxying issues while verifying. ++ ++Cloudflare DNS guidance ++- If hosting frontend on Netlify or Vercel: ++ - Add a CNAME for "www" pointing to your-site.netlify.app (or Vercel CNAME) and set it to DNS only (gray cloud) until verification completes. ++ - For the apex domain, use the host's A/ALIAS records and set them to DNS only. ++- If hosting on a VPS or load balancer: ++ - Set A records for the root (@) to your server IP and set the record to DNS only while deploying. ++ ++What was added (branch: deploy/bandbairbooking) ++- env.example — placeholders for domain, affiliate IDs, and deploy secrets ++- CNAME — contains bandbairbooking.com ++- docker-compose.yml — run frontend, api, ingestion_server, and redis locally ++- .github/workflows/ci-deploy.yml — basic CI to build the frontend and optionally build the API Docker image ++- frontend/src/components/AffiliateLinks.js — helper to construct Booking links and inject Travelpayouts script ++ ++Next steps I will take once you upload/apply this patch and add secrets ++1. Push the prepared files to deploy/bandbairbooking and open a PR. ++2. Add provider-specific deploy workflows (Netlify + Vercel by default) with placeholders; you'll add the secrets. ++3. Trigger CI to build and verify the site; I'll walk you through DNS toggles in Cloudflare and final verification. ++ ++Required repository secrets (add in GitHub Settings → Secrets and variables → Actions): ++- TRAVELPAYOUTS_PUB_ID ++- BOOKING_COM_AFFILIATE_ID ++- NETLIFY_AUTH_TOKEN and NETLIFY_SITE_ID (if Netlify) ++- VERCEL_TOKEN and VERCEL_PROJECT_ID (if Vercel) ++- DOCKER_REGISTRY_USER / DOCKER_REGISTRY_PASS (if pushing images) ++- AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_REGION (if using AWS) ++ ++Local test (before pushing to production) ++1. Copy env.example → .env and fill placeholders locally. ++2. Run: docker compose up --build ++ - Frontend: http://localhost:3000 ++ - Backend (Django): http://localhost:8000 ++ ++How to apply this patch locally (recommended) ++1. Save this file as deploy_bandbairbooking.patch ++2. From your repo root: ++ - git checkout -b deploy/bandbairbooking ++ - git apply ../path/to/deploy_bandbairbooking.patch ++ - git add . ++ - git commit -m "Add deployment scaffolding and affiliate placeholders for bandbairbooking" ++ - git push origin deploy/bandbairbooking ++ ++Alternative: upload each file directly through the GitHub web UI into the deploy/bandbairbooking branch. ++ ++When you've applied the patch and pushed the branch, tell me "Branch pushed" and I will: ++- open a PR, ++- add provider-specific workflow files (Netlify/Vercel/AWS) if you want, ++- and start the first CI run to verify builds. ++ +*** End Patch \ No newline at end of file diff --git a/deployment.md b/deployment.md new file mode 100644 index 00000000000..22dcbbd6fe8 --- /dev/null +++ b/deployment.md @@ -0,0 +1,94 @@ +# Deployment Reference + +Serverless-specific resource types and fast-iteration tools. For step-by-step deployment procedures (custom domain REST API, API Gateway stages, connecting Lambda to API Gateway/DynamoDB), use the specialized skills in SKILL.md's routing table. + +## Contents + +- [SAM resource types](#sam-resource-types) +- [SAM Globals section](#sam-globals-section) +- [CDK serverless constructs](#cdk-serverless-constructs) +- [Fast iteration](#fast-iteration) + +--- + +## SAM resource types + +SAM templates extend CloudFormation with `Transform: AWS::Serverless-2016-10-31`. Only `Transform` and `Resources` are required. + +| Resource Type | Purpose | +|---|---| +| `AWS::Serverless::Function` | Lambda + IAM role + event source mappings | +| `AWS::Serverless::HttpApi` | HTTP API (API Gateway v2) — recommended | +| `AWS::Serverless::Api` | REST API (v1) — WAF, usage plans, request validation | +| `AWS::Serverless::SimpleTable` | DynamoDB with minimal config | +| `AWS::Serverless::LayerVersion` | Lambda layer | +| `AWS::Serverless::StateMachine` | Step Functions state machine | +| `AWS::Serverless::Connector` | Simplified permissions between resources | +| `AWS::Serverless::Application` | Nested serverless application (SAR or local) | +| `AWS::Serverless::GraphQLApi` | AppSync GraphQL API | +| `AWS::Serverless::WebSocketApi` | WebSocket API (API Gateway v2) | +| `AWS::Serverless::CapacityProvider` | Lambda Managed Instances on customer-owned EC2 | + +--- + +## SAM Globals section + +Eliminates duplication across functions/APIs. Supported types: `Function`, `Api`, `HttpApi`, `SimpleTable`, `StateMachine`, `CapacityProvider`. + +**Override rules:** + +| Type | Behavior | +|---|---| +| Primitives (string, number, boolean) | Resource value **replaces** global | +| Maps (dictionaries) | **Merged** — resource keys override matching global keys | +| Lists (arrays) | Global entries **prepended** to resource entries | + +--- + +## CDK serverless constructs + +Prefer L2 constructs — they provide sensible defaults and least-privilege IAM via `grant*` methods. + +| Construct | Module | Use for | +|---|---|---| +| `NodejsFunction` | `aws-cdk-lib/aws-lambda-nodejs` | Node.js/TypeScript — bundles with esbuild automatically | +| `PythonFunction` | `@aws-cdk/aws-lambda-python-alpha` | Python — requires Docker for bundling | +| `HttpApi` | `aws-cdk-lib/aws-apigatewayv2` | HTTP API with CORS, JWT auth | +| `HttpLambdaIntegration` | `aws-cdk-lib/aws-apigatewayv2-integrations` | Connect Lambda to HttpApi | + +--- + +## Fast iteration + +Both tools are **development-only** — they bypass CloudFormation safety and introduce drift. Use `sam deploy` or CI/CD for production. + +### SAM Accelerate + +```bash +sam sync --watch --stack-name my-stack # Watch mode — auto-syncs on save +sam sync --code --watch --stack-name my-stack # Code-only (minimal sync time) +sam sync --code --resource-id MyFunction --watch --stack-name my-stack # Single function +``` + +Code changes sync via service APIs in seconds. Infrastructure changes trigger CloudFormation (slower, automatic). + +### CDK hotswap / watch + +```bash +cdk deploy --hotswap # Direct resource update, skips non-hotswappable +cdk deploy --hotswap-fallback # Hotswap with CloudFormation fallback +cdk watch # Watch mode (hotswap + file watching) +``` + +Hotswap supports: Lambda code/config/versions/aliases, Step Functions definitions, ECS images, S3 deployments, CodeBuild projects, AppSync resolvers/functions/schemas. + +### Comparison + +| Feature | SAM Sync | CDK Hotswap | +|---|---|---| +| Watch mode | `sam sync --watch` | `cdk watch` | +| Code-only sync | `sam sync --code` | `cdk deploy --hotswap` | +| Fallback to full deploy | Automatic | `--hotswap-fallback` | +| Selective resource sync | `--resource-id` | Not supported | +| Code change speed | Seconds | Seconds | +| Production safe | **No** | **No** | diff --git a/document.txt b/document.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/document.zip b/document.zip new file mode 100644 index 00000000000..98bb2d80610 Binary files /dev/null and b/document.zip differ diff --git a/head-footer-code.php b/head-footer-code.php new file mode 100644 index 00000000000..d13e2c8a056 --- /dev/null +++ b/head-footer-code.php @@ -0,0 +1,40 @@ +</head> and </body> or after opening <body> HTML tag. + * Version: 1.5.7 + * Author: Aleksandar Urošević + * Author URI: https://urosevic.net/ + * License: GPLv3 + * License URI: https://www.gnu.org/licenses/gpl-3.0.txt + * Text Domain: head-footer-code + * Requires at least: 5.2 + * Tested up to: 7.0 + * Requires PHP: 5.6 + */ + +// If this file is called directly, abort. +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +define( 'HFC__MIN_PHP', '5.6' ); +define( 'HFC__MIN_WP', '5.2' ); + +define( 'HFC_VER', '1.5.7' ); +define( 'HFC_VER_DB', '11' ); +define( 'HFC_FILE', __FILE__ ); + +register_activation_hook( HFC_FILE, array( '\Techwebux\Hfc\Main', 'plugin_activation' ) ); + +require_once __DIR__ . '/classes/autoload.php'; +new \Techwebux\Hfc\Main(); diff --git a/index.js b/index.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/readme.txt b/readme.txt new file mode 100644 index 00000000000..21030db04e4 --- /dev/null +++ b/readme.txt @@ -0,0 +1,405 @@ +=== AI === +Contributors: wordpressdotorg, dkotter, jeffpaul +Tags: ai, artificial intelligence, experiments, abilities, mcp +Tested up to: 7.0 +Stable tag: 1.2.0 +License: GPL-2.0-or-later +License URI: https://spdx.org/licenses/GPL-2.0-or-later.html + +AI features, experiments and capabilities for WordPress. + +== Description == + +The AI plugin brings AI-powered features directly into your WordPress admin and editing experience. + +Requires the WordPress Block Editor. The Classic Editor plugin and other non-Block Editor editing experiences are not supported. + +**What's Inside:** + +This plugin is built on the [AI Building Blocks for WordPress](https://make.wordpress.org/ai/2025/07/17/ai-building-blocks) initiative, combining the AI Client library and Abilities API into a unified experience. It serves as both a practical tool for content creators and a reference implementation for developers. + +**Current Features:** + +* **Abilities Explorer** – Browse and interact with registered AI abilities from a dedicated admin screen. +* **AI Request Logging** – Logs AI requests for observability and debugging. +* **Alt Text Generation** - Generate descriptive alt text for images to improve accessibility. +* **Comment Moderation** - Automatically moderate comments based on toxicity detection and sentiment analysis. +* **Connector Approvals** - Require explicit administrator approval before plugins or themes can use AI connectors configured on this site. +* **Content Classification** – Suggests relevant tags and categories to organize content. +* **Content Resizing** - Shorten, expand, or rephrase selected block content. +* **Content Summarization** - Summarizes long-form content into digestible overviews. +* **Dashboard Widgets** - AI Status and AI Capabilities widgets, plus framework for registering new ones. +* **Editorial Notes** - Reviews post content block-by-block and adds Notes with suggestions for Accessibility, Readability, Grammar, and SEO. +* **Editorial Updates** - Automatically apply editorial notes to content. +* **Excerpt Generation** - Automatically create concise summaries for your posts. +* **Experiment Framework** - Opt-in system that lets you enable only the AI features you want to use. +* **Guidelines** - Allows abilities to respect site-wide editorial standards. +* **Image Generation and Editing** - Create and edit images from post content in the editor, also via the Media Library. +* **Key Encryption** - Encrypts AI provider API keys at rest using bundled libsodium encryption. Keys are transparently decrypted on read and re-encrypted on write. Disabling the experiment or deactivating the plugin restores plaintext keys. +* **Meta Description Generation** - Generates meta description suggestions and integrates those with various SEO plugins. +* **Multi-Provider Support** - Works with AI Connector plugins for providers such as OpenAI, Google, and Anthropic. +* **Suggest Reply** - Adds a "Suggest Reply" action to the Comments screen and Activity widget, enabling moderators to quickly generate comment reply suggestions. +* **Title Generation** - Generate title suggestions for your posts with a single click. Perfect for brainstorming headlines or finding the right tone for your content. +* **Type Ahead** – Contextual type-ahead assistance for suggestions while typing. + +**Provider Setup:** + +The AI plugin does not include provider credentials or provider implementations by itself. To use AI-powered features, install and activate at least one AI Connector plugin, then configure its credentials in `Settings -> Connectors`. Features may appear unavailable until a connector is installed, authenticated, and capable of the required operation. + +Provider connector plugins include [Anthropic](https://wordpress.org/plugins/ai-provider-for-anthropic), [Google](https://wordpress.org/plugins/ai-provider-for-google), [OpenAI](https://wordpress.org/plugins/ai-provider-for-openai), and [others](https://wordpress.org/plugins/tags/connector/). + +**Coming Soon:** + +We're actively developing new features to enhance your WordPress workflow: + +* **AI Playground** – Experiment with different AI models and providers. +* **Content Assistant** – AI-powered writing and editing in Gutenberg. +* **Site Agent** – Natural language WordPress administration. +* **Workflow Automation** – AI-driven task automation. + +This is an experimental plugin; functionality may change as we gather feedback from the community. + +**Roadmap:** + +You can view the active plugin roadmap in a filtered view in the WordPress AI [GitHub Project Board](https://github.com/orgs/WordPress/projects/240/views/1). + +== Installation == + +1. Upload the plugin files to the `/wp-content/plugins/ai` directory, or install the plugin through the WordPress plugins screen directly. +2. Activate the plugin through the 'Plugins' screen in WordPress. +3. Install and activate at least one AI Connector plugin, then go to `Settings -> Connectors` and configure its credentials. +4. Go to `Settings -> AI` and globally enable functionality and then enable the individual features or experiments you want to test. +5. Start experimenting with AI features! For the Title Generation experiment, edit a post and click into the title field. You should see a `Generate/Regenerate` button above the field. Click that button and after the request is complete, title suggestions will be displayed in a modal. Choose the title you like and click the `Select` button to insert it into the title field. + +== For Developers == + +The AI plugin is designed to be studied, extended, and built upon. Whether you're a plugin developer, agency, or hosting provider, here's what you can do: + +**Extend the Plugin:** + +* **Build Custom Experiments** - Use the `Abstract_Feature` base class to create your own AI-powered features. +* **Pre-configure Providers** - Hosts and agencies can set up AI Connector plugins so users don't need their own API keys. +* **Abilities Explorer** - Test and explore registered AI abilities (available when experiments are enabled). +* **Register Custom Abilities** - Hook into the Abilities API to add new AI capabilities. +* **Override Default Behavior** - Use filters to customize prompts, responses, and UI elements. +* **Comprehensive Hooks** - Filters and actions throughout the codebase for customization. + +**Developer Tools Coming Soon:** + +* **AI Playground** - Experiment with different AI models and prompts. +* **MCP (Model Context Protocol)** – Integrate and test Model Context Protocol capabilities in WordPress workflows. +* **Extended Providers** – Support for experimenting with additional or alternate AI providers. + +**Get Started:** + +1. Read the [Contributing Guide](https://github.com/WordPress/ai/blob/trunk/CONTRIBUTING.md) for development setup +2. Join the conversation in [#core-ai on WordPress Slack](https://wordpress.slack.com/archives/C08TJ8BPULS) +3. Browse the [GitHub repository](https://github.com/WordPress/ai) to see how experiments are built +4. Participate in [discussions](https://github.com/WordPress/ai/discussions) on how best the plugin should iterate. + +We welcome contributions! Whether you want to build new experiments, improve existing features, or help with documentation, check out our [GitHub repository](https://github.com/WordPress/ai) to get involved. + +== Frequently Asked Questions == + += What is this plugin for? = + +This plugin brings AI-powered writing and editing tools directly into WordPress. It's also a reference implementation for developers who want to build their own AI features. + += Is this safe to use on a production site? = + +This is an experimental plugin, so we recommend testing in a staging environment first. Features may change as we gather community feedback. All AI features are opt-in and require manual triggering - nothing happens automatically without your approval. + += Which AI providers are supported? = + +The plugin can work with provider connector plugins from [Anthropic](https://wordpress.org/plugins/ai-provider-for-anthropic) (Claude), [Google](https://wordpress.org/plugins/ai-provider-for-google) (Gemini), [OpenAI](https://wordpress.org/plugins/ai-provider-for-openai), and [others](https://wordpress.org/plugins/tags/connector/). Install and activate the relevant connector plugin, then configure it in `Settings -> Connectors`. + += Do I need an API key to use the features? = + +Yes, currently you need to provide your own API key for the configured AI Connector plugin, such as OpenAI, Google AI, or Anthropic. + += How much does it cost? = + +The plugin itself is free, but you'll need to pay for API usage from your chosen AI provider. Costs vary by provider and usage. Most providers offer free trial credits to get started. There are some local, open source, and free providers (like [Ollama](https://wordpress.org/plugins/ai-provider-for-ollama/)) that can be used as well. + += Can I use this without coding knowledge? = + +Absolutely! The plugin is designed for content creators and site administrators. Once your AI Connectors are configured, you can use the AI functionality directly from the post editor. + += Does this plugin support the Classic Editor? = + +No. + +The AI plugin currently supports only the Block Editor (aka Gutenberg). The plugin is designed around modern editor APIs, block-based content workflows, and the evolving editing capabilities being developed within WordPress core (including Gutenberg). + +The Block Editor has been the default WordPress editing experience since WordPress 5.0 in 2018 and remains the primary focus of active editor development. Concentrating development efforts on the Block Editor enables the project to ship new features, experiments, and integrations more quickly while avoiding the complexity of maintaining parallel implementations across multiple editing experiences. + +Although the Classic Editor plugin continues to have a large installed base, the Core AI team has chosen to prioritize innovation and experimentation within the Block Editor ecosystem. At this time there are no plans to add official Classic Editor support. + += Where can I get help or report issues? = + +You can ask questions in the [#core-ai channel on WordPress Slack](https://wordpress.slack.com/archives/C08TJ8BPULS) or report issues on the [GitHub repository](https://github.com/WordPress/ai/issues). + +== Screenshots == + +1. Feature: Image Generation and Editing. Post editor sidebar showing Generate featured image button and the generated featured image preview with Alt Text, Title, and Description. +2. Feature: Image Generation and Editing. Post editor showing Generate Image flows. +3. Feature: Image Generation and Editing. Media Library showing Generate Image flows. +4. Editor Experiment: Alt Text Generation. Image block settings showing Generate Alt Text button and the generated alt text. +5. Editor Experiment: Alt Text Generation. Bulk alt text generation from within the Media Library. +6. Editor Experiment: Comment Moderation. Comments admin screen showing AI-powered comment moderation features, including color-coded badges for toxicity scoring and comment sentiment. +7. Editor Experiment: Comment Moderation. Recent Comments section of the Activity widget showing Sentiment and Toxicity scores. +8. Editor Experiment: Content Classification. AI-powered suggestions for post tags and categories based on content analysis. +9. Editor Experiment: Content Resizing. Shorten, expand, or rephrase selected block content. +10. Editor Experiment: Content Summarization. Post editor sidebar showing Generate AI Summary button and the generated content summary within a Content Summary block. +11. Editor Experiment: Editorial Notes. Post editor sidebar showing Generate Editorial Notes flows. +12. Editor Experiment: Editorial Updates. Applies pending Editorial Notes to your content automatically. +13. Editor Experiment: Excerpt Generation. Post editor sidebar showing Generate Excerpt button and generated excerpt. +14. Editor Experiment: Meta Description Generation. Generates meta description suggestions and integrates those with various SEO plugins. +15. Editor Experiment: Title Generation. Post editor showing Generate button above the post title field and title recommendations in a modal. +16. Editor Experiment: Type-ahead Text. Ghost text suggestions while writing paragraphs in the block editor. +17. Dashboard Widgets. AI Capabilities widget showing Abilities Explorer summary and connected AI providers and model capabilities. +18. Dashboard Widgets. AI Status widget showing three step configuration process. +19. Dashboard Widgets. AI Status widget showing connected AI providers and enabled Features and Experiments. +20. Admin Experiment: Abilities Explorer. Abilities Explorer admin screen listing available AI abilities with filters, providers, and test actions. +21. Admin Experiment: Abilities Explorer. Abilities Explorer's view details screen showing an AI ability’s description, provider, input schema, output schema, and raw data. +22. Admin Experiment: Abilities Explorer. Abilities Explorer's test ability screen showing JSON input data, validation, and input schema reference for an AI ability. +23. Admin Experiment: AI Request Logging. Logs AI requests for observability and debugging. View detailed logs under Tools. +24. Admin Experiment: Connector Approvals. Require explicit administrator approval before plugins or themes can use AI connectors configured on this site. +25. Admin Experiment: Key Generation. Encrypts AI provider API keys at rest using bundled libsodium encryption. Keys are transparently decrypted on read and re-encrypted on write. Disabling the experiment or deactivating the plugin restores plaintext keys. +26. AI Settings. AI settings screen showing toggles to enable specific experiments. + +== Changelog == + += 1.2.0 - 2026-07-14 = + +**Added** + +- New Experiment: Suggest Reply; gives comment moderators a quick way to generate a reply to a comment through the admin ([#724](https://github.com/WordPress/ai/pull/724)). +- New "Advanced settings" option in Developer Tools to show/hide additional configuration options for features and experiments ([#842](https://github.com/WordPress/ai/pull/842)). +- Bulk "Generate AI Summary" action to the posts and pages list table, enabling summary generation for multiple posts at once ([#650](https://github.com/WordPress/ai/pull/650)). +- New `core/read-content` Ability with secure single-post and query modes (including include and opt-in fields) to enable read-only content access ([#739](https://github.com/WordPress/ai/pull/739)). +- New `core/read-users` Ability that retrieves a single user by ID, email, login, or nicename, or a filtered and paginated users collection, with sensitive fields opt-in and permission-gated ([#774](https://github.com/WordPress/ai/pull/774)). +- An inline admin notice when Connector Approvals are enabled and no AI connectors are yet approved, prompting admins to approve the AI plugin for use ([#830](https://github.com/WordPress/ai/pull/830)). +- Introduce new `wp_ai_client_default_request_timeout` filter to make the default request timeout configurable. Use this for the image generation request timeout ([#862](https://github.com/WordPress/ai/pull/862)). + +**Changed** + +- Content Summary block detection now checks within nested blocks ([#810](https://github.com/WordPress/ai/pull/810)). +- Move all existing configuration options into a new "Advanced settings" section which is hidden by default ([#842](https://github.com/WordPress/ai/pull/842)). + +**Fixed** + +- Focus restoration after AI setting saves ([#812](https://github.com/WordPress/ai/pull/812)). +- Added descriptive alt text to AI Home feature card images for improved screen reader accessibility ([#819](https://github.com/WordPress/ai/pull/819)). +- Prevent Type-Ahead assets from loading on the front end ([#820](https://github.com/WordPress/ai/pull/820)). +- Dismissing a type-ahead suggestion with escape should not trigger a new suggestion request ([#840](https://github.com/WordPress/ai/pull/840)). +- Type-ahead ghost text placement and stale suggestions overlapping empty-block placeholders ([#847](https://github.com/WordPress/ai/pull/847)). +- `MutationObserver` crash when editor iframe body isn't ready when using Title Generation ([#849](https://github.com/WordPress/ai/pull/849)). +- Respect an explicit `show_in_abilities` value on curated settings, and leave the flag to WordPress core once core declares it ([#852](https://github.com/WordPress/ai/pull/852)). +- Register initial settings before `core/read-settings` snapshots them ([#856](https://github.com/WordPress/ai/pull/856)). + += 1.1.0 - 2026-06-30 = + +**Added** + +- New Experiment: Type Ahead; automatically suggests ghost text at the end of paragraphs, can be manually triggered within a paragraph ([#151](https://github.com/WordPress/ai/pull/151), [#776](https://github.com/WordPress/ai/pull/776)). +- New Experiment: Key Encryption; encrypts AI Connector API keys before storing them in the database ([#560](https://github.com/WordPress/ai/pull/560)). +- Ensure all Features that rely on utilizing content are disabled until minimum content thresholds are met ([#581](https://github.com/WordPress/ai/pull/581)). +- New `core/read-settings` Ability ([#691](https://github.com/WordPress/ai/pull/691), [#806](https://github.com/WordPress/ai/pull/806)). +- New `wpai_has_image_generation_support` filter that allows 3rd parties to claim support for Image Generation, for example if authenticating without an API key ([#748](https://github.com/WordPress/ai/pull/748)). +- New setting to choose if guest comments should be moderated or not, defaulting to `yes` ([#751](https://github.com/WordPress/ai/pull/751)). +- Explicit save button to developer settings panel, requiring a user to click save before the Provider and Model settings are saved ([#761](https://github.com/WordPress/ai/pull/761)). +- Documentation callouts that the plugin has targeted support for the Block Editor only ([#766](https://github.com/WordPress/ai/pull/766)). + +**Changed** + +- Note prompting the user to save after running Editorial Notes ([#682](https://github.com/WordPress/ai/pull/682)). +- Use `__next40pxDefaultSize` for buttons consistently ([#702](https://github.com/WordPress/ai/pull/702)). +- Skip Comment Analysis and Moderation when comment has already been flagged as spam/trash ([#743](https://github.com/WordPress/ai/pull/743)). +- Replace developer mode settings CSS with Stack component ([#785](https://github.com/WordPress/ai/pull/785)). +- Use character-based count instead of word-based to determine when features are available to use ([#802](https://github.com/WordPress/ai/pull/802)). +- Use `Notice` component to display warnings within experiment modals ([#803](https://github.com/WordPress/ai/pull/803)). +- Added success snackbar when saving or resetting developer settings ([#807](https://github.com/WordPress/ai/pull/807)). + +**Fixed** + +- Add `wordCountType` to check for user's locale and update to count character or words when detecting minimum content length ([#581](https://github.com/WordPress/ai/pull/581)). +- Restrict Content Resizing to REST-exposed post types when a post ID is provided ([#658](https://github.com/WordPress/ai/pull/658)). +- Only show Editorial Updates button when pending Notes are linked to current blocks ([#682](https://github.com/WordPress/ai/pull/682)). +- Hide developer settings on stable Features when AI is disabled ([#737](https://github.com/WordPress/ai/pull/737)). +- Improve readability of Ability Explorer schema output by preventing unicode escaping for non‑ASCII characters ([#740](https://github.com/WordPress/ai/pull/740)). +- The "Last 30 Days" summary period in the AI Requests Logs page now uses a fixed 30-day window so the summary cards and logs table cover the same span ([#753](https://github.com/WordPress/ai/pull/753)). +- Developer Tools popover overlapping the WP admin bar ([#756](https://github.com/WordPress/ai/pull/756)). +- Persistence of suggested terms when running the Content Classification experiment ([#769](https://github.com/WordPress/ai/pull/769)). +- Restored term suggestion pills to their original positions if the backend term assignment API fails, resolving stale state race conditions ([#772](https://github.com/WordPress/ai/pull/772)). +- Preserve omitted `runAbility()` input so ability schema defaults can apply when abilities are invoked without input ([#775](https://github.com/WordPress/ai/pull/775)). +- Ensure scalar input schemas are allowed in the Abilities Explorer validation ([#787](https://github.com/WordPress/ai/pull/787)). +- Standardize the Title Generation button text ([#790](https://github.com/WordPress/ai/pull/790)). +- Scope the Editorial Note generation loading spinner only to the block currently being reviewed ([#794](https://github.com/WordPress/ai/pull/794)). +- Snackbar notifications no longer overlap the settings content; they are pinned to the bottom-left of the content area ([#801](https://github.com/WordPress/ai/issues/801)). + += 1.0.2 - 2026-06-15 = + +**Added** + +- Manual refresh button to the AI Request Logs table header ([#687](https://github.com/WordPress/ai/pull/687)). +- New `ai_generated` param on our Image Import Ability to set if the imported image was AI generated or not ([GHSA-42mg-ffvx-4xff](https://github.com/WordPress/ai/security/advisories/GHSA-42mg-ffvx-4xff)). + + +**Changed** + +- Ensure Editorial Notes and Editorial Updates controls stay grouped together in the post editor sidebar ([#605](https://github.com/WordPress/ai/pull/605)). +- Use explicit UTF-8 encoding for generated Meta Description character counts ([#655](https://github.com/WordPress/ai/pull/655)). +- Return a consistent decorative flag from Alt Text Generation results ([#659](https://github.com/WordPress/ai/pull/659)). +- Show an error message immediately in the Image Generation UI when there's no AI Connector in place that supports image generation ([#679](https://github.com/WordPress/ai/pull/679)). +- Use a neutral icon for disabled Features and Experiments in the AI Status widget ([#720](https://github.com/WordPress/ai/pull/720)). + +**Fixed** + +- Abilities Explorer schema validation ([#612](https://github.com/WordPress/ai/pull/612)). +- Alt Text Generation button becomes unresponsive after using Next/Previous in the media modal ([#631](https://github.com/WordPress/ai/pull/631)). +- Add descriptive accessible labels to approval matrix toggle controls ([#637](https://github.com/WordPress/ai/pull/637)). +- Added accessible labels to the Provider and Category filter dropdowns on the Abilities Explorer page ([#642](https://github.com/WordPress/ai/pull/642)). +- Lost focus after generating a Title ([#644](https://github.com/WordPress/ai/pull/644)). +- Lost focus when generating Alt Text in Image block inspector controls ([#645](https://github.com/WordPress/ai/pull/645)). +- Lost focus when toggling the Connector Approval state ([#646](https://github.com/WordPress/ai/pull/646)). +- Lost focus after generating Images ([#647](https://github.com/WordPress/ai/pull/647)). +- Added an accessible label to the ability test payload textarea in the Abilities Explorer ([#649](https://github.com/WordPress/ai/pull/649)). +- Excerpt generation post context payload ([#651](https://github.com/WordPress/ai/pull/651)). +- Clear out the Meta Description suggestion when the modal closes ([#653](https://github.com/WordPress/ai/pull/653)). +- Lost focus after running Content Resizing actions ([#663](https://github.com/WordPress/ai/pull/663)). +- Column reordering and hiding in the AI Request Logs table now persists instead of resetting to the default ([#669](https://github.com/WordPress/ai/pull/669)). +- Summary statistics showing zero for short time periods on non-UTC MySQL servers ([#671](https://github.com/WordPress/ai/pull/671)). +- UI inconsistency on AI Request Logs page ([#676](https://github.com/WordPress/ai/pull/676)). +- Ensure thinking tokens are counted in AI Request Logs ([#680](https://github.com/WordPress/ai/pull/680)). +- Ensure the Ability schemas and outputs are valid JSON Schema for strict REST and MCP consumers ([#688](https://github.com/WordPress/ai/pull/688)). +- Title Generation button disappears after toggling off "Show template" ([#694](https://github.com/WordPress/ai/pull/694)). +- Prevent accidental interactions and stale feedback in the Meta Description Generation modal and improve focus handling ([#696](https://github.com/WordPress/ai/pull/696)). +- Ensure focus isn't lost after generating an Excerpt inline ([#698](https://github.com/WordPress/ai/pull/698)). +- AI Request Logs: "Copy Log ID" gives no feedback when copied ([#700](https://github.com/WordPress/ai/pull/700)). +- AI Request Logs: main header overlapping table header ([#705](https://github.com/WordPress/ai/pull/705)). +- Allow users to clear an applied Meta Description while preventing whitespace-only descriptions ([#706](https://github.com/WordPress/ai/pull/706)). +- Rename unforwarded `MaskCanvas` component function to `InnerMaskCanvas` to avoid duplicate declarations ([#713](https://github.com/WordPress/ai/pull/713)). + +**Security** + +- Remove the `meta` param from our Image Import Ability ([GHSA-42mg-ffvx-4xff](https://github.com/WordPress/ai/security/advisories/GHSA-42mg-ffvx-4xff)). +- Check the current user's capabilities and the comment type before setting an Editorial Note ([GHSA-j7hg-vqpw-f98f](https://github.com/WordPress/ai/security/advisories/GHSA-j7hg-vqpw-f98f)). + += 1.0.1 - 2026-05-27 = + +**Added** + +- New helper functions that are used to determine if we have valid AI Connector credentials ([#603](https://github.com/WordPress/ai/pull/603)). +- New helper methods, `is_globally_enabled` and `is_individually_enabled` to help tell if a feature is enabled individually or if features are globally enabled ([#604](https://github.com/WordPress/ai/pull/604)). + +**Changed** + +- Removed the description from the Abilities listing within the Abilities Explorer ([#592](https://github.com/WordPress/ai/pull/592)). +- Filter Guideline queries by the guideline type content ([#593](https://github.com/WordPress/ai/pull/593)). +- Use the new `has_connector_authentication` instead of `is_connector_configured` to avoid unnecessary API requests ([#603](https://github.com/WordPress/ai/pull/603)). + +**Removed** + +- Deprecated `__nextHasNoMarginBottom` prop ([#609](https://github.com/WordPress/ai/pull/609)). + +**Fixed** + +- Utilize a new `is_connector_configured` function to properly determine if a connector is configured, whether via an API key, constant or ENV var ([#537](https://github.com/WordPress/ai/pull/537)). +- "Generate Editorial Note" button appearing in the block settings menu during post revisions ([#591](https://github.com/WordPress/ai/pull/591)). +- If the Connector Approvals experiment is turned on, ensure we don't over-aggressively block functionality in the AI plugin that isn't actually making requests, like Request Logging ([#595](https://github.com/WordPress/ai/pull/595)). +- Better matching of the originating code when the Connector Approvals experiment is on ([#595](https://github.com/WordPress/ai/pull/595)). +- Focus loss issues when interacting with Purge actions in the Request Logs experiments page ([#599](https://github.com/WordPress/ai/pull/599)). +- Disable the "Purge All" button when no logs are available to purge ([#599](https://github.com/WordPress/ai/pull/599)). +- AI Status feature checklist properly shows if an individual feature is enabled even if globally features are disabled ([#604](https://github.com/WordPress/ai/pull/604)). +- Ensure focus isn't lost when buttons enter disabled state during Alt Text Generation, Content Classification, Content Summarization, Excerpt Generation, Featured Image Generation, and Title Generation ([#608](https://github.com/WordPress/ai/pull/608), [#611](https://github.com/WordPress/ai/pull/611)). +- Settings page strings, which are enqueued as script modules, are now localized at runtime ([#613](https://github.com/WordPress/ai/pull/613)). +- Connector Approvals "Dismiss" button failing for pending requests whose key contains a slash ([#615](https://github.com/WordPress/ai/pull/615)). +- Hide empty provider capabilities section in the dashboard widget ([#616](https://github.com/WordPress/ai/pull/616)). +- Playground and test configs now target the latest WordPress release instead of the beta release ([#626](https://github.com/WordPress/ai/pull/626)). +- Connector Approvals notice no longer overlaps the page header on the AI Request Logs screen ([#628](https://github.com/WordPress/ai/pull/628)). + += 1.0.0 - 2026-05-19 = + +**Added** + +- New Experiment: Request Logging that provides observability for all AI operations ([#437](https://github.com/WordPress/ai/pull/437)). +- New Experiment: Connector Approvals that allows administrators the ability to determine which plugins can access which AI connectors ([#467](https://github.com/WordPress/ai/pull/467)). +- Integrate Alt Text generation into the experimental media editor ([#446](https://github.com/WordPress/ai/pull/446)). +- Sorting and filtering in Comments screen by Toxicity and/or Sentiment ([#518](https://github.com/WordPress/ai/pull/518)). +- Toxicity and Sentiment labelling in admin dashboard for comments ([#518](https://github.com/WordPress/ai/pull/518)). + +**Changed** + +- Disable the Summarization button until content reaches a certain length ([#492](https://github.com/WordPress/ai/pull/492)). +- Refined image generation loading state ([#512](https://github.com/WordPress/ai/pull/512)). +- Featured image button now hides when image is already set ([#512](https://github.com/WordPress/ai/pull/512)). +- When no AI provider is configured and a feature is triggered, show actionable guidance directing users to configure an AI Connector ([#523](https://github.com/WordPress/ai/pull/523)). +- Update Meta Description loading state and remove duplicate heading in modal ([#527](https://github.com/WordPress/ai/pull/527)). +- Rename "Review Notes" experiment to "Editorial Notes" and "Refine from Notes" experiment to "Editorial Updates" ([#528](https://github.com/WordPress/ai/pull/528)). +- Keep comments without moderation metadata visible when sorting by Comment Moderation columns ([#538](https://github.com/WordPress/ai/pull/538)). +- Updated plugin banner and icons ([#546](https://github.com/WordPress/ai/pull/546)). +- Show a notice when a user has chosen a provider that no longer exists ([#552](https://github.com/WordPress/ai/pull/552)). +- When no provider is configured, show an error notice instead of an admin notice for alt text generation ([#561](https://github.com/WordPress/ai/pull/561)). +- Standardize error message text ([#562](https://github.com/WordPress/ai/pull/562)). +- Abilities Explorer page heading ([#585](https://github.com/WordPress/ai/pull/585)). + +**Fixed** + +- Ensure we properly use the new client-side Abilities API ([#482](https://github.com/WordPress/ai/pull/482)). +- Keep keyboard focus on the Provider select when resetting per-feature developer settings to default ([#532](https://github.com/WordPress/ai/pull/532)). +- Deduplicate provider API requests on the settings page when developer mode is toggled on ([#542](https://github.com/WordPress/ai/pull/542)). +- Update the Playground Preview workflow to use `pluginData` instead of `pluginZipFile` ([#548](https://github.com/WordPress/ai/pull/548)). +- Empty space shown for Model field when saved provider no longer exists in developer settings ([#552](https://github.com/WordPress/ai/pull/552)). +- Prevent analyzing newly inserted comments when no provider is configured ([#554](https://github.com/WordPress/ai/pull/554)). +- Ensure the meta description modal doesn't open if no provider is configured ([#558](https://github.com/WordPress/ai/pull/558)). +- False error for alt text generation on decorative images in media library ([#559](https://github.com/WordPress/ai/pull/559)). +- Show a failed badge when comment analysis fails ([#568](https://github.com/WordPress/ai/pull/568)). +- Correct RTL rendering of directional icons, runtime-set styles, and inline styles in the admin UI ([#573](https://github.com/WordPress/ai/pull/573)). +- Add notice to standalone image generation when there is no provider connected ([#575](https://github.com/WordPress/ai/pull/575)). +- Ensure we show a more specific error message when no valid AI connector is in place and we try to generate a featured image ([#576](https://github.com/WordPress/ai/pull/576)). +- Improve keyboard focus visibility for suggested term actions in content classification ([#580](https://github.com/WordPress/ai/pull/580)). +- User-facing text in several experiments is now fully translatable, and JS-side translations are loaded at runtime ([#582](https://github.com/WordPress/ai/pull/582)). +- Make title generation and content classification UI react to current editor state ([#584](https://github.com/WordPress/ai/pull/584)). +- Ensure global AI enabled options are migrated properly ([#586](https://github.com/WordPress/ai/pull/586)). + += 0.9.0 - 2026-05-07 = + +**Added** + +* New Experiment: Comment Moderation to automatically moderate comments based on toxicity detection and sentiment analysis ([#155](https://github.com/WordPress/ai/pull/155), [#516](https://github.com/WordPress/ai/pull/516)). +* New Experiment: Content Resizing to shorten, expand, or rephrase selected block content ([#331](https://github.com/WordPress/ai/pull/331)). +* Developer Mode settings page toggle to set the desired provider and model per feature ([#486](https://github.com/WordPress/ai/pull/486)). +* WP-CLI command, `wp ai alt-text generate`, for bulk alt text generation ([#436](https://github.com/WordPress/ai/pull/436)). +* Basic styles for the Content Summary block ([#510](https://github.com/WordPress/ai/pull/510)). + +**Changed** + +* Compress the AI settings page by moving the global AI toggle into the header with an infotip ([#455](https://github.com/WordPress/ai/pull/455)). +* Update AI settings page to use `@wordpress/ui` components and related UI adjustments ([#472](https://github.com/WordPress/ai/pull/472), [#488](https://github.com/WordPress/ai/pull/488), [#490](https://github.com/WordPress/ai/pull/490), [#491](https://github.com/WordPress/ai/pull/491), [#505](https://github.com/WordPress/ai/pull/505), [#519](https://github.com/WordPress/ai/pull/519)). +* AI-generated images are now saved with descriptive, slugified filenames derived from the post title or prompt instead of `ai-generated-image-` ([#471](https://github.com/WordPress/ai/pull/471)). +* For image generation, set guidelines as part of the prompt instead of system instructions ([#497](https://github.com/WordPress/ai/pull/497)). +* Update the Content Summary experiment to render the summary in a Group variation block instead of a Paragraph variation block ([#510](https://github.com/WordPress/ai/pull/510)). + +**Fixed** + +* Standards compliance switch from the custom `$builder->is_text_generation_supported()` method with the abstract `ensure_text_generation_supported()` method ([#465](https://github.com/WordPress/ai/pull/465)). +* Ability schema JSON viewer now stays LTR under RTL admin languages ([#485](https://github.com/WordPress/ai/pull/485)). +* Ensure the Generate Image button doesn't render in contexts that aren't valid ([#489](https://github.com/WordPress/ai/pull/489)). +* Localize several user-facing fallback error strings in image-generation and summarization flows ([#500](https://github.com/WordPress/ai/pull/500)). + +**Security** + +* Bump `serialize-javascript` from 6.0.2 to 7.0.5 ([#503](https://github.com/WordPress/ai/pull/503)). +* Bump `postcss` from 8.5.10 to 8.5.14 ([#503](https://github.com/WordPress/ai/pull/503)). +* Bump `minimatch` from 3.0.8 to 3.1.4 ([#503](https://github.com/WordPress/ai/pull/503)). + +Older changelog entries can be found in the [CHANGELOG.md](https://github.com/WordPress/ai/blob/trunk/CHANGELOG.md) file. + +== Upgrade Notice == + += 0.6.0 = +This version includes Breaking Changes. + += 0.5.0 = +This version bumps the WordPress minimum supported version from 6.9 to 7.0. diff --git a/showcase-image-generation.webp b/showcase-image-generation.webp new file mode 100644 index 00000000000..87d9a868659 Binary files /dev/null and b/showcase-image-generation.webp differ diff --git a/text 3.txt b/text 3.txt new file mode 100644 index 00000000000..742f5ca98e1 --- /dev/null +++ b/text 3.txt @@ -0,0 +1,65 @@ + + + + + + Bnbairbooking | Cheapest Global Hotel & Vacation Rentals + + + + +
+

Bnbairbooking

+

Undercutting the market. The cheapest global vacation & hotel reservations.

+
+ +
+ +
+

🔍 Search & Book Instantly

+

Your Travelpayouts White-Label Search Widget will load here.

+

(Paste your Travelpayouts Widget Script in the code to activate)

+
+ +
+
+

💰 Cheapest Rates

+

We pass wholesale API rates directly to you, undercutting major platforms.

+
+
+

🤖 24/7 AI Support

+

Adaptive AI problem-solving with instant video escalation to our team.

+
+
+

📱 iPhone Optimized

+

Book, manage, and track your reservations seamlessly from any device.

+
+
+
+ + + + + + + + + + ◦ diff --git a/travelpayouts.zip b/travelpayouts.zip new file mode 100644 index 00000000000..0fc34418fc8 Binary files /dev/null and b/travelpayouts.zip differ