📖 Typical Use Case Scenarios
The NGA Domain Offers API supports several typical scenarios for hotel booking flows.
Scenario 1: Multi-Hotel Search (BestOffers)
Context: User searches for hotels in Paris for 2 adults, 2 nights, December 15-17
API Call:
POST /hotels/best-offers
Payload:
Click to reveal the request payload
{
"hotelIds": ["5993", "5309", "2192", "H8189", "HB599"],
"dateIn": [2026, 12, 15],
"lengthOfStay": { "value": 2, "unit": "NIGHT" },
"adults": 2,
"childrenAges": [],
"countryMarket": "FR",
"currency": "EUR"
}
Result: List of hotels with best available offer, total price, cancellation policies
Scenario 2: Detailed Offer Selection (Offers)
Context: User clicks on a hotel and wants to see all available rooms
API Call:
GET /hotels/HB599/offers?dateIn=2026-12-15&lengthOfStay.value=2&lengthOfStay.unit=NIGHT&adults=2&countryMarket=FR
Result: Complete list of offers with room types, ratePlans, additional products, detailed policies, payment conditions
Scenario 3: Availability Calendar (Calendar)
Context: User browses calendar to choose flexible dates
API Call:
GET /hotels/2192/calendar/best-offers?from=2026-12-14&to=2026-12-21&lengthOfStay.value=2&lengthOfStay.unit=NIGHT&adults=2
Result: Calendar view with best available offer per check-in date over the requested period
⚙️ Common Parameters
Required Headers
The NGA Domain Offers API requires specific headers for authentication and identification.
| Header | Required | Description |
|---|---|---|
| clientId | Yes | API client identifier (e.g., poc.free.distrib, all.accor) |
| Authorization | Depends on client | Authentication token (Bearer, Basic, etc.) |
| Identification-JWT | Optional | User identification JWT (loyalty members) |
| Accept-Language | No | Response language (fr-FR, en-US, etc.) |
Stay Criteria Parameters
These parameters define the search criteria for hotel offers.
| Parameter | Type | Description | Example |
|---|---|---|---|
| dateIn | Array[Integer] or String | Check-in date | [2026, 12, 15] or "2026-12-15" |
| lengthOfStay | Object | Stay duration with unit (NIGHT or DAY) | { "value": 2, "unit": "NIGHT" } |
| adults | Integer | Number of adults | 2 |
| childrenAges | Array[Integer] | Children ages | [5, 11, 2] |
| countryMarket | String (ISO 2) | Country market (for pricing) | FR, US, GB |
| currency | String (ISO 3) | Desired currency (optional) | EUR, USD, GBP |
| concession | Object | Promotional code or SNU | { "unit": "SNU", "value": 1 } |
| groupCode | String | Group code for group rates | FAMGROUP2 |
Special Use Case Parameters
The API supports specialized booking scenarios through specific parameters:
- Day Use: Set
lengthOfStay.unit = "DAY"for day reservations without overnight stay - Family Bookings: Provide
childrenAgesarray for family rates (e.g.,[5, 11]) - Group Bookings: Use
groupCodeparameter for negotiated group rates - Promotional Offers: Use
concessionobject for special offers like SNU (extra nights) - Upsells: Add
include=UPSELLSparameter to retrieve premium upgrade offers - Additional Products: Use
include=REMAINING_PRODUCTSto get supplements and options
⚠️ HTTP Response Codes
The NGA Domain Offers API uses conventional HTTP response codes to indicate the success or failure of requests.
Success Codes
| Code | Description | Use Case |
|---|---|---|
| 200 OK | Success | Offers found without issues |
| 206 Partial Content | Partial success | Offers returned with warnings (e.g., some hotels unavailable) |
Client Error Codes (4xx)
| Code | Description | Use Case |
|---|---|---|
| 400 Bad Request | Invalid request | Missing or incorrect format parameters |
| 401 Unauthorized | Not authenticated | Missing or invalid token |
| 403 Forbidden | Access denied | ClientId not authorized for this operation |
| 404 Not Found | Resource not found | Non-existent HotelId or OfferId |
| 429 Too Many Requests | Rate limit exceeded | Too many requests (DDoS protection) |
Server Error Codes (5xx)
| Code | Description | Use Case |
|---|---|---|
| 500 Internal Server Error | Server error | Internal technical error |
| 504 Gateway Timeout | Provider timeout | ACRS not responding within time limit |
Some 4xx errors include an error code in the response body that briefly explains the error reported.
🖥️ Environments
The NGA Domain Offers API is available in multiple environments for testing and production use.
Environment URLs
| Environment | Base URL | Usage |
|---|---|---|
| REC (Recette) | https://api-rec.wcoff-rec.aws.accor.com | Development and qualification testing |
| INT (Integration) | https://api-int.wcoff-rec.aws.accor.com | Inter-system integration testing |
| PRE (Pre-production) | https://api-pre.wcoff-pre.aws.accor.com | Final testing before production |
| OAT (User Acceptance) | https://api-oat.wcoff-oat.aws.accor.com | End-user acceptance testing |
| PROD (Production) | https://api.wcoff.aws.accor.com | Production environment |
Environment-Specific Notes
- REC: Ideal for initial development and integration testing
- INT: Used for validating integrations between different systems
- PRE: Mirror of production, used for final validation before go-live
- OAT: Dedicated environment for business user acceptance testing
- PROD: Live production environment serving real customers
Example URLs
- REC:
https://api-rec.wcoff-rec.aws.accor.com/web/offers/v1/hotels/best-offers - PROD:
https://api.wcoff.aws.accor.com/web/offers/v1/hotels/best-offers
📊 Monitoring & Support
The NGA Domain Offers API provides comprehensive monitoring and debugging capabilities.
Actuator Endpoints
The API exposes Spring Boot Actuator endpoints for health monitoring:
- Health Check:
GET /actuator/health- Returns the application health status - Info:
GET /actuator/info- Returns version and build information
Example:
GET https://api-rec.wcoff-rec.aws.accor.com/web/offers/v1/actuator/health
Click to reveal the response example
{
"status": "UP",
"components": {
"diskSpace": { "status": "UP" },
"ping": { "status": "UP" }
}
}
Logs and Debugging with Splunk
All API calls are traced in Splunk with their CJID (Correlation Journey ID), enabling end-to-end request tracking across all systems.
How to use CJID for debugging:
- Extract the CJID from the response headers or logs
- Search in Splunk using:
CJID="your-correlation-id" - View the complete journey of the request through all systems (REST → Domain → ACRS)
Splunk environments:
- REC: Access via Splunk REC instance
- PROD: Access via Splunk PROD instance with appropriate permissions
Postman Collection
A complete Postman collection is available with 23 examples covering all use cases:
Collection location: docs/api/postman-collections/DOMAIN.postman_collection.json
Included examples:
- BestOffers (night, dayuse)
- Calendar (standard, dayuse, remaining products)
- Offers (standard, FMLY, PMR, Thalassa, Group, SNU, OAT, PROD)
- OfferById (standard, Thalassa, Upsells)
- Health & Info
- NGL Benefits (loyalty rewards)
Using the collection:
- Import the JSON file into Postman
- Configure environment variables (base URL, clientId, tokens)
- Run individual requests or entire collections
- Use examples as templates for your own integrations
Getting Support
For technical questions or support:
- Internal teams: Contact the Offers API Team
- External partners: Use your designated support channel
- Documentation: Refer to the technical documentation
- Swagger/OpenAPI: Detailed API specifications available
Rate Limiting
The API implements rate limiting to protect against overload:
- Monitor the response headers for rate limit information
- If you receive 429 Too Many Requests, implement exponential backoff
- Contact support if you need higher rate limits for your use case