Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /modules | List modules enabled on your account. |
| GET | /modules/{id} | Fetch a single module's configuration and runtime status. |
| PATCH | /modules/{id} | Update module settings — rule sets, WhatsApp templates, VAT rate-maps. |
| POST | /connections/profitroom | Register a Profitroom Suite API key against a Room Profit property. |
| GET | /connections/profitroom | List active Profitroom connections. |
| DELETE | /connections/profitroom/{id} | Revoke a Profitroom connection. |
| GET | /webhooks | List webhook subscriptions. |
| POST | /webhooks | Create a webhook subscription for one or more event types. |
| DELETE | /webhooks/{id} | Delete a webhook subscription. |
| GET | /invoices | List VAT invoices generated by the VAT Automation module (KSeF-numbered). |
| GET | /invoices/{id} | Fetch a single invoice with KSeF UUID + FA(2) XML. |
| POST | /reservations/sync | Force a sync of reservations from Profitroom for a given property. |
| GET | /rates/suggestions | List pending Autopricer rate suggestions for a property. |
| POST | /rates/suggestions/{id}/approve | Approve a rate suggestion — writes to Profitroom Booking Engine. |
| GET | /reviews/queue | List reviews in the moderation queue with proposed reply draft. |
| POST | /reviews/{id}/reply | Publish a reply back to the source review platform. |
Example: fetch modules
curl -X GET https://api.profit.dapokl.com/v1/modules \
-H "Authorization: Bearer rp_live_a1b2c3d4e5f6g7h8" \
-H "Accept: application/json" Response:
{
"data": [
{
"id": "mod_autopricer",
"name": "Autopricer",
"status": "active",
"property_id": "prop_1489",
"d_edge_property_code": "PL-WAW-089",
"plan": "growth",
"monthly_price_eur": 89
},
{
"id": "mod_whatsapp_concierge",
"name": "WhatsApp Concierge",
"status": "active",
"property_id": "prop_1489",
"plan": "standard",
"monthly_price_eur": 69
}
],
"meta": {
"count": 2,
"generated_at": "2026-07-28T14:22:07Z"
}
} Example: approve a rate suggestion
curl -X POST https://api.profit.dapokl.com/v1/rates/suggestions/rsg_87542/approve \
-H "Authorization: Bearer rp_live_a1b2c3d4e5f6g7h8" \
-H "Content-Type: application/json" \
-d '{"note": "Approved by revenue manager"}' Request/response conventions
- All datetimes are ISO-8601 in UTC (
2026-07-28T14:22:07Z). Property-local times are exposed as separate_localfields when relevant. - All monetary values include a currency code and a
minor_unitsinteger (EUR 89.00 ={ "currency": "EUR", "minor_units": 8900 }). - Pagination is cursor-based. Every list endpoint accepts
limit(max 200) andcursor; responses includemeta.next_cursorwhen more pages exist. - Idempotency: every write endpoint accepts an
Idempotency-Keyheader. We store and replay the response for 48 hours.
Property scoping
Room Profit modules are scoped to a Room Profit property, which maps 1:1 to a Profitroom property code. Every module-touching endpoint accepts a property_id query parameter and requires the token scope to include that property. Multi-property groups (Motława-style estates) use the group_id parameter on Rate Sync endpoints only.
Deprecation policy
Endpoints marked deprecated in the response headers (X-Roomprofit-Deprecated: true) will be removed no earlier than 12 months from the announcement date. Every deprecation is announced on the changelog.