API Booking Service

Материал из Megatec
Перейти к: навигация, поиск

Содержание

Introduction

Booking Service provides an API for managing reservations and interacting with existing requests. The service allows you to: receive/create/edit/canceling requests, manage users and agent settings, work with additional services, transfers, and reports. To use the service, you must install a Windows service.

Installation and Configuration

Before installing the API, you must configure the appsettings.json configuration file.

  • Connecting to the Master-Interlook database:
{
"ConnectionParameters": {
"MainDatabase": {
"databaseType": 1, - database type used: 1 - MSSQL, 2 - PostgreSQL (not yet implemented)
"server": "", - SQL server address
"database": "", - Interlook database name
"user": "", - database user login
"password": "", - database user password (fill in)
"appName": "Interlook_BookingService_VKE" - application name when connecting to the SQL server
},
"ExtraDatabases": [] - list of additional databases (if used)
},
  • JWT service authentication:
JWT service authentication:
"Jwt": {
"Key": "", - secret encryption key generated by the user
"TokenValidityInMinutes": 2 - token lifetime in minutes
},
  • Connecting to remote services:
"RemoteServices": {
"GDSIncomingServiceUrl": "http://localhost:7709", - GDS incoming request service address
"CalculateServiceUrl": "http://localhost:7701" - calculation service address
},
  • Service operation modes:
"UseCalculateRemote": true - whether to use remote calculation. If true, it works through an external service (searth service); if false, it works through internal logic.
"UseMainCache": false - whether to load the main cache (if UseCalculateRemote is not enabled, it will calculate via the database, otherwise via the cache); default is false
  • Restrictors:
"Restrictions": {
"IsAlwaysConfirmed": false - Controls the substitution of statuses for the external system (ES).
// If true, status normalization is enabled when sending to an external system:
// Confimed, WaitingConfirmation, Wait -> confirmed
// NotConfirmed, Canceled, Cancel -> cancelled
// WaitingCancellation -> pending
// If false, statuses are sent as is: Wait, Confimed, Cancel, NotConfirmed, WaitingCancellation
},
  • Service operation logging:
"Logger": {
"EnableConsole": false, - output logs to the console (for application mode)
"EnableFile": true, - write logs to a file
"FilePath": "", - path to the log directory
"MaxLogFileSize": 10, - maximum log file size (MB)
"MaxOldLogFilesCount": 30, - maximum number of log files
"EnableLogService": false, - logging via the logging service
"LogServiceAddress": "" - logging service address
},
  • Service installation/launch parameters:
"Install": {
"ServiceName": "Interlook_BookingService_VKE", - Windows service name
"ServiceAddress": [ "http://*:7070/booking" ], - address/port where the service is available
"IPAddress": "IPAddress.IPv6Any", - IP binding
"GRPCPort": 7071, - gRPC port
"HttpsCertificate": {
"CertFile": "", - path to the certificate file (if HTTPS is used)
"CertPassword": "", - certificate password
"CertHost": "", - host to which the certificate is issued
"CertHash": "", - certificate thumbprint
"CertStoreLocation": "LocalMachine" - certificate store location (CurrentUser/LocalMachine)
}
},
  • Accessibility from external networks:
"AllowedHosts": "megatec.ru;*.megatec.ru" - a string of hosts separated by semicolons, "*" - allow any host

Method Description

Admin

Agent Registration (SendAgentRegistration)

Method: POST /booking/SendAgentRegistration

  • Accepted Parameters (Request Body):
    • companyName – company name
    • agencyName – agency name
    • countryName – country name
    • cityName – city name
    • zipCode – postal code
    • address – address
    • id – identifier
    • license – license
    • vat – VAT number
    • phones – phone numbers
    • email – email
    • contactPersonName – contact person
    • comment – ​​comment
  • Return Result:
    • isOk – general indicator of successful request processing: can be true (success) or false (error)
    • hasSuccess – indicator Successful recipients/operations processed: can be true or false
    • errors – array of errors (if any)
      • title – error title/ID (e.g., email address)
      • errorMessage – error/exception text
    • success – array of successfully processed recipients/values ​​(e.g., email list to which notification was sent)
Example

Calling the /booking/SendAgentRegistration method

POST http://localhost:7700/booking/SendAgentRegistration
{ 
"companyName": "string", 
"agencyName": "string", 
"countryName": "string", 
"cityName": "string", 
"zipCode": "string", 
"address": "string", 
"id": "string", 
"license": "string", 
"vat": "string", 
"phones": "string", 
"email": "string", 
"contactPersonName": "string", 
"comment": "string"
}

Return result:

{
"isOk": true,
"hasSuccess": true,
"errors": [],
"success": [ "perlov@megatec.ru" ]
}

Return result (error):

{ 
"isOk": false, 
"hasSuccess": false, 
"errors": [ 
{ 
"title": "stamsvam@gmail.com", 
"errorMessage": "Error sending to mailing addresses (stamsvam@gmail.com): System.Net.Mail.SmtpException: Bad sequence of commands. The server response was: 5.5.4 Error: send AUTH command first. 1759681423-hNm8OHdMGqM0-uauNKH69\r\n at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)\r\n at System.Net.Mail.MailCommand.EndSend(IAsyncResult result)\r\n at System.Net.Mail.SendMailAsyncResult.SendMailFromCompleted(IAsyncResult result)\r\n--- End of stack trace from previous location ---\r\n at System.Net.Mail.SendMailAsyncResult.End(IAsyncResult result)\r\n at System.Net.Mail.SmtpClient.SendMailCallback(IAsyncResult result)\r\n--- End of stack trace from previous location ---\r\n at Megatec.Interlook.DataModel.Mail.Account.SendMessage(MailMessage mailMessage)\r\n at Megatec.Interlook.MailLayer.MailManager.SendMail(String msg, String subject, IEnumerable`1 addressees, Boolean isHtml, IEnumerable`1 attachments, Int32 action)" 
} 
], 
"success": []
}


Getting Partner Data (GetAgentParams)

Method: GET /booking/GetAgentParams

  • Returned Result:
    • key – unique identifier
    • name – title
    • address – address
    • phones – phone numbers
    • email – email
    • webSite – website URL
    • webName – website name
    • logoIcon – logo
      • key – logo file identifier
      • name – file name with extension
      • size – size
      • data – date added
      • compressed – logo size
      • mime – MIME file type (e.g., image/png)
      • type – file format
      • originalType – original file type
Example

Calling the /booking/GetAgentParams method

GET http://localhost:7700/booking/GetAgentParams
Return result:
<syntaxhighlight lang="java" enclose="div">
{ 
"key": 0, 
"name": "string", 
"address": "string", 
"phones": "string", 
"email": "string", 
"webSite": "string", 
"webName": "string", 
"logoIcon": { 
"key": 0, 
"name": "string",
"size": 0,
"data": "string",
"compressed": false,
"mime": "string",
"type": "string",
"originalType": "string"
}
}


Editing a Partner (SaveAgentParams)

Method: PUT /booking/SaveAgentParams

  • Request Format:
  • Accepted Parameters (Request Body):
    • key – unique identifier
    • name – title
    • address – address
    • phones – phone numbers
    • email – email
    • webSite – website URL
    • webName – website name
    • logoIcon – logo
      • key – logo file ID
      • name – file name with extension
      • size – size
      • data – date added
      • compressed – logo size
      • mime – MIME file type (e.g., image/png)
      • type – file format
      • originalType – original file type
Example

Calling the /booking/SaveAgentParams method

PUT http://localhost:7700/booking/SaveAgentParams
{
"key": 0,
"name": "string",
"address": "string",
"phones": "string", 
"email": "string", 
"webSite": "string", 
"webName": "string", 
"logoIcon": { 
"key": 0, 
"name": "string", 
"size": 0, 
"data": "string", 
"compressed": false, 
"mime": "string", 
"type": "string", 
"originalType": "string" 
}
}

Return result:

HTTP/1.1 200 OK


Authentication (Auth)

Method: POST /booking/Auth

  • Request format:
  • Accepted parameters:
    • token – authorization token
  • Returned result:
    • authCode – authentication code
    • login – login
    • password – password
    • userID – user ID
    • onlineUserKey – online user key
    • userKey – user key
    • partnerKey – partner key
    • partnerName – partner name
    • filialKey – branch key
    • personConnectionId – personal ID
    • name – title
    • firstName – first name
    • fullName – full name
    • title – title
    • birthDay – date of birth
    • createDate – creation date
    • actions – actions field
    • authenticationType – authentication type
    • isAuthenticated – can be true or false
    • isBlocked – Can be true or false
    • isPartnerHotel – Can be true or false
Example

Calling the /booking/Auth method

POST http://localhost:7700/booking/Auth

Returned result:

{
"authCode": "string",
"login": "string",
"password": "string",
"userID": "string", 
"onlineUserKey": 0, 
"userKey": 0, 
"partnerKey": 0, 
"partnerName": "string", 
"filialKey": 0, 
"personConnectionId": 0, 
"name": "string", 
"firstName": "string", 
"fullName": "string", 
"title": "string", 
"birthDay": "2025-10-05T17:01:04.411Z", 
"createDate": "2025-10-05T17:01:04.411Z", 
"actions": [ 
0 
], 
"authenticationType": "string", 
"isAuthenticated": true, 
"isBlocked": true, 
"isPartnerHotel": true
}

Return result 400 Error: Bad Request

{ 
"errors": { 
"token": [ 
"The token field is required." 
]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-6a913f29fe774ba54a1c9a07a07ee604-33a17ac002471c42-00"
}


Getting Permissions (GetMyActions)

Method: GET /booking/GetMyActions

  • Returned Result:
    • key – unique user ID
    • firstName – first name (string)
    • name – short name/login display
    • fullName – full name
    • birthday – date of birth in ISO format (ISO 8601, e.g. 2025-10-05T17:20:11.154Z)
    • title – job title
    • login – user login
    • password – password
    • contacts – contact information
      • phoneCell – mobile phone
        • key – record ID
        • value – phone number
      • phoneOffice – work phone
        • key – record ID
        • value – phone number
      • email – email address
        • key – record ID
        • value – email
      • skype – Skype account
        • key – record ID
        • value – account name
    • actionGroups – action group membership flags, can be true or false
    • permissions – User rights object
      • editAddress – Allows address editing, can be true or false
      • editContacts – Allows contact editing, can be true or false
      • editPassword – Allows password changes, can be true or false
      • editPersonData – Allows personal data editing, can be true or false
      • editActions – Allows managing actions/roles, can be true or false
    • titlesList – List of job titles
Example

Calling the /booking/GetMyActions method

GET http://localhost:7700/booking/GetMyActions

Return result:

[ 
{ 
"key": 0, 
"firstName": "string", 
"name": "string", 
"fullName": "string", 
"birthday": "2025-10-05T17:20:11.154Z", 
"title": "string", 
"login": "string", 
"password": "string", 
"contacts": { 
"phoneCell": { 
"key": 0, 
"value": "string" 
}, 
"phoneOffice": { 
"key": 0, 
"value": "string" 
}, 
"email": { 
"key": 0, 
"value": "string" 
}, 
"skype": { 
"key": 0, 
"value": "string" 
} 
}, 
"actionGroups": { 
"additionalProp1": true, 
"additionalProp2": true, 
"additionalProp3": true 
}, 
"permissions": { 
"editAddress": true, 
"editContacts": true, 
"editPassword": true, 
"editPersonData": true, 
"editActions": true
    },
    "titlesList": [
      "string"
    ]
  }
]


Getting Authorized Person Parameters (GetAuth)

Method: GET /booking/GetAuth

  • Returned Result:
    • authCode – Authentication code
    • login – Username
    • password – Password
    • userID – User ID
    • onlineUserKey – Online User Key
    • userKey – User Key
    • partnerKey – Partner Key
    • partnerName – Partner Name
    • filialKey – Branch Key
    • personConnectionId – Personal Connection ID
    • name – First Name
    • firstName – Last Name
    • fullName – Full Name
    • title – Title
    • birthDay – Date of Birth
    • createDate – Creation Date
    • actions – Actions Field
    • authenticationType – Authentication Type
    • isAuthenticated – Can be true or false
    • isBlocked – may be true or false
    • isPartnerHotel – may be true or false
Example

Calling the /booking/GetAuth method

GET http://localhost:7700/booking/GetAuth

Returned result:

{
"authCode": "string",
"login": "string",
"password": "string", 
"userID": "string", 
"onlineUserKey": 0, 
"userKey": 0, 
"partnerKey": 0, 
"partnerName": "string", 
"filialKey": 0, 
"personConnectionId": 0, 
"name": "string", 
"firstName": "string", 
"fullName": "string", 
"title": "string", 
"birthDay": "2025-10-05T17:39:36.838Z", 
"createDate": "2025-10-05T17:39:36.838Z", 
"actions": [ 
0 
], 
"authenticationType": "string", 
"isAuthenticated": true, 
"isBlocked": true, 
"isPartnerHotel": true
}


Getting a list of online users (GetWebUsers)

Method: POST /booking/GetWebUsers

  • Request format:
  • Accepted parameters (Request body):
    • login – filter by user login
    • name – filter by name/display name
    • email – filter by email
    • phone – filter by phone number
    • paging – results pagination parameters
      • number – page number (usually starting with 1; 0 may be interpreted by the service as the first page or disabled pagination)
      • size – page size (> 0; maximum number of records per page)
  • Returned result:
    • key – unique user identifier
    • login – user login
    • firstName – Last Name
    • First Name - First Name
    • Full Name - Full Name
    • CreateDate - Account creation date/time in ISO 8601 format (e.g., 2025-10-05T17:56:47.213Z)
    • Birthday - Date of birth in ISO 8601 format (e.g., 2025-10-05T17:56:47.213Z)
    • CanDelete - Whether this user can be deleted, can be true or false
    • CanEdit - Whether this user can be edited, can be true or false
    • IsLoggedIn - Whether the user is logged in, can be true or false
    • IsSuperUser - Whether the user is a superuser/administrator, can be true or false
Example

Calling the /booking/GetWebUsers method

POST http://localhost:7700/booking/GetWebUsers
{ 
"login": "string", 
"name": "string", 
"email": "string", 
"phone": "string", 
"paging": { 
"number": 0, 
"size": 0 
}
}

Return result:

[ 
{ 
"key": 0, 
"login": "string", 
"firstName": "string", 
"name": "string", 
"fullName": "string", 
"createDate": "2025-10-05T17:56:47.213Z", 
"birthday": "2025-10-05T17:56:47.213Z", 
"canDelete": true, 
"canEdit": true, 
"isLoggedIn": true, 
"isSuperUser": true 
}
]


Getting Online User Data (GetPersonParams)

Method: GET /booking/GetPersonParams

  • Request Format:
  • Accepted Parameters:
    • personKey – personal key
  • Returned Result:
    • key – unique record identifier
    • firstName – last name
    • name – first name
    • fullName – full name
    • birthday – date of birth in ISO 8601 format (e.g., 2025-10-05T18:15:10.853Z)
    • title – job title
    • login – user login
    • password – user password
    • contacts – user contacts
      • phoneCell – mobile phone
        • key – contact record identifier
        • value – phone number
      • phoneOffice – work phone
        • key – contact record identifier
        • value – number Phone
      • Email – Email address
        • Key – Contact ID
        • Value – Email
      • Skype – Skype account
        • Key – Contact ID
        • Value – Account name
    • ActionGroups – Action Group membership flags object, can be true or false
    • Permissions – User permissions object
      • EditAddress – Allows address editing, can be true or false
      • EditContacts – Allows contact editing, can be true or false
      • EditPassword – Allows password change, can be true or false
      • EditPersonData – Allows personal data editing, can be true or false
      • EditActions – Allows actions/roles management, can be true or false
    • TitlesList – List of user titles/tags
Example

Calling the /booking/GetPersonParams method

GET http://localhost:7700/booking/GetPersonParams

Return result:

[ 
{ 
"key": 0, 
"firstName": "string", 
"name": "string", 
"fullName": "string", 
"birthday": "2025-10-05T18:15:10.853Z", 
"title": "string", 
"login": "string", 
"password": "string", 
"contacts": { 
"phoneCell": { 
"key": 0, 
"value": "string" 
}, 
"phoneOffice": { 
"key": 0, 
"value": "string" 
}, 
"email": { 
"key": 0, 
"value": "string" 
}, 
"skype": { 
"key": 0, 
"value": "string" 
} 
}, 
"actionGroups": { 
"additionalProp1": true, 
"additionalProp2": true, 
"additionalProp3": true 
}, 
"permissions": { 
"editAddress": true, 
"editContacts": true, 
"editPassword": true, 
"editPersonData": true, 
"editActions": true 
}, 
"titlesList": [ 
"string" 
] 
}
]


Editing Online Users (SavePersonParams)

Method: PUT /booking/SavePersonParams

  • Request Format:
  • Accepted Parameters (Request Body):
    • key – unique user record identifier
    • firstName – first name
    • name – short/display name
    • fullName – full name
    • birthday – date of birth in ISO 8601 format (e.g., 2025-10-05T18:22:12.104Z)
    • title – job title
    • login – user login
    • password – user password
    • contacts – contact information object
      • phoneCell – mobile phone
        • key – contact record identifier
        • value – phone number
      • phoneOffice – work phone
        • key – contact record identifier
      • value – phone number
      • email – email
      • key – contact record identifier
      • value – email
      • skype – Skype account
      • key – contact record identifier
      • value – account name
    • actionGroups – action group membership flags object (true/false values)
    • permissions – user rights object
      • editAddress – allowed to edit address (true/false values)
      • editContacts – allowed to edit contacts (true/false values)
      • editPassword – allowed to change password (true/false values)
      • editPersonData – allowed to edit personal data (true/false values)
      • editActions – allowed to manage actions/roles (true/false values)
    • titlesList – list of user titles/tags (string array)
  • Returned result:
    • key – unique user identifier
    • login – user login
    • firstName – Last Name
    • First Name - First Name
    • Full Name - Full Name
    • CreateDate - Date/Time of Record Creation/Modification (ISO 8601)
    • Birthday - Date of Birth (ISO 8601)
    • CanDelete - Whether this user can be deleted (true/false values)
    • CanEdit - Whether this user's data can be edited (true/false values)
    • IsLoggedIn - Whether the user is actively logged in (true/false values)
    • isSuperUser – superuser/administrator flag (true/false values)
Example

Calling the /booking/SavePersonParams method

PUT http://localhost:7700/booking/SavePersonParams
{
"key": 0,
"firstName": "string",
"name": "string",
"fullName": "string",
"birthday": "2025-10-05T18:22:12.104Z", 
"title": "string", 
"login": "string", 
"password": "string", 
"contacts": { 
"phoneCell": { 
"key": 0, 
"value": "string" 
}, 
"phoneOffice": { 
"key": 0, 
"value": "string" 
}, 
"email": { 
"key": 0, 
"value": "string" 
}, 
"skype": { 
"key": 0, 
"value": "string" 
} 
}, 
"actionGroups": { 
"additionalProp1": true, 
"additionalProp2": true, 
"additionalProp3": true 
}, 
"permissions": { 
"editAddress": true, 
"editContacts": true, 
"editPassword": true, 
"editPersonData": true, 
"editActions": true 
}, 
"titlesList": [ 
"string" 
]
}

Return result:

{ 
"key": 0, 
"login": "string", 
"firstName": "string", 
"name": "string", 
"fullName": "string", 
"createDate": "2025-10-05T18:24:54.936Z", 
"birthday": "2025-10-05T18:24:54.936Z", 
"canDelete": true, 
"canEdit": true, 
"isLoggedIn": true, 
"isSuperUser": true
}


Delete Online Users (DeleteWebUser)

Method: DELETE /booking/DeleteWebUser

  • Request Format:
  • Accepted Parameters:
    • webUserKey – unique identifier of the web user to be deleted (integer, required). The value is taken from the key field in the GetWebUsers method results.
  • Returned result:
    • Code 200 OK — user successfully deleted
Example

Calling the /booking/DeleteWebUser method (passing the ID in the query string)

DELETE http://localhost:7700/booking/DeleteWebUser?webUserKey=123

Returned result:

HTTP/1.1 200 OK


Getting markup types (GetMarkupTypes)

Method: GET /booking/GetMarkupTypes

  • Returned result: (array of markup types)
    • key – unique markup type identifier
    • name – name/display name of the markup type
Example

Calling the /booking/GetMarkupTypes method

GET http://localhost:7700/booking/GetMarkupTypes

Returned result:

[
{
"key": 0,
"name": "string"
}
]


Getting Markups (GetMarkups)

Method: GET /booking/GetMarkups

  • Request format:
  • No accepted parameters
  • Returned result:
    • key – unique identifier of the markup record
    • category – category/area of ​​the markup application, e.g., "Hotel," "Geography," "Category"
    • hotel – name of the hotel to which the markup applies (for hotel markups)
    • geography – geographic area of ​​application (city/region/country) (for geographic markups)
    • amount – amount of the markup for adults. Interpretation depends on isPercent:
      • if isPercent=true — a percentage (e.g., 10 = +10%)
      • if isPercent=false — a fixed amount (in the base currency)
    • childAmount — the surcharge amount for children, according to the same rules as amount
    • isPercent — whether the surcharge is specified as a percentage. If false, a fixed amount is used
    • isPerNight — the surcharge is applied per night. If true, the amount/percentage is calculated for each night; if false, for the entire stay
    • type — the surcharge type, typically corresponds to one of the values ​​from the surcharge type directory
    • entityKey — the key of the related entity: for a hotel surcharge — the hotel key, for a geography — the region/city key, etc.
Example

Calling the /booking/GetMarkups method

GET http://localhost:7700/booking/GetMarkups

Return result:

[ 
{ 
"key": 0, 
"category": "string", 
"hotel": "string", 
"geography": "string", 
"amount": 0,
"childAmount": 0,
"isPercent": true,
"isPerNight": true,
"type": 0,
"entityKey": 0
}
]


Getting editable markup parameters (GetMarkupEditParams)

Method: GET /booking/GetMarkupEditParams

  • Returned result:
    • key – unique identifier of the markup entry
    • type – markup type
    • amount – markup amount for adults: if isPercent=true, interpreted as a percentage; If false, as a fixed amount.
    • childAmount – the surcharge amount for children, according to the same rules as amount.
    • isPercent – ​​indicates whether the surcharge is specified as a percentage. If false, a fixed amount is used.
    • isPerNight – per-night pricing: true – charged per night, false – charged for the entire stay.
    • value – linked entity object (what the markup is applied to, e.g., hotel/geography/category)
      • key – entity identifier
      • name – entity name.
Example

Calling the /booking/GetMarkupEditParams method

GET http://localhost:7700/booking/GetMarkupEditParams?markupKey=205

Returned result:

{
"key": 0,
"type": 0,
"amount": 0,
"childAmount": 0,
"isPercent": true,
"isPerNight": true,
"value": {
"key": 0,
"name": "string"
}
}


Editing markup parameters (SaveMarkupEditParams)

Method: PUT /booking/SaveMarkupEditParams

  • Request format:
  • Accepted parameters (Request body):
    • key – unique identifier of the markup being edited.
    • type – markup type. The value matches one of the types in the reference list.
    • amount – markup amount for adults. If isPercent = true, it is a percentage (e.g., 10 = +10%); if false, it is a fixed amount in the base currency.
    • childAmount – markup amount for children, according to the same rules as amount.
    • isPercent – ​​indicates whether the markup is specified as a percentage. If false, a fixed amount is used.
    • isPerNight – indicates whether the markup is applied "per night." If true, the markup is calculated for each night of the stay; if false, it is calculated for the entire stay. ** value – the bound entity object to which the surcharge is applied (hotel/geography/category, etc.)
      • key – entity identifier – for example, the hotel or region key.
      • name – entity name – for example, the name of the hotel or region.
  • Returned result:
    • key – unique identifier of the surcharge record
    • category – category for which the surcharge is applied, e.g., "Hotel," "Geography," "Category"
    • hotel – hotel name, if the surcharge is bound to a specific hotel; otherwise, empty
    • geography – geographic region, if the surcharge is geographic; otherwise, empty
    • amount – surcharge amount for adults, according to isPercent rules
    • childAmount – surcharge amount for children, according to isPercent rules
    • isPercent – ​​flag for a percentage surcharge. If false, a fixed amount is used.
    • isPerNight – flag for "per night" application. If true, the surcharge is applied for each night of stay; if false, for the entire stay.
    • type – surcharge type, matches the type reference
    • entityKey – key of the associated entity: the key of the hotel/region/category to which the surcharge is applied
Example

Calling the /booking/SaveMarkupEditParams method

PUT http://localhost:7700/booking/SaveMarkupEditParams
{ 
"key": 0, 
"type": 0, 
"amount": 0, 
"childAmount": 0, 
"isPercent": true, 
"isPerNight": true, 
"value": { 
"key": 0, 
"name": "string"
}
}

Returned result:

{
"key": 0,
"category": "string",
"hotel": "string",
"geography": "string",
"amount": 0,
"childAmount": 0,
"isPercent": true,
"isPerNight": true,
"type": 0,
"entityKey": 0
}


Delete Markups (DeleteMarkup)

Method: DELETE /booking/DeleteMarkup

Example

Calling the /booking/DeleteMarkup method

DELETE http://localhost:7700/booking/DeleteMarkup?markupKey=205

Returned result:

HTTP/1.1 200 OK


Getting Additional Partner Parameters (GetPartnerExtras)

Method: GET /booking/GetPartnerExtras

  • Request Format:
  • No accepted parameters
  • Returned Result:
    • key – unique identifier of the settings record
    • prKey – identifier of the partner to which the settings apply
    • daysOffsetCancellationPolicy – ​​day offset for the cancellation policy: how many days before arrival the cancellation conditions (penalties, etc.) take effect/are changed
    • daysOffsetPaymentPolicy – ​​day offset for the payment policy: how many days before arrival the payment is due/payment conditions are changed


Example

Calling the /booking/GetPartnerExtras method

GET http://localhost:7700/booking/GetPartnerExtras

Return result:

{ 
"key": 0, 
"prKey": 0, 
"daysOffsetCancellationPolicy": 0, 
"daysOffsetPaymentPolicy": 0
}


Editing Additional Partner Parameters (SavePartnerExtras)

Method: PUT /booking/SavePartnerExtras

  • Request format:
  • Accepted parameters (Request body):
    • key – unique identifier of the settings record
    • prKey – identifier of the partner for which the settings are applied.
    • daysOffsetCancellationPolicy – ​​offset (number of days) for the cancellation policy: how many days before the check-in date do cancellation policies (penalties, etc.) take effect/change?
    • daysOffsetPaymentPolicy – ​​offset (number of days) for the payment policy: how many days before the check-in date do the payment deadlines become due/change?
  • Returned result:
    • key – unique settings record identifier
    • prKey – partner identifier
    • daysOffsetCancellationPolicy – ​​configured day offset for cancellation policy
    • daysOffsetPaymentPolicy – ​​configured day offset for payment policy
Example

Calling the /booking/SavePartnerExtras method

PUT http://localhost:7700/booking/SavePartnerExtras
{
"key": 0, 
"prKey": 0, 
"daysOffsetCancellationPolicy": 0, 
"daysOffsetPaymentPolicy": 0
}

Return result:

{ 
"key": 0, 
"prKey": 0, 
"daysOffsetCancellationPolicy": 0, 
"daysOffsetPaymentPolicy": 0
}


Getting Payment Settings (GetPayments)

Method: GET /booking/GetPayments

  • Request Format:
  • Accepted Parameters:
    • dateFrom – interval start date/time (ISO 8601). Filter by payments from and including this date (e.g., 2025-10-01 or 2025-10-01T00:00:00Z).
    • dateTo – interval end date/time (ISO 8601). Filter by payments up to and including this date (e.g., 2025-10-31 or 2025-10-31T23:59:59Z).
  • Returned result:
    • items – list of payments
      • key – unique payment identifier
      • docNumber – document/payment document number
      • date – payment date/time (in ISO 8601 format)
      • amount – payment amount
      • currency – payment currency (e.g., RUB, USD, EUR)
    • totals – aggregated totals for the selection
      • key – total key
      • value – total value
Example

Calling the /booking/GetPayments method

GET http://localhost:7700/booking/GetPayments?dateFrom=2025-10-01&dateTo=2025-10-31

Return result:

 
{ 
"items": [ 
{ 
"key": 0, 
"docNumber": "string", 
"date": "2025-10-05T19:31:45.484Z", 
"amount": 0, 
"currency": "string" 
} 
], 
"totals": [ 
{ 
"key": 0, 
"value": "string" 
} 
]
}



Booking

Create a Travel Package (Createreservation)

Method: POST /booking/CreateReservation

  • Request format:
  • Accepted parameters (Request body):
    • rate – rate/offer for which the reservation is made
      • id – rate identifier
    • touristServices – tourist ↔ service links
      • touristRoomNumber – room/boarding number for the tourist
      • serviceID – service identifier
      • touristID – tourist identifier
    • services – list of services in the reservation
      • externalID – external identifier of the service in an external system
      • nMen – number of tourists for the service
      • additionalParams – additional service parameters
        • key – parameter name
        • value – parameter value
      • startDate – service start date (ISO 8601)
      • duration – duration in nights/days
      • id – service identifier
      • hotel – hotel
        • id – hotel identifier
      • room – accommodation parameters
        • roomTypeID – room type
        • roomCategoryID – room category
        • roomAccomodationID – accommodation type
      • pansionID – board identifier
    • tourists – list of tourists
      • sex – gender
      • birthDate – date of birth (ISO 8601)
      • firstNameLat – first name in Latin characters
      • surNameLat – last name in Latin characters
      • foreignPassport – foreign passport
        • serie – series
        • number – number
        • endDate – end date (ISO 8601)
      • ageType – age type
      • isMain – main tourist indicator, can be true or false
      • id – tourist identifier
      • phone – phone number
    • tourOperatorID – tour operator identifier
    • tourOperatorCode – tour operator code
    • hasInvoices – indicator that by Bookings have invoices, can be true or false
    • id – Booking ID
    • externalID – Booking external ID
  • Returned result:
    • rate – Rate details
      • additionalParams – Additional rate parameters
        • key – Parameter name
        • value – Parameter value
      • name – Rate name
      • id – Rate ID
      • description – Description
      • descriptionSpecified – Whether the description field is complete, can be true or false
      • nameLat – Latin name
      • nameLatSpecified – Whether nameLat is complete, can be true or false
      • code – Rate code
      • codeSpecified – Whether code is complete, can be true or false
      • codeLat – Latin code
      • codeLatSpecified – Whether codeLat is complete, can be true or false
      • unicode – Unicode code/designation
      • unicodeSpecified – Whether unicode is complete, can be true or false
      • isMain – base rate flag, can be true or false
      • isNational – national rate flag, can be true or false
    • touristServices – links between tourists and services
      • id – link identifier
      • touristRoomNumber – room/boarding number
      • serviceID – service identifier
      • touristID – tourist identifier
    • services – booking services
      • externalID – external identifier
      • price – service price
      • nMen – number of tourists
      • partnerID – partner identifier
      • packetKey – package service/package key
      • detailNetto – net detailing
      • detailBrutto – gross detailing
      • notes – notes
      • name – service name
      • startDate – service start date (ISO 8601)
      • endDate – service end date (ISO 8601)
      • startDay – "start day" relative to the tour
      • duration – duration
      • rateBrutto – gross rate
      • brutto – amount gross
      • rateNetto – net rate
      • netto – net amount
      • serviceClassID – service class
      • touristCount – number of tourists for the service
      • id – service identifier
      • status – service status
        • additionalParams – additional Status parameters
          • key – parameter name
          • value – parameter value
        • name – status name
        • id – status identifier
        • description – status description
        • descriptionSpecified – status status indicator, can be true or false
        • nameLat – name in Latin characters
        • nameLatSpecified – status status indicator, can be true or false
        • code – status code
        • codeSpecified – status status indicator, can be true or false
        • codeLat – code in Latin characters
        • codeLatSpecified – status status indicator, can be true or false
        • unicode – Unicode code/designation
        • unicodeSpecified – status status indicator
      • additionalParams – additional service parameters
        • key – parameter name
        • value – parameter value
    • id – booking identifier
    • name – booking name/code
    • netto – net total amount
    • grosstotal amount
    • countryID – identifier Countries
    • cityID – City ID
    • partnerID – Partner ID
    • startDate – Tour/stay start date (ISO 8601)
    • endDate – Tour/stay end date (ISO 8601)
    • duration – Tour duration
    • creationDate – Booking creation date/time (ISO 8601)
    • creatorID – Creator ID
    • tourists – Total list of tourists in the booking
      • sex – Gender
      • firstName – First name
      • lastName – Middle name
      • surName – Last name
      • birthDate – date of birth (ISO 8601)
      • firstNameLat – first name in Latin
      • surNameLat – last name in Latin
      • lastNameLat – middle name/patronymic in Latin
      • localPassport – domestic passport
        • issuedBy – issued by
        • serie – series
        • number – number
        • issueDate – issue date (ISO 8601)
        • endDate – expiration date (ISO 8601)
      • foreignPassport – international passport
        • issuedBy – issued by
        • serie – series
        • number – number
        • issueDate – issue date (ISO 8601)
        • endDate – expiration date (ISO 8601)
      • ageType – age type
      • citizen – citizenship
      • isMain – main tourist indicator, can be true or false
      • externalID – external identifier
      • additionalParams – additional tourist parameters
      • key – parameter name
      • value – parameter value
      • id – tourist ID
      • phone – phone
      • email – email
    • ownerID – owner/agency ID
    • tourOperatorID – tour operator ID
    • tourOperatorCode – tour operator code
    • hasInvoices – flag for the presence of invoices, can be true or false
    • externalID – external booking ID
    • additionalParams – additional booking parameters
      • key – parameter name
      • value – parameter value
Example

Calling the /booking/CreateReservation method

POST http://localhost:7700/booking/CreateReservation
{
  "rate": {
    "id": 1
  },
  "touristServices": [
    {
      "touristRoomNumber": "1408",
      "serviceID": -1,
      "touristID": -1
    },
    {
      "touristRoomNumber": "1408",
      "serviceID": -1,
      "touristID": -2
    }
  ],
  "services": [
    {
      "externalID": 0,
      "nMen": 2,
      "additionalParams": [
        {
          "key": "Type",
          "value": "HotelService"
        }
      ],
      "startDate": "2024-09-09T00:00:00",
      "duration": 8,
      "id": -1,
      "hotel": {
        "id": 4387
      },
      "room": {
        "roomTypeID": 58,
        "roomCategoryID": 65,
        "roomAccomodationID": 2231
      },
      "pansionID": 29
    }
  ],
  "tourists": [
    {
      "sex": 0,
      "birthDate": "1966-06-28T00:00:00",
      "firstNameLat": "John",
      "surNameLat": "Cusack",
      "foreignPassport": {
        "serie": "AA",
        "number": "123456"
      },
      "ageType": 0,
      "isMain": true,
      "id": -1,
      "phone": "+79661230947"
    },
    {
      "sex": 0,
      "birthDate": "1999-11-28T00:00:00",
      "firstNameLat": "Mike",
      "surNameLat": "Enslin",
      "foreignPassport": {
        "serie": "ZZ",
        "number": "654321",
        "endDate": "2024-08-14T00:00:00"
      },
      "ageType": 0,
      "isMain": false,
      "id": -2
    }
  ],
  "tourOperatorID": 0,
  "tourOperatorCode": "bloodandsmoke",
  "hasInvoices": false,
  "id": 0,
  "externalID": 0
}

Returned result:

 
{
  "rate": {
    "additionalParams": [
      {
        "key": "string",
        "value": "string"
      }
    ],
    "name": "string",
    "id": 0,
    "description": "string",
    "descriptionSpecified": true,
    "nameLat": "string",
    "nameLatSpecified": true,
    "code": "string",
    "codeSpecified": true,
    "codeLat": "string",
    "codeLatSpecified": true,
    "unicode": "string",
    "unicodeSpecified": true,
    "isMain": true,
    "isNational": true
  },
  "touristServices": [
    {
      "id": 0,
      "touristRoomNumber": "string",
      "serviceID": 0,
      "touristID": 0
    }
  ],
  "services": [
    {
      "externalID": 0,
      "price": 0,
      "nMen": 0,
      "partnerID": 0,
      "packetKey": 0,
      "detailNetto": "string",
      "detailBrutto": "string",
      "notes": "string",
      "name": "string",
      "startDate": "2025-10-05T19:51:21.646Z",
      "endDate": "2025-10-05T19:51:21.646Z",
      "startDay": 0,
      "duration": 0,
      "rateBrutto": "string",
      "brutto": 0,
      "rateNetto": "string",
      "netto": 0,
      "serviceClassID": 0,
      "touristCount": 0,
      "id": 0,
      "status": {
        "additionalParams": [
          {
            "key": "string",
            "value": "string"
          }
        ],
        "name": "string",
        "id": 0,
        "description": "string",
        "descriptionSpecified": true,
        "nameLat": "string",
        "nameLatSpecified": true,
        "code": "string",
        "codeSpecified": true,
        "codeLat": "string",
        "codeLatSpecified": true,
        "unicode": "string",
        "unicodeSpecified": true
      },
      "additionalParams": [
        {
          "key": "string",
          "value": "string"
        }
      ]
    }
  ],
  "id": 0,
  "name": "string",
  "netto": 0,
  "brutto": 0,
  "countryID": 0,
  "cityID": 0,
  "partnerID": 0,
  "startDate": "2025-10-05T19:51:21.647Z",
  "endDate": "2025-10-05T19:51:21.647Z",
  "duration": 0,
  "creationDate": "2025-10-05T19:51:21.647Z",
  "creatorID": 0,
  "tourists": [
    {
      "sex": 0,
      "firstName": "string",
      "lastName": "string",
      "surName": "string",
      "birthDate": "2025-10-05T19:51:21.647Z",
      "firstNameLat": "string",
      "surNameLat": "string",
      "lastNameLat": "string",
      "localPassport": {
        "issuedBy": "string",
        "serie": "string",
        "number": "string",
        "issueDate": "2025-10-05T19:51:21.647Z",
        "endDate": "2025-10-05T19:51:21.647Z"
      },
      "foreignPassport": {
        "issuedBy": "string",
        "serie": "string",
        "number": "string",
        "issueDate": "2025-10-05T19:51:21.647Z",
        "endDate": "2025-10-05T19:51:21.647Z"
      },
      "ageType": 0,
      "citizen": "string",
      "isMain": true,
      "externalID": 0,
      "additionalParams": [
        {
          "key": "string",
          "value": "string"
        }
      ],
      "id": 0,
      "phone": "string",
      "email": "string"
    }
  ],
  "ownerID": 0,
  "tourOperatorID": 0,
  "tourOperatorCode": "string",
  "hasInvoices": true,
  "externalID": 0,
  "additionalParams": [
    {
      "key": "string",
      "value": "string"
    }
  ]
}


Advanced Travel Reservation (CreateReservationNew)

Method: POST /booking/CreateReservationNew

  • Request format:
  • Accepted parameters (Request body):
    • hotel_id – ID of the hotel for which the reservation is being created
    • client_reference_id – External ID/client reference, allows you to match the reservation in your system
    • reservation_holder – Primary reservation holder
      • first_name – First name of the holder
      • last_name – Last name of the holder
      • is_child – Indicates that the holder is a child, can be true or false
      • age – Age of the holder
      • birthday – Date of birth of the holder (ISO 8601)
      • gender – Gender
      • email – Email of the holder
      • phone – Phone of the holder
      • isMain – Indicates that this is the main tourist, can be true or false false
      • id – holder identifier
    • contact_info – contact information for the reservation
      • phone – contact phone number
      • email – contact email address
      • webpage – web page/site
    • rates – list of selected rates/rooms
      • rate_id – rate/offer identifier
      • price – rate price
      • room – room parameters
        • id – room/accommodation option identifier
        • guests – list of guests staying in this room
          • first_name – guest's first name
          • last_name – guest's last name
          • is_child – flag that the guest is a child, can be true or false
          • age – guest's age
          • birthday – guest's date of birth (ISO 8601)
          • gender – gender
          • email – guest's email
          • phone – guest's phone number
          • isMain – "main guest" flag in the room, can be true or false
          • id – guest identifier
      • extras – additional services tariff
        • id – additional service type identifier
        • key – additional service entry/option key
        • date_from – additional service start date (ISO 8601)
        • date_to – additional service end date (ISO 8601)
        • is_duration – indicates whether the service is long-term, can be true or false
        • guests – list of guest IDs to which the service applies
      • comments – comments on the tariff/room
    • transfers – transfers within the booking
      • id – transfer type identifier
      • key – transfer option key
      • date – transfer date/time (ISO 8601)
      • guests – list of guest IDs for the transfer
      • price – transfer cost
      • pointTo – destination point
      • pointFrom – departure point
      • transferName – transfer name
      • transferType – transfer type
        • key – type identifier
        • name – type name
      • currency – settlement currency (e.g., RUB, USD)
      • routeNumber – flight/route number
      • isGroup – group transfer, can be true or false
      • maxPax – maximum capacity
    • notes – internal notes for the reservation
    • preferences – guest preferences
    • booking_service_type – booking service type/channel
  • Returned result:
    • reservationId – string reservation identifier in external/front-end format
    • reservationKey – numeric reservation key in the system
    • clientReferenceId – returned external client identifier
    • hotelConfirmationCode – hotel confirmation code
    • status – reservation status, e.g., CONFIRMED, PENDING, CANCELLED
Example

Calling the /booking/CreateReservation method

POST http://localhost:7700/booking/CreateReservation 
{
  "hotel_id": 0,
  "client_reference_id": "string",
  "reservation_holder": {
    "first_name": "string",
    "last_name": "string",
    "is_child": true,
    "age": 0,
    "birthday": "string",
    "gender": 0,
    "email": "string",
    "phone": "string",
    "isMain": true,
    "id": 0
  },
  "contact_info": {
    "phone": "string",
    "email": "string",
    "webpage": "string"
  },
  "rates": [
    {
      "rate_id": "string",
      "price": 0,
      "room": {
        "id": "string",
        "guests": [
          {
            "first_name": "string",
            "last_name": "string",
            "is_child": true,
            "age": 0,
            "birthday": "string",
            "gender": 0,
            "email": "string",
            "phone": "string",
            "isMain": true,
            "id": 0
          }
        ]
      },
      "extras": [
        {
          "id": "string",
          "key": 0,
          "date_from": "2025-10-05T20:20:18.919Z",
          "date_to": "2025-10-05T20:20:18.919Z",
          "is_duration": true,
          "guests": [
            0
          ]
        }
      ],
      "comments": "string"
    }
  ],
  "transfers": [
    {
      "id": "string",
      "key": 0,
      "date": "2025-10-05T20:20:18.919Z",
      "guests": [
        0
      ],
      "price": 0,
      "pointTo": "string",
      "pointFrom": "string",
      "transferName": "string",
      "transferType": {
        "key": 0,
        "name": "string"
      },
      "currency": "string",
      "routeNumber": "string",
      "isGroup": true,
      "maxPax": 0
    }
  ],
  "notes": "string",
  "preferences": "string",
  "booking_service_type": 0
}

Return result:

{ 
"reservationId": "string", 
"reservationKey": 0, 
"clientReferenceId": "string", 
"hotelConfirmationCode": "string", 
"status": "string"
}


Getting information about a booked trip (GetReservation)

Method: GET /booking/GetReservation

Returned result:

    • rate – rate details
      • additionalParams – additional rate parameters
        • key – parameter name
        • value – parameter value
      • name – rate name
      • id – rate identifier
      • description – rate description
      • descriptionSpecified – whether the description is filled in, can be true or false
      • nameLat – name in Latin characters
      • nameLatSpecified – whether the nameLat is filled in, can be true or false
      • code – rate code
      • codeSpecified – whether the code is filled in, can be true or false
      • codeLat – code in Latin characters
      • codeLatSpecified – whether the codeLat is filled in, can be true or false
      • unicode – Unicode code/designation
      • unicodeSpecified – whether the unicode is filled in, can be true or false
      • isMain – whether the rate is main, can be true or false
      • isNational – whether the rate is national, can be true or false
    • touristServices – connections between tourists and services
      • id – identifier connections
      • touristRoomNumber – room/boarding number
      • serviceID – service identifier
      • touristID – tourist identifier
    • services – service parameters
      • externalID – external service identifier
      • price – service price
      • nMen – number of tourists for the service
      • partnerID – partner identifier
      • packetKey – package service/package key
      • detailNetto – net detailing
      • detailBrutto – gross detailing
      • notes – notes
      • name – service name
      • endDate – service end date (ISO 8601)
      • startDay – "start day" relative to the tour
      • rateBrutto – gross rate
      • brutto – gross amount
      • rateNetto – net rate
      • netto – net amount
      • touristCount – number of tourists for the service
      • id – service identifier
      • additionalParams – additional service parameters
        • key – parameter name
        • value – parameter value
      • cityKey – service city identifier
      • excursionID – Tour ID
      • startDate – service start date (ISO 8601)
      • duration – duration
      • serviceClassID – service class/type
    • id – booking ID
    • name – booking name/code
    • netto – net total amount
    • grosstotal amount
    • countryID – country ID
    • cityID – city ID
    • partnerID – partner ID
    • startDate – tour/stay start date (ISO 8601)
    • endDate – tour/stay end date (ISO 8601)
    • duration – tour duration
    • creationDate – booking creation date/time (ISO 8601)
    • creatorID – creator ID
    • tourists – list of tourists
      • sex – gender
      • firstName – first name
      • lastName – patronymic/middle name
      • surName – last name
      • birthDate – date of birth (ISO 8601)
      • firstNameLat – First name in Latin
      • surNameLat – Last name in Latin
      • lastNameLat – Middle name/middle name in Latin
      • localPassport – Internal passport
        • issuedBy – Issuer
        • serie – Series
        • number – Number
        • issueDate – Issue date (ISO 8601)
        • endDate – Expiration date (ISO 8601)
      • foreignPassport – International passport
        • issuedBy – Issuer
        • serie – Series
        • number – Number
        • issueDate – Issue date (ISO 8601)
        • endDate – Expiration date (ISO 8601)
      • ageType – Age type
      • citizen – Citizenship
      • isMain – Main tourist indicator, can be true or false
      • externalID – External ID
      • additionalParams – Additional tourist parameters
        • key – Parameter name
        • value – Parameter value
      • id – ID Tourist
      • Phone – Phone
      • Email – Email
    • OwnerID – Owner/Agency ID
    • TourOperatorID – Tour Operator ID
    • TourOperatorCode – Tour Operator Code
    • HasInvoices – Indicates whether invoices are available, can be true or false
    • ExternalID – External ID of the reservation
    • AdditionalParams – Additional booking parameters
      • Key – Parameter name
      • Value – Parameter value
Example

Calling the /booking/GetReservation method

GET http://localhost:7700/booking/GetReservation?dgKey=987654

Return result:

{ 
"rate": { 
"additionalParams": [ 
{ 
"key": "string", 
"value": "string" 
} 
], 
"name": "string", 
"id": 0, 
"description": "string", 
"descriptionSpecified": true, 
"nameLat": "string", 
"nameLatSpecified": true, 
"code": "string", 
"codeSpecified": true, 
"codeLat": "string", 
"codeLatSpecified": true, 
"unicode": "string", 
"unicodeSpecified": true, 
"isMain": true, 
"isNational": true 
}, 
"touristServices": [ 
{ 
"id": 0, 
"touristRoomNumber": "string", 
"serviceID": 0, 
"touristID": 0 
} 
], 
"services": { 
"externalID": 0, 
"price": 0, 
"nMen": 0, 
"partnerID": 0, 
"packetKey": 0, 
"detailNetto": "string", 
"detailBrutto": "string", 
"notes": "string", 
"name": "string", 
"endDate": "2025-10-05T20:50:25.957Z", 
"startDay": 0, 
"rateBrutto": "string", 
"brutto": 0, 
"rateNetto": "string", 
"netto": 0, 
"touristCount": 0, 
"id": 0, 
"additionalParams": [ 
{ 
"key": "string", 
"value": "string" 
} 
], 
"cityKey": 0, 
"excursionID": 0, 
"startDate": "2025-10-05T20:50:25.957Z", 
"duration": 0, 
"serviceClassID": 0 
}, 
"id": 0, 
"name": "string", 
"netto": 0, 
"brutto": 0, 
"countryID": 0, 
"cityID": 0, 
"partnerID": 0, 
"startDate": "2025-10-05T20:50:25.957Z", 
"endDate": "2025-10-05T20:50:25.957Z", 
"duration": 0, 
"creationDate": "2025-10-05T20:50:25.957Z", 
"creatorID": 0, 
"tourists": [ 
{ 
"sex": 0, 
"firstName": "string", 
"lastName": "string", 
"surName": "string", 
"birthDate": "2025-10-05T20:50:25.957Z", 
"firstNameLat": "string", 
"surNameLat": "string", 
"lastNameLat": "string", 
"localPassport": { 
"issuedBy": "string", 
"serie": "string", 
"number": "string", 
"issueDate": "2025-10-05T20:50:25.957Z", 
"endDate": "2025-10-05T20:50:25.957Z" 
}, 
"foreignPassport": { 
"issuedBy": "string", 
"serie": "string", 
"number": "string", 
"issueDate": "2025-10-05T20:50:25.957Z", 
"endDate": "2025-10-05T20:50:25.957Z" 
}, 
"ageType": 0, 
"citizen": "string", 
"isMain": true, 
"externalID": 0, 
"additionalParams": [ 
{ 
"key": "string", 
"value": "string" 
} 
], 
"id": 0, 
"phone": "string", 
"email": "string" 
} 
], 
"ownerID": 0, 
"tourOperatorID": 0, 
"tourOperatorCode": "string", 
"hasInvoices": true, 
"externalID": 0, 
"additionalParams": [ 
{ 
"key": "string", 
"value": "string" 
} 
]
}


Getting Advanced Information about a Booked Trip (GetReservationNew)

Method: GET /booking/GetReservationNew

Returned result:

    • reservation_id – String reservation ID
    • reservation_key – Numeric reservation key
    • client_reference_id – External ID from your system
    • status_key – Numeric reservation status code
    • status_name – Reservation status
    • price – Total cost of the reservation
    • paid – Amount paid
    • create_date – Date/time of reservation creation (ISO 8601)
    • confirmation_date – Date/time of reservation confirmation (ISO 8601)
    • check_in – Check-in date/time (ISO 8601)
    • check_out – check-out date/time (ISO 8601)
    • pay_to – full payment deadline (ISO 8601)
    • prepay_to – prepayment deadline (ISO 8601)
    • reserved_by – who created/made the reservation (login/name)
    • hotel_id – hotel ID
    • doc_invoice – list of linked invoices/documents
      • fileKey – invoice file key
      • invoiceKey – invoice/waybill key
      • invoiceName – invoice name
      • fileName – invoice file name
      • updateDate – document update date (ISO 8601)
    • messages – reservation exchange messages/log
      • dmId – message ID
      • dmIsOutgoing – direction (0/1), 0 – incoming, 1 – outgoing
      • dmDgkey – the booking key to which the message pertains
      • dmRemark – a brief note/remark
      • dmTypeCode – the message type code
      • dmTableId – the associated record/table ID
      • dmProcessed – the processing flag (0/1)
      • dmCreateDate – the message creation date/time (ISO 8601)
      • dmText – the message text
      • dmTourOperKey – the tour operator ID for the message
      • dmXml – the raw XML content (if any)
      • dmSendername – the sender's name
      • dmExternalId – the external message identifier
      • dmDir – the destination according to the internal classification (numeric code)
      • dmIsRead – the "read" flag: can be true (read) or false (not read)
    • rates – a list of rates/accommodation options in Reservations
      • id – Rate ID
      • price – Total rate price
      • basicPrice – Base price (before markups/discounts)
      • bar_price – BAR price (if applicable)
      • commission – Commission
      • supplier_min_price – Minimum supplier price
      • taxes – Rate taxes/fees
        • type – Tax/fee type
        • currency – Tax/fee currency
        • is_included – Included in price: true (tax included) / false (additional charge)
        • amount – Tax/fee amount
      • payment_type – Rate payment type (e.g., prepayment/on-site payment)
      • currency – Rate currency
      • basicCurrency – Base currency
      • meals – Included meal types
        • id – Meal ID
        • name – Meal name
        • code – Meal code
      • Cancellation_policies – Shortened rules Cancellations
        • from – the start date/time of the specified sanction/penalty
        • amount – the amount of the penalty/deduction
      • cancellation_policies_extended – extended cancellation policies
        • policyKey – rule key
        • dateFrom – the validity period "from" (ISO 8601)
        • dateTo – the validity period "to" (ISO 8601)
        • penaltyValue – penalty amount
        • isPercent – ​​penalty amount format: true (as a percentage) / false (fixed amount)
        • description – rule/penalty description
      • payment_policies – payment terms for the tariff
        • description – text description of the terms
        • prepayDateTo – prepayment deadline (ISO 8601)
        • prepayAmount – prepayment amount
        • nonrefAmount – non-refundable portion
        • payDateTo – full payment deadline (ISO 8601)
        • payAmount – total amount to be paid
        • rate – rate designation
        • generatedName – generated condition name
      • addHots – additional "hot" services/surcharges
        • count – quantity
        • description – description
        • gross – gross amount
        • canDeleteService – whether this service can be deleted: true (yes) / false (no)
        • cancellationPolicy – ​​cancellation policy for the service
      • extraServices – additional services
        • count – quantity
        • description – description
        • gross – gross amount
        • canDeleteService – whether this service can be deleted: true / false
        • cancellationPolicy – ​​cancellation policy
      • manualExtraServices – manually added additional services
        • id – string identifier of the service
        • key – service key
        • date_from – start date (ISO 8601)
        • date_to – end date (ISO 8601)
        • duration – duration
        • is_duration – interpret as a long-term service: true / false
        • guests – list of guest keys applicable to
        • price – price
        • currency – currency
        • serviceClass – service class
          • key – class key
          • name – class name
        • service – service type/kind
          • key – type key
          • name – type name
        • linkType – service link type to booking
          • key – link type key
          • name – link type name
        • isGroup – group service: true / false
        • isCalculated – calculated by the system: true / false
      • rooms – rooms/accommodation options
        • id – room identifier
        • name – room name
        • bed_groups – bed groups
          • id – group identifier
          • name – group name
          • bed_types – list of bed types
            • name – bed type
            • quantity – quantity
        • allotment – ​​quota of places per room
        • roomVariant – room option (code)
        • roomAccommodation – accommodation type
      • guestGroup – aggregated group of guests by rate
        • adults – number of adults
        • children_ages – ages of children
        • groupMultiplier – group multiplier (for multiplying the price/quota)
      • guests – list of guests in the rate (structure is similar to the guest in the application)
      • quotaType – quota/availability type
      • quotaPlaces – information about quotas/places
        • key - key
        • value - value
      • bruttoDetail - gross details
      • uniqueCode - unique rate/element code
      • city - city
        • key - key
        • value - value
      • region - region
        • key - key
        • value - value
      • hotel - hotel
        • key - key
        • value - value
      • isAnul - service cancellation flag: true (cancelled) / false (active)
      • notes - notes
      • hotelExtra - additional information about the hotel/service
      • provider - code/identifier Supplier
      • isEditable – Can be edited: true / false
    • payment_policies – Payment terms for the booking (structured as above for the fare)
    • transfers – Transfers linked to the booking
      • id – Transfer type identifier
      • key – Transfer option key
      • date – Transfer date/time (ISO 8601)
      • guests – Guest keys for the guest booking the transfer
      • price – Cost
      • pointTo – Destination
      • pointFrom – Departure point
      • transferName – Transfer name
      • transferType – Transfer type
        • key – Type key
        • name – Type name
      • currency – Currency
      • routeNumber – Flight/route number
      • isGroup – Group transfer: true / false
      • maxPax – Maximum capacity
Example
Calling the /booking/GetReservationNew method
GET http://localhost:7700/booking/GetReservationNew?dgId=987654

Returned result:

 
{
  "reservation_id": "string",
  "reservation_key": 0,
  "client_reference_id": "string",
  "status_key": 0,
  "status_name": "string",
  "price": 0,
  "paid": 0,
  "create_date": "2025-10-05T20:53:55.309Z",
  "confirmation_date": "2025-10-05T20:53:55.309Z",
  "check_in": "2025-10-05T20:53:55.309Z",
  "check_out": "2025-10-05T20:53:55.309Z",
  "pay_to": "2025-10-05T20:53:55.309Z",
  "prepay_to": "2025-10-05T20:53:55.309Z",
  "reserved_by": "string",
  "hotel_id": 0,
  "doc_invoice": [
    {
      "fileKey": 0,
      "invoiceKey": 0,
      "invoiceName": "string",
      "fileName": "string",
      "updateDate": "2025-10-05T20:53:55.309Z"
    }
  ],
  "messages": [
    {
      "dmId": 0,
      "dmIsOutgoing": 0,
      "dmDgkey": 0,
      "dmRemark": "string",
      "dmTypeCode": 0,
      "dmTableId": 0,
      "dmProcessed": 0,
      "dmCreateDate": "2025-10-05T20:53:55.309Z",
      "dmText": "string",
      "dmTourOperKey": 0,
      "dmXml": "string",
      "dmSendername": "string",
      "dmExternalId": 0,
      "dmDir": 0,
      "dmIsRead": true
    }
  ],
  "rates": [
    {
      "id": "string",
      "price": 0,
      "basicPrice": 0,
      "bar_price": 0,
      "commission": 0,
      "supplier_min_price": 0,
      "taxes": [
        {
          "type": "string",
          "currency": "string",
          "is_included": true,
          "amount": 0
        }
      ],
      "payment_type": "string",
      "currency": "string",
      "basicCurrency": "string",
      "meals": [
        {
          "id": "string",
          "name": "string",
          "code": "string"
        }
      ],
      "cancellation_policies": [
        {
          "from": "string",
          "amount": 0
        }
      ],
      "cancellation_policies_extended": [
        {
          "policyKey": 0,
          "dateFrom": "2025-10-05T20:53:55.309Z",
          "dateTo": "2025-10-05T20:53:55.309Z",
          "penaltyValue": 0,
          "isPercent": true,
          "description": "string"
        }
      ],
      "payment_policies": {
        "description": "string",
        "prepayDateTo": "2025-10-05T20:53:55.309Z",
        "prepayAmount": 0,
        "nonrefAmount": 0,
        "payDateTo": "2025-10-05T20:53:55.309Z",
        "payAmount": 0,
        "rate": "string",
        "generatedName": "string"
      },
      "addHots": [
        {
          "count": 0,
          "description": "string",
          "brutto": 0,
          "canDeleteService": true,
          "cancellationPolicy": "string"
        }
      ],
      "extraServices": [
        {
          "count": 0,
          "description": "string",
          "brutto": 0,
          "canDeleteService": true,
          "cancellationPolicy": "string"
        }
      ],
      "manualExtraServices": [
        {
          "id": "string",
          "key": 0,
          "date_from": "2025-10-05T20:53:55.309Z",
          "date_to": "2025-10-05T20:53:55.309Z",
          "duration": 0,
          "is_duration": true,
          "guests": [
            0
          ],
          "price": 0,
          "currency": "string",
          "serviceClass": {
            "key": 0,
            "name": "string"
          },
          "service": {
            "key": 0,
            "name": "string"
          },
          "linkType": {
            "key": 0,
            "name": "string"
          },
          "isGroup": true,
          "isCalculated": true
        }
      ],
      "rooms": [
        {
          "id": "string",
          "name": "string",
          "bed_groups": [
            {
              "id": "string",
              "name": "string",
              "bed_types": [
                {
                  "name": "string",
                  "quantity": 0
                }
              ]
            }
          ],
          "allotment": 0,
          "roomVariant": 0,
          "roomAccommodation": "string"
        }
      ],
      "guestGroup": {
        "adults": 0,
        "children_ages": [
          0
        ],
        "groupMultiplier": 0
      },
      "guests": [
        {
          "first_name": "string",
          "last_name": "string",
          "is_child": true,
          "age": 0,
          "birthday": "string",
          "gender": 0,
          "email": "string",
          "phone": "string",
          "isMain": true,
          "id": 0
        }
      ],
      "quotaType": 0,
      "quotaPlaces": {
        "key": "string",
        "value": 0
      },
      "bruttoDetail": "string",
      "uniqueCode": "string",
      "city": {
        "key": "string",
        "value": 0
      },
      "region": {
        "key": "string",
        "value": 0
      },
      "hotel": {
        "key": "string",
        "value": 0
      },
      "isAnul": true,
      "notes": "string",
      "hotelExtra": "string",
      "provider": 0,
      "isEditable": true
    }
  ],
  "payment_policies": {
    "description": "string",
    "prepayDateTo": "2025-10-05T20:53:55.309Z",
    "prepayAmount": 0,
    "nonrefAmount": 0,
    "payDateTo": "2025-10-05T20:53:55.309Z",
    "payAmount": 0,
    "rate": "string",
    "generatedName": "string"
  },
  "transfers": [
    {
      "id": "string",
      "key": 0,
      "date": "2025-10-05T20:53:55.309Z",
      "guests": [
        0
      ],
      "price": 0,
      "pointTo": "string",
      "pointFrom": "string",
      "transferName": "string",
      "transferType": {
        "key": 0,
        "name": "string"
      },
      "currency": "string",
      "routeNumber": "string",
      "isGroup": true,
      "maxPax": 0
    }
  ]
}


Getting Files (GetFileData)

Method: GET /booking/GetFileData

Returned result: (file object)

    • key – key (identifier) ​​of the file
    • name – file name (with extension)
    • size – file size in bytes
    • data – file contents in Base64
    • compressed – content compression flag: can be true (data is compressed) or false (data is not compressed)
    • mime – MIME type (e.g., application/pdf, image/png)
    • type – file type/class (internal designation)
    • originalType – original type/extension when uploading
Example

Calling the /booking/GetFileData method

GET http://localhost:7700/booking/GetFileData?key=9001

Return result:

{ 
"key": 0, 
"name": "string", 
"size": 0, 
"data": "string", 
"compressed": true, 
"mime": "string", 
"type": "string",
"originalType": "string"
}


Getting bookings by arrival date (GetArrivalsByDate)

Method: GET /booking/GetArrivalsByDate

  • Request format:
  • Accepted parameters:
    • date – the arrival (check-in) date for which you want to retrieve a list of bookings; Specify in ISO format (e.g., 2025-10-07 or 2025-10-07T00:00:00Z)
    • countryKey – filter by country (country key)
    • regionKey – filter by region/province (region key)
    • cityKey – filter by city (city key)
    • hotelKey – filter by hotel (hotel key)
  • Returned result:
    • row with a summary of arrivals for the specified filters
Example

Method call /booking/GetArrivalsByDate

GET http://localhost:7700/booking/GetArrivalsByDate?date=2025.10.07&cityKey=213

Returned result:

"ARRIVALS: date=2025-10-07; hotelKey=4387; expectedCount=12"


Getting bookings by departure dates (GetDeparturesByDate)

Method: GET /booking/GetDeparturesByDate

  • Request format:
  • Accepted parameters:
    • date – departure date for which you want to retrieve a list of departures; In ISO format (e.g., 2025-10-07 or 2025-10-07T00:00:00Z)
    • countryKey – filter by country (country key)
    • regionKey – filter by region/province (region key)
    • cityKey – filter by city (city key)
    • hotelKey – filter by hotel (hotel key)
  • Returned result:
    • row with a summary of departures for the specified filters
Example (for a specific hotel)

Method call /booking/GetDeparturesByDate

GET http://localhost:7700/booking/GetDeparturesByDate?date=2025-10-07&hotelKey=4387

Returned result:

"DEPARTURES: date=2025-10-07; hotelKey=4387; expectedCount=9"


Travel Cancellation (CancelReservation)

Method: GET /booking/CancelReservation

  • Request format:
  • Accepted parameters:
    • dgKey – the key (ID) of the reservation to be cancelled
    • annulReasonID – the ID of the cancellation reason (from the reasons directory; used to correctly record the reason for cancellation)
    • note – a comment on the cancellation (e.g., an explanation for an internal log or partner)
  • Returned result:
    • a string with the operation result (e.g., the cancellation confirmation text or an error message)
Example

Calling the /booking/CancelReservation method

GET http://localhost:7700/booking/CancelReservation?dgKey=987654&annulReasonID=3&note=Client%20requested%20cancellation

Return result:

"Reservation 987654 canceled (reason 3)"


Travel Cancellation with Extended Information (CancelReservationExtended)

  • Request Format:
  • Accepted Parameters:
    • dgKey – Key (ID) of the reservation to be cancelled
    • annulReasonID – Cancellation reason ID (from the reasons directory; allows for the correct recording of the cancellation reason)
    • note – Cancellation comment (custom text for the journal/partner)

Returned Result:

    • status – Final operation status code
    • canceledServiceResults – List of results for each affected service
      • isStatusOk – Successful service cancellation indicator: can be true (successful) or false (error)
      • error – Error message when canceling the service (if any)
      • number – Service/item number (if numbering is used)
      • key – service key (identifier)
      • resultMessage – text description of the service result
      • penaltyCost – details of the penalty/penalty upon cancellation
        • policyKey – key of the applied rule
        • dateFrom – date/time of penalty start (ISO 8601)
        • dateTo – date/time of penalty end (ISO 8601)
        • penaltyValue – penalty amount
        • isPercent – ​​penalty amount format: can be true (as a percentage) or false (a fixed amount)
        • netto – net amount to which the penalty/deduction is applied
        • totalPenalty – calculated total penalty amount
        • description – description of the applied rule/penalty
Example (local call)

Calling the /booking/CancelReservationExtended method

GET http://localhost:7700/booking/CancelReservationExtended?dgKey=987654&annulReasonID=3&note=Client

Return result:

{ 
"status": 0, 
"canceledServiceResults": [ 
{ 
"isStatusOk": true, 
"error": "string", 
"number": 0, 
"key": 0,
"resultMessage": "string",
"penaltyCost": {
"policyKey": 0,
"dateFrom": "2025-10-05T21:31:31.531Z",
"dateTo": "2025-10-05T21:31:31.531Z",
"penaltyValue": 0,
"isPercent": true,
"netto": 0,
"totalPenalty": 0,
"description": "string"
}
}
]
}


Getting reservations by date (GetReservationsFrom)

Method: GET /booking/GetReservationsFrom

Returned result:

    • message – service message about the selection result
    • error – error text, if one occurred (empty if successful)
    • count – number of reservations found
    • data – array of reservation summary records
      • key – reservation key (ID)
      • code – reservation code/number
    • childrenAges – list of ages of children included in the selected reservations
    • adults – total number of adults in the selection
Example (per period)

Calling the /booking/GetReservationsFrom method

GET http://localhost:7700/booking/GetReservationsFrom?dateFrom=2025-10-01&dateTo=2025-10-07

Return result:

{ 
"message": "string", 
"error": "string", 
"count": 0, 
"data": [ 
{ 
"key": 0, 
"code": "string" 
} 
], 
"childrenAges": [ 
0 
], 
"adults": 0
}


Getting Reservations, Advanced (GetReservations)

Method: POST /booking/GetReservations

  • Request format:
  • Accepted parameters (Request body):
    • sorting – result sorting parameters
      • property – field to sort by (e.g., createDate, tourStart, price)
      • descending – sort direction: true – descending, false – ascending
    • paging – pagination parameters
      • number – page number (usually starting with 1)
      • size – page size (number of records per page)
    • tourCreateDate – range by reservation creation date
      • from – lower bound (ISO 8601)
      • to – upper bound (ISO 8601)
    • tourDateFrom – range by start date tour/arrival
      • from – lower limit (ISO 8601)
      • to – upper limit (ISO 8601)
    • tourDateTo – interval by tour/departure date
      • from – lower limit (ISO 8601)
      • to – upper limit (ISO 8601)
    • tourPrePayment – ​​interval by prepayment terms
      • from – lower limit (ISO 8601)
      • to – upper limit (ISO 8601)
    • tourPayment – ​​interval by full payment terms
      • from – lower limit (ISO 8601)
      • to – upper limit (ISO 8601)
    • dogovorCode – filter by agreement number
    • hotels – list of hotel keys for filtering
    • cities – list of city keys for filtering
    • statuses – list of booking status codes/keys for filtering
    • logins – list of identifiers Users who made reservations
    • touristSurname – Filter by tourist's last name
  • Returned result:
    • message – Service message about request execution
    • error – Error text (empty if successful)
    • count – Total number of records found, taking into account filters
    • data – Array of brief information about reservations
      • code – Reservation code/number
      • customerCode – Customer/payer code
      • key – Reservation key (ID)
      • city – Reservation city
        • key – City name/code
        • value – City key
      • Region – Reservation region
        • key – Region name/code
        • value – Region key
      • Hotel – Primary hotel of the reservation
        • key – Hotel key
        • name – Hotel short name
        • fullName – Hotel full name
        • fullContextName – Display name with context
        • regionKey – Region key
        • cityKey – City key
        • categoryKey – Category key Hotel
      • dates – dates of stay
          • from – arrival date (ISO 8601)
          • to – departure date (ISO 8601)
        • mealsKeys – list of meal type keys
        • hasDescription – hotel has a description: true / false
      • extraHotels – additional hotels included in the reservation (if any)
        • (field structure is similar to hotel)
      • duration – tour/stay duration (in days/nights, according to system rules)
      • tourStart – tour start date (ISO 8601)
      • tourEnd – tour end date (ISO 8601)
      • createDate – reservation creation date (ISO 8601)
      • price – total cost
      • paid – amount paid
      • rate – rate/conditions (label)
      • invoicesIssued – list of issued invoices
        • inId – invoice ID
        • inCustomerKey – key Client
        • inProviderKey – Supplier key
        • inNumber – Invoice number
        • inCurrency – Invoice currency
        • inPrice – Invoice amount
        • inPayed – Invoice amount paid
        • inCreateDate – Invoice creation date (ISO 8601)
        • inCreateUser – Invoice creation user key
        • inNotes – Invoice notes
        • inDogovors – Contract link(s)
        • inCheckInDate – Invoice check-in date (ISO 8601)
        • inPaymentDate – Invoice payment due date (ISO 8601)
        • inIsDeleted – Deletion flag: true / false
        • inCheckInEnd – Invoice check-out date (ISO 8601)
        • inInvoiceType – Invoice type (code)
        • inNumberVersion – Invoice version Invoice numbers
        • inInvoiceKind – Invoice type (code)
      • login – Username of the user who made the reservation
      • status – Reservation status
        • key – Text designation/status code
        • value – Numeric status code
      • roomsCount – Number of rooms
      • adultsCount – Number of adults
      • childrenCount – Number of children
      • mainTourist – Full name of the main tourist
      • tourists – List of tourists (full name as a string)
      • roomDetails – Room details
        • adults – Number of adults in the room
        • children – Number of children in the room
      • payment_policies – Payment terms for the reservation
        • description – Text description of the terms
        • prepayDateTo – Advance payment deadline (ISO 8601)
        • prepayAmount – Advance payment amount
        • nonrefAmount – Non-refundable portion
        • payDateTo – Full payment deadline (ISO 8601)
        • payAmount – amount to be paid
        • rate – rate designation
        • generatedName – generated name of conditions
    • childrenAges – list of children's ages in the sample
    • adults – total number of adults in the sample
Example

Calling the /booking/GetReservations method

POST http://localhost:7700/booking/GetReservations
{ 
"sorting": { 
"property": "string", 
"descending": true 
}, 
"paging": { 
"number": 0, 
"size": 0 
}, 
"tourCreateDate": { 
"from": "2025-10-05T21:42:47.492Z", 
"to": "2025-10-05T21:42:47.492Z" 
}, 
"tourDateFrom": { 
"from": "2025-10-05T21:42:47.492Z", 
"to": "2025-10-05T21:42:47.492Z" 
}, 
"tourDateTo": { 
"from": "2025-10-05T21:42:47.492Z", 
"to": "2025-10-05T21:42:47.492Z" 
}, 
"tourPrePayment": { 
"from": "2025-10-05T21:42:47.492Z", 
"to": "2025-10-05T21:42:47.492Z" 
}, 
"tourPayment": { 
"from": "2025-10-05T21:42:47.492Z", 
"to": "2025-10-05T21:42:47.492Z" 
}, 
"dogovorCode": "string", 
"hotels": [ 
0 
], 
"cities": [ 
0 
], 
"statuses": [ 
0 
], 
"logins": [ 
0 
], 
"touristSurname": "string"
}

Return result:

{ 
"message": "string", 
"error": "string", 
"count": 0, 
"data": [ 
{ 
"code": "string", 
"customerCode": "string", 
"key": 0, 
"city": { 
"key": "string", 
"value": 0 
}, 
"region": { 
"key": "string", 
"value": 0 
}, 
"hotel": { 
"key": 0, 
"name": "string", 
"fullName": "string", 
"fullContextName": "string", 
"regionKey": 0, 
"cityKey": 0, 
"categoryKey": 0, 
"dates": { 
"from": "2025-10-05T21:42:48.852Z", 
"to": "2025-10-05T21:42:48.852Z" 
}, 
"mealsKeys": [ 
0 
], 
"hasDescription": true 
}, 
"extraHotels": [ 
{ 
"key": 0, 
"name": "string", 
"fullName": "string", 
"fullContextName": "string", 
"regionKey": 0, 
"cityKey": 0, 
"categoryKey": 0, 
"dates": { 
"from": "2025-10-05T21:42:48.852Z", 
"to": "2025-10-05T21:42:48.852Z" 
}, 
"mealsKeys": [ 
0 
], 
"hasDescription": true 
} 
], 
"duration": 0, 
"tourStart": "2025-10-05T21:42:48.852Z", 
"tourEnd": "2025-10-05T21:42:48.852Z", 
"createDate": "2025-10-05T21:42:48.852Z", 
"price": 0, 
"paid": 0, 
"rate": "string", 
"invoicesIssued": [ 
{ 
"inId": 0, 
"inCustomerKey": 0, 
"inProviderKey": 0, 
"inNumber": "string", 
"inCurrency": "string", 
"inPrice": 0, 
"inPayed": 0, 
"inCreateDate": "2025-10-05T21:42:48.852Z", 
"inCreateUser": 0, 
"inNotes": "string", 
"inDogovors": "string", 
"inCheckInDate": "2025-10-05T21:42:48.852Z", 
"inPaymentDate": "2025-10-05T21:42:48.852Z", 
"inIsDeleted": true, 
"inCheckInEnd": "2025-10-05T21:42:48.852Z", 
"inInvoiceType": 0, 
"inNumberVersion": 0, 
"inInvoiceKind": 0 
} 
], 
"login": "string", 
"status": { 
"key": "string", 
"value": 0 
}, 
"roomsCount": 0, 
"adultsCount": 0, 
"childrenCount": 0, 
"mainTourist": "string", 
"tourists": [ 
"string" 
], 
"roomDetails": [ 
{ 
"adults": 0, 
"children": 0 
} 
], 
"payment_policies": { 
"description": "string", 
"prepayDateTo": "2025-10-05T21:42:48.852Z", 
"prepayAmount": 0, 
"nonrefAmount": 0, 
"payDateTo": "2025-10-05T21:42:48.852Z", 
"payAmount": 0, 
"rate": "string", 
"generatedName": "string" 
} 
} 
], 
"childrenAges": [ 
0 
], 
"adults": 0
}


Getting Filters for the Request Screen (GetReservationsFilters)

Method: GET /booking/GetReservationsFilters

Returned result:

    • statuses – List of available booking statuses for filtering
      • key – Textual designation/status code
      • value – Numeric status code
    • cities – List of cities for filtering
      • key – City key
      • name – City name
      • type – Locality type (e.g., "city", "resort")
    • regions – List of regions for filtering
      • key – Region key
      • name – Region name
      • type – Territorial unit type
    • countries – List of countries for filtering
      • key – Country code (name/ISO code)
      • value – Numeric country key
    • hotels – List of hotels for filtering
      • key – Hotel key
      • name – short hotel name
      • fullName – full hotel name
      • fullContextName – name with context (city/region)
      • regionKey – region key
      • cityKey – city key
      • categoryKey – category/star rating key
      • dates – available stay dates
        • from – period start date (ISO 8601)
        • to – period end date (ISO 8601)
      • mealsKeys – list of keys for available meal types
      • hasDescription – whether the hotel has a description: can be true (description available) or false (no description available)
    • logins – list of users to filter bookings by
      • key – username/ID
      • value – numeric user key
Example

Calling the /booking/GetReservationsFilters method

GET http://localhost:7700/booking/GetReservationsFilters

Return result:

{ 
"statuses": [ 
{ 
"key": "string", 
"value": 0 
} 
], 
"cities": [ 
{ 
"key": 0, 
"name": "string", 
"type": "string" 
} 
], 
"regions": [ 
{ 
"key": 0, 
"name": "string", 
"type": "string" 
} 
], 
"countries": [ 
{ 
"key": "string", 
"value": 0 
} 
], 
"hotels": [ 
{ 
"key": 0, 
"name": "string", 
"fullName": "string", 
"fullContextName": "string", 
"regionKey": 0, 
"cityKey": 0, 
"categoryKey": 0, 
"dates": { 
"from": "2025-10-05T21:52:40.981Z", 
"to": "2025-10-05T21:52:40.981Z" 
}, 
"mealsKeys": [ 
0 
], 
"hasDescription": true 
} 
], 
"logins": [ 
{ 
"key": "string", 
"value": 0 
} 
]
}


Getting service parameters (GetChangingServiceParams)

Method: GET /booking/GetChangingServiceParams

  • Returned result:
    • dlKey – the key of the service for which the parameters were returned
    • serviceType – the service type (code; e.g., accommodation, transfer, etc.)
    • dateFrom – the current service start date (ISO 8601)
    • dateTo – the current service end date (ISO 8601)
    • roomKey – the currently selected room (key)
    • pansionKey – the currently selected type Meals (key)
    • guests – list of guests by service
      • first_name – guest's first name
      • last_name – guest's last name
      • is_child – whether the guest is a child: can be true (child) or false (adult)
      • age – guest's age
      • birthday – date of birth (ISO 8601)
      • gender – gender
      • email – guest's email
      • phone – guest's phone number
      • isMain – whether the guest is the main guest by service: can be true (main) or false (regular)
      • id – guest identifier
    • availableRooms – available room options for modification
      • id – room option identifier
      • name – room option name
      • bed_groups – bed groups
        • id – group identifier
        • name – group name
        • bed_types – bed types
          • name – bed type
          • quantity – quantity
      • allotment – ​​available allotment for the room
      • roomVariant – option code rooms
      • roomAccommodation – accommodation type (e.g., Double or Twin Room, Triple Room)
    • availableBansions – available boarding options
      • id – boarding ID
      • name – boarding name
      • code – boarding code
    • removeExtras – list of extra service keys that will be removed upon change
Example

Calling the /booking/GetChangingServiceParams method

GET http://localhost:7700/booking/GetChangingServiceParams?dlKey=7001

Return result:

{ 
"dlKey": 0, 
"serviceType": 0, 
"dateFrom": "2025-10-05T21:55:50.991Z", 
"dateTo": "2025-10-05T21:55:50.991Z", 
"roomKey": 0, 
"pansionKey": 0, 
"guests": [ 
{ 
"first_name": "string", 
"last_name": "string", 
"is_child": true, 
"age": 0, 
"birthday": "string", 
"gender": 0, 
"email": "string", 
"phone": "string", 
"isMain": true, 
"id": 0 
} 
], 
"availableRooms": [ 
{ 
"id": "string", 
"name": "string", 
"bed_groups": [ 
{ 
"id": "string", 
"name": "string", 
"bed_types": [ 
{ 
"name": "string", 
"quantity": 0 
} 
] 
} 
], 
"allotment": 0, 
"roomVariant": 0, 
"roomAccommodation": "string" 
} 
], 
"availablePansions": [ 
{ 
"id": "string", 
"name": "string", 
"code": "string" 
} 
], 
"removeExtras": [ 
0 
]
}


Checking Changed Service Parameters (CheckChangingServiceParams)

Method: POST /booking/CheckChangingServiceParams

  • Returned Result: (Preview of available conditions and price after the change)
    • id – ID of the calculated option
    • price – Final price of the option
    • commission – Commission
    • meals – Available meal options
      • id – Meal ID
      • name – Meal name
      • code – Meal code
    • cancellation_policies – Brief cancellation policies
      • from – Start date of the specified rule
      • amount – Amount of deduction for the rule
    • cancellation_policies_extended – Extended cancellation policies
      • policyKey – Rule key
      • dateFrom – Valid from period
      • dateTo – Valid to period
      • penaltyValue – Penalty amount
      • isPercent – ​​Penalty amount format: can be true (as a percentage) or false (fixed amount)
      • description – Rule description
    • payment_policies – Payment terms for the option
      • description – Text description of the terms
      • prepayDateTo – Prepayment deadline
      • prepayAmount – Prepayment amount
      • nonrefAmount – Non-refundable portion
      • payDateTo – Full payment deadline
      • payAmount – Amount to be paid
      • rate – Rate designation
      • generatedName – Generated name of the terms
    • addHots – Additional "hot" services/surcharges
      • count – Quantity
      • description – Description
      • grossto – Gross amount
      • canDeleteService – Whether this service can be deleted: can be true (can) or false (not allowed)
      • cancellationPolicy – ​​cancellation policy for the service
    • extraServices – extra services
      • count – quantity
      • description – description
      • grossto – gross amount
      • canDeleteService – can delete: can be true or false
      • cancellationPolicy – ​​cancellation policy
    • rooms – available room options
      • id – room identifier
      • name – room name
      • bed_groups – bed groups
        • id – group identifier
        • name – group name
        • bed_types – bed types
          • name – bed type
          • quantity – quantity
      • allotment – ​​available allotment
      • roomVariant – room option code
      • roomAccommodation – accommodation type
    • quotaType – quota/availability type
    • quotaPlaces – quota/place details
      • key – key
      • value – value
    • bruttoDetail – text detailing of the gross amount
    • uniqueCode – unique Calculated variant code
    • guests – list of guests for whom the change is being checked
      • first_name – guest's first name
      • last_name – guest's last name
      • is_child – "child" flag: can be true (child) or false (adult)
      • age – age
      • birthday – date of birth
      • gender – gender (code)
      • email – email
      • phone – phone number
      • isMain – "main guest" flag: can be true or false
      • id – guest ID
Example

Calling the /booking/CheckChangingServiceParams method

POST http://localhost:7700/booking/CheckChangingServiceParams
{ "dlKey": 7001, "serviceType": 1 }

Returned result:

 {
  "id": "string",
  "price": 0,
  "commission": 0,
  "meals": [
    {
      "id": "string",
      "name": "string",
      "code": "string"
    }
  ],
  "cancellation_policies": [
    {
      "from": "string",
      "amount": 0
    }
  ],
  "cancellation_policies_extended": [
    {
      "policyKey": 0,
      "dateFrom": "2025-10-05T22:01:28.034Z",
      "dateTo": "2025-10-05T22:01:28.034Z",
      "penaltyValue": 0,
      "isPercent": true,
      "description": "string"
    }
  ],
  "payment_policies": {
    "description": "string",
    "prepayDateTo": "2025-10-05T22:01:28.034Z",
    "prepayAmount": 0,
    "nonrefAmount": 0,
    "payDateTo": "2025-10-05T22:01:28.034Z",
    "payAmount": 0,
    "rate": "string",
    "generatedName": "string"
  },
  "addHots": [
    {
      "count": 0,
      "description": "string",
      "brutto": 0,
      "canDeleteService": true,
      "cancellationPolicy": "string"
    }
  ],
  "extraServices": [
    {
      "count": 0,
      "description": "string",
      "brutto": 0,
      "canDeleteService": true,
      "cancellationPolicy": "string"
    }
  ],
  "rooms": [
    {
      "id": "string",
      "name": "string",
      "bed_groups": [
        {
          "id": "string",
          "name": "string",
          "bed_types": [
            {
              "name": "string",
              "quantity": 0
            }
          ]
        }
      ],
      "allotment": 0,
      "roomVariant": 0,
      "roomAccommodation": "string"
    }
  ],
  "quotaType": 0,
  "quotaPlaces": {
    "key": "string",
    "value": 0
  },
  "bruttoDetail": "string",
  "uniqueCode": "string",
  "guests": [
    {
      "first_name": "string",
      "last_name": "string",
      "is_child": true,
      "age": 0,
      "birthday": "string",
      "gender": 0,
      "email": "string",
      "phone": "string",
      "isMain": true,
      "id": 0
    }
  ]
}


Changing Service Parameters (SaveChangingServiceParams)

Method: POST /booking/SaveChangingServiceParams

  • Accepted Parameters (Request Body):
    • dlKey – The key of the service to be changed
    • serviceType – The service type (code)
  • Returned Result:
    • reservation_id – The reservation ID
    • reservation_key – The reservation key
    • client_reference_id – The external client reference
    • status_key – The reservation status code
    • status_name – The name of the reservation status
    • price – The total price
    • paid – The amount paid
    • create_date – The date/time the reservation was created
    • confirmation_date – Confirmation date/time
    • check_in – Check-in date/time
    • check_out – Check-out date/time
    • pay_to – Full payment deadline
    • prepay_to – Prepayment deadline
    • reserved_by – Username/name of the user who made the reservation
    • hotel_id – Hotel ID
    • doc_invoice – Linked invoices/documents
      • fileKey – File key
      • invoiceKey – Invoice key
      • invoiceName – Invoice name
      • fileName – File name
      • updateDate – Update date
    • messages – Messages/message log
      • dmId – Message ID
      • dmIsOutgoing – Direction: can be true (outgoing) or false (incoming)
      • dmDgkey – Reservation key
      • dmRemark – Remark
      • dmTypeCode – Message type code
      • dmTableId – Linked record ID
      • dmProcessed – Processing flag: can be true or false
      • dmCreateDate – Creation date/time
      • dmText – Message text
      • dmTourOperKey – Tour operator ID
      • dmXml – Raw XML content
      • dmSendername – Sender name
      • dmExternalId – External message ID
      • dmDir – Destination (code)
      • dmIsRead – Read flag: can be true or false
    • Rates – Rates/Accommodation options, taking into account saved changes
      • id – Rate ID
      • price – Rate price
      • basicPrice – Base price
      • bar_price – BAR price
      • commission – Commission
      • supplier_min_price – Minimum supplier price
      • Taxes – Taxes/Fees
        • type – Tax/Fees type
        • currency – Currency
        • is_included – Tax Included in price: can be true or false
        • amount – amount
      • payment_type – rate payment type
      • currency – rate currency
      • basicCurrency – base currency
      • meals – included meal types
        • id – meal identifier
        • name – meal name
        • code – meal code
      • cancellation_policies – short cancellation policies
        • from – rule start date
        • amount – deduction amount
      • cancellation_policies_extended – extended cancellation policies
        • policyKey – rule key
        • dateFrom – validity period "from"
        • dateTo – validity period "to"
        • penaltyValue – penalty amount
        • isPercent – ​​penalty format: can be true (percentage) or false (fixed amount)
        • description – rule description
      • payment_policies – payment terms
        • description – terms text
        • prepayDateTo – prepayment due date
        • prepayAmount – prepayment amount
        • nonrefAmount – nonrefundable portion
        • payDateTo – full payment deadline
        • payAmount – amount to be paid
        • rate – rate designation
        • generatedName – generated name of conditions
      • addHots – "hot" extra services/surcharges
        • count – quantity
        • description – description
        • gross – gross amount
        • canDeleteService – can be deleted: can be true or false
        • cancellationPolicy – ​​cancellation policy
      • extraServices – extra services
        • count – quantity
        • description – description
        • gross – gross amount
        • canDeleteService – can be deleted: can be true or false
        • cancellationPolicy – ​​cancellation policy
      • manualExtraServices – manually added services
        • id – string identifier
        • key – key
        • date_from – start date
        • date_to – end date
        • duration – duration
        • is_duration – the service is long-term: can be true or false
        • guests – guest keys
        • price – price
        • currency – currency
        • serviceClass – service class
          • key – class key
          • name – class name
        • service – service type/kind
          • key – type key
          • name – type name
        • linkType – service link type to booking
          • key – link type key
          • name – link type name
        • isGroup – group service: can be true or false
        • isCalculated – calculated by the system: can be true or false
      • rooms – rooms/accommodation options
        • id – room option identifier
        • name – room option name
        • bed_groups – bed groups
          • id – bed group identifier
          • name – group name
          • bed_types – bed types in the group
            • name – bed type/format
            • quantity – number of such beds
        • allotment – ​​available quota
        • roomVariant – room option code
        • roomAccommodation – accommodation type
      • guestGroup – aggregated guest group
        • adults – number of adults
        • children_ages – list of children's ages
        • groupMultiplier – group multiplier
      • guests – guests of the rate
        • first_name – guest's first name
        • last_name – guest's last name
        • is_child – child indicator: can be true or false
        • age – age
        • birthday – date of birth
        • gender – gender (code)
        • email – email
        • phone – phone number
        • isMain – "main guest" indicator: can be true or false
        • id – guest identifier
      • quotaType – quota/availability type
      • quotaPlaces – quotas/places
        • key – quota key/code
        • value – quota/remaining places value
      • bruttoDetail – text detailing of the gross amount
      • uniqueCode – unique option code
      • city – city
        • key – city name/code
        • value – city key
      • region – region
        • key – region name/code
        • value – region key
      • hotel – hotel
        • key – hotel name/code
        • value – hotel key
      • isAnul – service cancelled: can be true or false
      • notes – notes
      • hotelExtra – additional hotel information
      • provider – provider code/ID
      • isEditable – editable: can be true or false
    • payment_policies – payment terms for the entire reservation
        • description – terms text
        • prepayDateTo – prepayment due date
        • prepayAmount – prepayment amount
        • nonrefAmount – non-refundable portion
        • payDateTo – full payment due date
        • payAmount – amount to be paid
        • rate – rate designation
        • generatedName – generated terms name
    • transfers – transfers
      • id – transfer type ID
      • key – option key
      • date – transfer date/time
      • guests – guest keys
      • price – cost
      • pointTo – destination
      • pointFrom – departure point
      • transferName – transfer name
      • transferType – transfer type
        • key – transfer type key
        • name – transfer type name
      • currency – currency
      • routeNumber – flight/route number
      • isGroup – group transfer: can be true or false
      • maxPax – maximum capacity
Example request and response

Calling the /booking/SaveChangingServiceParams method

POST http://localhost:7700/booking/SaveChangingServiceParams?dogovorKey=987654

[
{
"dlKey": 0,
"serviceType": 0
}
]

Returned result:

{
  "reservation_id": "string",
  "reservation_key": 0,
  "client_reference_id": "string",
  "status_key": 0,
  "status_name": "string",
  "price": 0,
  "paid": 0,
  "create_date": "2025-10-05T22:14:49.952Z",
  "confirmation_date": "2025-10-05T22:14:49.952Z",
  "check_in": "2025-10-05T22:14:49.952Z",
  "check_out": "2025-10-05T22:14:49.952Z",
  "pay_to": "2025-10-05T22:14:49.952Z",
  "prepay_to": "2025-10-05T22:14:49.952Z",
  "reserved_by": "string",
  "hotel_id": 0,
  "doc_invoice": [
    {
      "fileKey": 0,
      "invoiceKey": 0,
      "invoiceName": "string",
      "fileName": "string",
      "updateDate": "2025-10-05T22:14:49.952Z"
    }
  ],
  "messages": [
    {
      "dmId": 0,
      "dmIsOutgoing": 0,
      "dmDgkey": 0,
      "dmRemark": "string",
      "dmTypeCode": 0,
      "dmTableId": 0,
      "dmProcessed": 0,
      "dmCreateDate": "2025-10-05T22:14:49.952Z",
      "dmText": "string",
      "dmTourOperKey": 0,
      "dmXml": "string",
      "dmSendername": "string",
      "dmExternalId": 0,
      "dmDir": 0,
      "dmIsRead": true
    }
  ],
  "rates": [
    {
      "id": "string",
      "price": 0,
      "basicPrice": 0,
      "bar_price": 0,
      "commission": 0,
      "supplier_min_price": 0,
      "taxes": [
        {
          "type": "string",
          "currency": "string",
          "is_included": true,
          "amount": 0
        }
      ],
      "payment_type": "string",
      "currency": "string",
      "basicCurrency": "string",
      "meals": [
        {
          "id": "string",
          "name": "string",
          "code": "string"
        }
      ],
      "cancellation_policies": [
        {
          "from": "string",
          "amount": 0
        }
      ],
      "cancellation_policies_extended": [
        {
          "policyKey": 0,
          "dateFrom": "2025-10-05T22:14:49.952Z",
          "dateTo": "2025-10-05T22:14:49.952Z",
          "penaltyValue": 0,
          "isPercent": true,
          "description": "string"
        }
      ],
      "payment_policies": {
        "description": "string",
        "prepayDateTo": "2025-10-05T22:14:49.952Z",
        "prepayAmount": 0,
        "nonrefAmount": 0,
        "payDateTo": "2025-10-05T22:14:49.952Z",
        "payAmount": 0,
        "rate": "string",
        "generatedName": "string"
      },
      "addHots": [
        {
          "count": 0,
          "description": "string",
          "brutto": 0,
          "canDeleteService": true,
          "cancellationPolicy": "string"
        }
      ],
      "extraServices": [
        {
          "count": 0,
          "description": "string",
          "brutto": 0,
          "canDeleteService": true,
          "cancellationPolicy": "string"
        }
      ],
      "manualExtraServices": [
        {
          "id": "string",
          "key": 0,
          "date_from": "2025-10-05T22:14:49.952Z",
          "date_to": "2025-10-05T22:14:49.952Z",
          "duration": 0,
          "is_duration": true,
          "guests": [
            0
          ],
          "price": 0,
          "currency": "string",
          "serviceClass": {
            "key": 0,
            "name": "string"
          },
          "service": {
            "key": 0,
            "name": "string"
          },
          "linkType": {
            "key": 0,
            "name": "string"
          },
          "isGroup": true,
          "isCalculated": true
        }
      ],
      "rooms": [
        {
          "id": "string",
          "name": "string",
          "bed_groups": [
            {
              "id": "string",
              "name": "string",
              "bed_types": [
                {
                  "name": "string",
                  "quantity": 0
                }
              ]
            }
          ],
          "allotment": 0,
          "roomVariant": 0,
          "roomAccommodation": "string"
        }
      ],
      "guestGroup": {
        "adults": 0,
        "children_ages": [
          0
        ],
        "groupMultiplier": 0
      },
      "guests": [
        {
          "first_name": "string",
          "last_name": "string",
          "is_child": true,
          "age": 0,
          "birthday": "string",
          "gender": 0,
          "email": "string",
          "phone": "string",
          "isMain": true,
          "id": 0
        }
      ],
      "quotaType": 0,
      "quotaPlaces": {
        "key": "string",
        "value": 0
      },
      "bruttoDetail": "string",
      "uniqueCode": "string",
      "city": {
        "key": "string",
        "value": 0
      },
      "region": {
        "key": "string",
        "value": 0
      },
      "hotel": {
        "key": "string",
        "value": 0
      },
      "isAnul": true,
      "notes": "string",
      "hotelExtra": "string",
      "provider": 0,
      "isEditable": true
    }
  ],
  "payment_policies": {
    "description": "string",
    "prepayDateTo": "2025-10-05T22:14:49.952Z",
    "prepayAmount": 0,
    "nonrefAmount": 0,
    "payDateTo": "2025-10-05T22:14:49.952Z",
    "payAmount": 0,
    "rate": "string",
    "generatedName": "string"
  },
  "transfers": [
    {
      "id": "string",
      "key": 0,
      "date": "2025-10-05T22:14:49.952Z",
      "guests": [
        0
      ],
      "price": 0,
      "pointTo": "string",
      "pointFrom": "string",
      "transferName": "string",
      "transferType": {
        "key": 0,
        "name": "string"
      },
      "currency": "string",
      "routeNumber": "string",
      "isGroup": true,
      "maxPax": 0
    }
  ]
}


Merge Payment Policy (MergePaymentPolicy)

Method: POST /booking/MergePaymentPolicy

  • Request Format:
  • Accepted Parameters (Request Body):
      • description – text description of payment terms
      • prepayDateTo – prepayment deadline (ISO 8601 date/time)
      • prepayAmount – prepayment amount
      • nonrefAmount – nonrefundable amount
      • payDateTo – full payment deadline (ISO 8601 date/time)
      • payAmount – full payment amount
      • rate – rate/rule designation to which the policy applies (e.g., "BAR")
      • generatedName – system-generated "short name" of the policy
  • Returned Result:
    • description – aggregated description Payment terms
    • prepayDateTo – Final prepayment deadline
    • prepayAmount – Final prepayment amount
    • nonrefAmount – Final nonrefundable amount
    • payDateTo – Final full payment deadline
    • payAmount – Final amount payable
    • rate – Final rate designation
    • generatedName – Generated name of the summary policy
Example of merging two policies

Calling the /booking/MergePaymentPolicy method

POST http://localhost:7700/booking/MergePaymentPolicy

[ 
{ 
"description": "string", 
"prepayDateTo": "2025-10-05T22:34:46.415Z", 
"prepayAmount": 0, 
"nonrefAmount": 0, 
"payDateTo": "2025-10-05T22:34:46.415Z", 
"payAmount": 0, 
"rate": "string", 
"generatedName": "string" 
}
]

Return result:

{ 
"description": "string", 
"prepayDateTo": "2025-10-05T22:34:47.898Z", 
"prepayAmount": 0,
"nonrefAmount": 0,
"payDateTo": "2025-10-05T22:34:47.898Z",
"payAmount": 0,
"rate": "string",
"generatedName": "string"
}


Creating Reservation Messages (CreateReservationMessage)

Method: GET /booking/CreateReservationMessage

  • Request Format:
  • Accepted Parameters:
    • dgKey – the reservation key (ID) to which the message is appended
    • message – the message text
    • senderName – the name/login of the sender on whose behalf the message is being recorded
  • Returned Result:
    • Code 200 OK – message successfully added to the reservation
Example

Calling the /booking/CreateReservationMessage method

GET http://localhost:7700/booking/CreateReservationMessage?dgKey=987654&message=Client%20will%20arrive%20late%20after%2022%3A00&senderName=ipetrov

Returned result:

HTTP/1.1 200 OK