schema { mutation: Mutation query: Query } interface AdviseMessage { # TODO: # Error code: The following codes can be returned: # XXX: XXXXXXXXX XXXXXX code: String! # TODO: # Error type: The following types are valid: # XXX: asd asdñoajskd lña ld type: String! # Error description description: String! } interface Node { # ID code code: ID! # Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } type Access implements Node{ code: ID! accessData: AccessData! # Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } type AccessConnection{ edges: [AccessEdge] pageInfo: PageInfo! } type AccessData{ #code: ID! #URL: Url! #user: String! suppliers: Supplier! # suppliers(first: Int, Last: Int, before: String, after:String, criterial: criterialInput): SupplierConnection # Indicates if the access is active. isActive: Boolean! # Unique AccessConfiguration identifier id: ID! # Access code. code: String! # supplier for this access. supplier: String! # User code to connect to supplier. user: String # Password for the connection. password: String # Specific Urls urls: Urls! # List of parameters for additional information. parameters: [Parameter!] # Markets allowed for the access. markets: [String!] # Business rules types for the access. # rateRules: [RateRulesType!] } type AccessEdge{ cursor: String! node: Supplier } # Application errors type Error implements AdviseMessage { # Error code code: String! # Error type type: String! # Error description description : String! } type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String! endCursor: String! } # Parameters for additional information for the supplier's configuration. type Parameter { # Contains the keyword/Id to identify a parameter. # This information is mandatory. key: String! # Contains the parameter values. # This information is mandatory. value: String! } type Supplier implements Node{ code: ID! supplierData: SupplierData! # Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } type SupplierData{ code: ID! isActive: Boolean! dll: ID! #Ver si es un recurso #accesses(first: Int, Last: Int, before: String, after:String, criterial: criterialInput): AccessConnection hotelCodes(hotel:ID!):ID! # unique identifier of a supplier code: String! # indicates whether a supplier is active isActive: Boolean! # instance to which this supllier is connected dll: String! # supplier's related data of its groups supplierGroups: [SupplierGroup!] } # group related to a supplier type SupplierGroup { # group code of the group related to this supplier groupCode: String! # Indicates if the supplier is active for its supplier isActive: Boolean! } # Url's type Urls { # Specific Url for Availability method. search: URI # Specific Url for Reservation method. quote: URI # Specific Url for Valuation method. book: URI # Supplier URL used for multiple methods. generic: URI } # Application warnings type Warning implements AdviseMessage { # Warning code code: String! # Warning type type: String! # Warning description description : String! } #ISO 3166-1 alpha-2 scalar Country #ISO 4217 scalar Currency #In queries or mutations, Date fields have to be specified in ISO 8601 format with enclosing double quotes: datetime: "2015-11-22". scalar Date #In queries or mutations, DateTime fields have to be specified in ISO 8601 format with enclosing double quotes: datetime: "2015-11-22T13:57:31.123Z". scalar DateTime #json structure scalar JSON #ISO 3166-1 alpha-2 scalar Language #An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string. scalar URI # Indicates the type of dates enum DateType { # Arrival Date ARRIVAL # Booking Creation BOOKING } # Options payment type enum PaymentType { # The payment is managed by the supplier. MERCHANT # The payment is made straight to the actual payee, without sending it through an intermediary or a third party. DIRECT # The payment is managed by the supplier. The payment is effectuated at the time of booking. CARD_BOOKING # The payment is managed by the supplier. The payment is effectuated at check in in the hotel. CARD_CHECK_IN } interface BookableOptionSearch { # Supplier that offers this option. supplierCode: String! # Access code of this option. accessCode: String! # Indicates the id to be used on Quote as key id: String! } interface Priceable { # Specifies the currency. ISO 4217 format, example: GBP or USD currency: Currency! # Is binding. binding: Boolean! # Specifies the import net. net: Float! # Specifies the import gross. gross: Float # Specifies the exchange. exchange: Exchange! } interface Response { # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s original format. auditData: AuditData # Errors that lead the service to stop errors: [Error!] # Potentially harmful situations or errors that do not stop the service warnings: [Warning!] } # Extra information about the option. type AddOns { # Extra information from the distribution layer distribute: JSON } # Data sent & received in the supplier’s native format. type AuditData { # List of transactions data. transactions: [Transactions!]! # TimeStamp timeStamp: DateTime! # Process time in milliseconds (ms) processTime: Float! } # Contains information about a bed. type Bed { # Specifies the bed type. type: String # Description about the bed. description: String # Indicates number of beds in the room. count: Int # Specifies if the bed is shared or not. shared: Boolean } type BookingHotel { # Creation date of the booking. # Format: yyyy-MM-dd creationDate: Date # Check-in date for the booking. # Format: yyyy-MM-dd checkIn: Date # Check-out date for the booking. # Format: yyyy-MM-dd checkOut: Date # Code of the hotel in the context selected. hotelCode: String # Name of the hotel. hotelName: String # Code of the board in the context selected. boardCode: String # List of occupancies of the request. occupancies: [Occupancy!] # List of rooms. rooms: [BookingRoom!] } type BookingRoom { # ID reference to the occupancy. occupancyRefId: Int # Indicates the room code. code: String # Description about the room. description: String # Total price for all days. price: Price } # List of business rules to filter the options that you are interested. type BusinessRules { # Options quota per avail. Numbers of options wanted by avail. optionsQuota: Int! # Different business rules to filter the options that you are interested. businessRulesType: BusinessRulesType! } # Contains information about a cancel penalty. type CancelPenalty { # Cancellation fees applicable x number of hours before the check in date. hoursBefore: Int! # Type of penalty. This can be Nights, Percent or Import. penaltyType: CancelPenaltyType! # Currency used in the cancel policy. currency: Currency! # Value of the cancel policy. value: Float! } # Contains information about a cancel policy. type CancelPolicy { # Indicates if the option is refundable or not. # This information is mandatory. refundable: Boolean! # List of cancel penalties. cancelPenalties: [CancelPenalty!] } # data related to a connect user and its groups type ConnectUser { # unique connect user of a supplier code: String! # indicates whether a connect user is active isActive: Boolean! # connect user's related data of its groups connectUserGroups: [ConnectUserGroup!] } # group related to a connect user type ConnectUserGroup { # group code of the group related to this connect user groupCode: String! # Indicates if the connect user is active for its connect user isActive: Boolean! } # Criteria of search contains destination, travel dates and the number of pax in each room. type CriteriaSearch { # Check-in date for the booking. # Format: yyyy-MM-dd checkIn: Date! # Check-out, date for the booking. # Format: yyyy-MM-dd checkOut: Date! # Contains the list of hotels's ID. hotels: [String!]! # For multi room bookings, this array will contain multiple elements (rooms). # For each room you have to specify its own occupancy. occupancies: [RoomCriteria!]! # Language to be used in request. language : Language # Currency requested if supported by supplier. currency : Currency # Nationality of the guest (use ISO3166_1_alfa_2). nationality : Country # Targeted zone, country or point of sale to be used in request. market : String! } type DefaultSettings { # This field is got only if the authorization header is of the type JWT. It is used for to change the user that # has been set by default in the preload. connectUser: String! # Indicates the context of the I/O codes (hotel, board, room and rates) context: String # Language to be used in request. language : Language! # Currency requested if supported by supplier. currency : Currency! # Nationality of the guest (use ISO3166_1_alfa_2). nationality : Country! # Targeted zone, country or point of sale to be used in request. market : String! # Group of timeouts to be used in the differents services timeouts : Timeout! # Business rules. businessRules: BusinessRules! } # Informs about the currency of origin, and the rate applied over result returned by the supplier. type Exchange { # Informs about the currency of origin. currency: Currency! # Informs about the rate applied over result. rate: Float! } # Pair of groups and accesses. All accesses returned will belong to all the groups in groupCodes type GroupAccess { # group identifiers groupCodes: [String!]! accesses: [Access!] } # Holder object that contains the pax name and surname. type Holder { # Holder's name name: String! # Holder's surname surname: String! } type HotelBookPayload implements Response { # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s native format. auditData: AuditData # Information about booking booking: HotelBookingDetail # Errors that will lead the service to abort errors: [Error!] # Potentially harmful situations or errors that won't force the service to abort warnings: [Warning!] } type HotelBooking implements Response { # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s native format. auditData: AuditData # Details about booking bookings: [HotelBookingDetail!] # Errors that will lead the service to abort errors: [Error!] # Potentially harmful situations or errors that won't force the service to abort warnings: [Warning!] } # Contains information about booking. type HotelBookingDetail { # Booking ID in the Supplier´s system reference: Reference! # Holder's name and surname holder: Holder # Information about the hotel. hotel: BookingHotel # Specifies the prices (Gross, Net and Amount) of the option returned. price: Price # Specifies cancel policies of the book returned. cancelPolicy: CancelPolicy # Additional information about the book. remarks: String # Booking Status. status: BookStatusType! # Payable. payable: String } # Contains information about cancel type HotelCancelDetail { # Booking ID in the Supplier´s system reference: Reference # Cancellation ID in the Supplier´s system cancelReference: String # Booking Status. status: BookStatusType # Specifies the prices (Gross, Net and Amount) of the cancellation. price: Price # Information about the booking. booking: HotelBookingDetail } type HotelCancelPayload implements Response { # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s native format. auditData: AuditData #Information about cancel cancellation: HotelCancelDetail # Errors that will lead the service to abort errors: [Error!] # Potentially harmful situations or errors that won't force the service to abort warnings: [Warning!] } # Contains information about quote. type HotelOptionQuote { # Indicates the valuation key optionRefId: String! # The possible values in status in response are Available (OK) or On Request (RQ). status: StatusType! # Specifies the prices (Gross, Net and Amount) of the option returned. price: Price! # Specifies cancel policies of the option returned. cancelPolicy: CancelPolicy! # Additional information about the option. remarks: String # List of surcharges of the option returned. surcharges: [Surcharge!] # List of credit cards cardTypes: [String!] } # An option includes hotel information, meal plan, total price, conditions and room description. type HotelOptionSearch implements BookableOptionSearch { # Supplier that offers this option. supplierCode: String! # Access code of this option. accessCode: String! # Market of this option. market: String! # Code of the hotel in the context selected. hotelCode: String! # Name of the hotel. hotelName: String # Code of the board in the context selected. boardCode: String! # Indicates the payment type of the option returned. Possible options: Merchant, Direct, Card Booking, Card check in and Mixed. paymentType: PaymentType! # The possible values in status in response are Available (OK) or On Request (RQ). status: StatusType! # List of occupancies of the request. occupancies: [Occupancy!]! # List of rooms of the option returned. rooms: [Room!]! # Specifies the prices (Gross, Net and Amount) of the option returned. price: Price! # List of supplements of the option returned. supplements: [Supplement!] # List of surcharges of the option returned. surcharges: [Surcharge!] # Specifies rate rules of the option returned. rateRules: [RateRulesType!] # Specifies cancel policies of the option returned. cancelPolicy: CancelPolicy # Additional information about the option. remarks: String # Extra information about the option. addOns: AddOns # Token for Deep Link token: String! # Indicates the quote key id: String! } type HotelQuote implements Response { # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s native format. auditData: AuditData # Information about quote. optionQuote: HotelOptionQuote # Errors that will lead the service to abort errors: [Error!] # Potentially harmful situations or errors that won't force the service to abort warnings: [Warning!] } # Results of Avail Hotel. Contains all the available options for a given date and itinerary. type HotelSearch implements Response { # Indicates the context of the response. context: String # Application stats in string format stats(token: String!): RequestStats # Data sent & received in the supplier’s native format. auditData: AuditData # Request Criteria requestCriteria: CriteriaSearch! # List of options returned according to the request. options: [HotelOptionSearch!] # Errors that will lead the service to abort errors: [Error!] # Potentially harmful situations or errors that won't force the service to abort warnings: [Warning!] } # Map codes. type Map { # Supplier code. supplierCode: String! # Equivalences of the supplier for the client code. codes: [String!] } # Returns the mapping for a group. type Mapping { # Returns the differents group contexts, you can filter by some contexts. contexts(contextCodes: [String!], supplierCodes: [String!]): [MappingContext!] } # Returns the differents group contexts type MappingContext { # Code of the context contextCode: String! # Mapping of hotels. Filter by hotel code. hotels(hotelCodes: [String!]): [MappingEntity!] # Mapping of rooms. Filter by room code. rooms(roomCodes: [String!]): [MappingEntity!] # Mapping of rates. Filter by rate code. rates(rateCodes: [String!]): [MappingEntity!] # Mapping of boards. Filter by board code. boards(BoardCodes: [String!]): [MappingEntity!] } # Mapping about client codes with the equivalence per supplier. type MappingEntity { # Client code code: String! # Supplier code. Filter by supplier. maps: [Map!] } # Informs markup applied over supplier price. type Markup implements Priceable { # channel that apply the markup. channel: String! # Currency code indicating which currency should be paid. # This information is mandatory. currency: Currency! # It indicates if the price indicated in the gross must be respected. # That is, the customer can not sell the room / option at a price lower than that established by the supplier. # This information is mandatory. binding: Boolean! # Indicates the net price that the customer must pay to the supplier plus the markup. # This information is mandatory. net: Float! # Indicates the retail price that the supplier sells to the customer plus the markup. gross: Float # Informs about the currency of origin, and the rate applied over result. # This information is mandatory. exchange: Exchange! } # Information about occupancy. type Occupancy { # Unique ID room in this option. id: Int! # List of pax of this occupancy. paxes: [Pax!]! } # Specifies the age pax. The range of what is considered an adult, infant or baby is particular to each supplier. type Pax { # Specifies the age pax. age: Int! } # Price indicates the value of the room/option. # Supplements and/or surcharges could be or not included into the price, will be verified with the nodes Supplements/Surcharges. type Price implements Priceable { # Currency code indicating which currency should be paid. # This information is mandatory. currency: Currency! # It indicates if the price indicated in the gross must be respected. # That is, the customer can not sell the room / option at a price lower than that established by the supplier. # This information is mandatory. binding: Boolean! # Indicates the net price that the customer must pay to the supplier. # This information is mandatory. net: Float! # Indicates the retail price that the supplier sells to the customer. gross: Float # Informs about the currency of origin, and the rate applied over result returned by the supplier. # This information is mandatory. exchange: Exchange! # Informs markup applied over supplier price. markups: [Markup!] } # Information about daily price. type PriceBreakdown { # Start date in which the price becomes effective. effectiveDate: Date! # Expire date of price. expireDate: Date! # Specifies the daily price. price: Price! } # Information about room promotions(offers). type Promotion { # Specifies the promotion code. code: String! # Specifies the promotion name. name: String # Promotion effective date. effectiveDate: Date # Promotion expire date. expireDate: Date } # Information about the rate of the option returned. type RatePlan { # Specifies the rate code. code: String! # Specifies the rate name. name: String # Start date in which the rate becomes effective. effectiveDate: Date # Expire date of the rate. expireDate: Date } # Contains reference codes. type Reference { # Client reference booking client: String # Supplier reference booking supplier: String } # Contains internal information. type RequestStats { total: Stat! validation: Stat! process: Stat! Accesses: [StatAccess!]! External: String! } # Contains information about the Resort. type Resort { # Specifies the resort code. code: String! # Specifies the resort name. name: String # Specifies the resort description. description: String } # Contains the room information of the option returned. type Room { # ID reference to the occupancy. occupancyRefId: Int! # Indicates the room code. code: String! # Description about the room. description: String # Identifies if the room is refundable or not. refundable: Boolean # Number of rooms available with the same type. units: Int # Specifies the room price. roomPrice: RoomPrice! # List of beds. beds: [Bed!] # Daily break downs rate plan. ratePlans: [RatePlan!] # Daily break downs promotions. promotions: [Promotion!] } # Occupancy for a room. It contains a list of pax ages. type RoomCriteria { # Array of pax ages. The number of items in the array will indicate the pax occupancy. paxes: [Pax!]! } # Specifies the room price. type RoomPrice { # Total price for all days. price: Price! # Daily break downs price. breakdown: [PriceBreakdown!] } # Indicates the status of the service type ServiceStatus { # Status code code: String # Status type type: String # Status description description : String } type Stat { # Start UTC start: DateTime! # End UTC end: DateTime! # Difference between start and end in miliseconds duration: Float } type StatAccess { name: String! total: Stat! staticConfiguration: Stat transactions: [StatTransaction!]! external: String! } type StatTransaction { reference: String! total: Stat! buildRequest: Stat! workerCommunication: Stat! parseResponse: Stat! } # Supplement that it can be or its already added to the option returned. Contains all the information about the supplement. type Supplement { # Specifies the supplement code. code: String! # Specifies the supplement name. name: String # Specifies the supplement description. description: String # Indicates the supplement type. Possible types: Fee, Ski_pass, Lessons, Meals, Equipment, Ticket, Transfers, Gla, Activity or Null. supplementType: SupplementType! # Indicates the charge types. We need to know whether the supplements have to be paid when the consumer gets to the hotel or beforehand. # Possible charge types: Include or Exclude. # when include: this supplement is mandatory and included in the option's price # when exclude: this supplement is not included in the option's price chargeType: ChargeType! # Indicates if the supplement is mandatory or not. If mandatory, this supplement will be applied to this option # if the chargeType is excluded the customer will have to pay it directly at the hotel mandatory: Boolean! # Specifies the duration type. Possible duration types: Range (specified dates) or Open. This field is mandatory for PDI. durationType: DurationType # Indicates the quantity of field in the element “unit”. quantity: Int # Indicates the unit type. Possible unit types: Day or Hour. unit: UnitTimeType # Indicates the effective date of the supplement. effectiveDate: Date # Indicates the expire date of the supplement. expireDate: Date # Contains information about the resort resort: Resort # Indicates the supplement price. price: Price } # Surcharge that it can be or it is already added to the option returned. Contains all the information about the surcharge. type Surcharge { # Indicates the charge types. We need to know whether the supplements have to be paid when the consumer gets to the hotel or beforehand. # Possible charge types: Include or Exclude. # when include: this surcharge is mandatory and included in the option's price # when exclude: this surcharge is not included in the option's price chargeType: ChargeType! # Indicates if the surcharge is mandatory or not. If mandatory, this surcharge will be applied to this option # if the chargeType is excluded the customer will have to pay it directly at the hotel mandatory: Boolean! # Indicates the surcharge price. price: Price! # Specifies the surcharge description. description: String } type Timeout { # Milliseconds before the search connection is closed. search: Int! # Milliseconds before the quote connection is closed. quote: Int! # Milliseconds before the book connection is closed. book: Int! } # Supplier transaction type Transactions { # Transaction Request. request: String! # Transaction Response. response: String! # Time when the request has been processed. timeStamp: DateTime! } # The information required to access the supplier’s system. input AccessConfigurationInput { # Indicates if the access is active. isActive: Boolean! # Arbitrary not unique identifier code: String! # Supplier to which this access belongs supplier: String! # Information required to access the supplier’s system. configuration: ConfigurationInput } # Connect user input for data access management API input AccessConnectUserInput { # connect user code code: String! # Indicates if the connect user is active. isActive: Boolean! # groups related to this connect user groups: [ConnectUserGroupInput!] } # Include *OR* exclude accesses in this specific search query. If not specified, default accesses will be used. # Only one list (includes or excludes) *MUST* be used. input AccessFilterInput { # These Access IDs will overwrite the default configuration. Only the IDs on this list will be used in the search query. includes: [ID!] # These Access IDs will overwrite the default configuration. The IDs on this list will be excluded from the search query. excludes: [ID!] } # AccessInput overwrites an existent access in our Back Office or creates a new # one to be used in this search query only. An access object contains its own code, configuration and settings. input AccessInput { # The accessID used to identify the existing access in our Back Office in order to # overwrite it. Acts as an identifier in this search. It can either exist or not. accessId: ID! # Information required to access the supplier’s system. configuration: ConfigurationInput # You can configure an special settings for any access. This level overwrites the search and supplier settings levels. settings: SettingsBaseInput } # Supplier input for data access management API input AccessSupplierInput { # supplier code code: String! # supplier instance dll: String! # Indicates if the supplier is active. isActive: Boolean! # groups related to this supplier groups: [SupplierGroupInput!] } # Input BookPax contains basic information abaout pax such as name, surname and age. input BookPaxInput { # The guest's first name name: String! # The guest's last name surname: String! # The guest's age age: Int! } # Reference object that contains the client's reference and/or supplier reference. input BookReferenceInput { # The client's reference client: String # The Supplier's reference supplier: String } # Input BookRoom contains list of pax and the room's reference. input BookRoomInput { # The room's reference in the booking occupancyRefId: Int! # The list or lists of paxes of the room paxes: [BookPaxInput!]! } # List of business rules to use as filter on the options. input BusinessRulesInput { # Options quota per search. Maximum numbers of options to be returned by the search query. optionsQuota: Int # Different business rules to filter the returned options. businessRulesType: BusinessRulesType } # The information and credentials required to access the supplier’s system. input ConfigurationInput { # User name for the connection. username: String # Password for the connection. password: String # Url or endpoint for the connection. urls: UrlsInput! # List of parameters with additional required information. parameters: [ParameterInput!] # Source markets allowed for the access. markets: [String!] # RateRules allowed for the access. rateRules: [RateRulesType!] } # group related to a connect user input ConnectUserGroupInput { # group code of the group related to this connect user groupCode: String! # Indicates if the connect user is active for its connect user isActive: Boolean! } # Criteria by dates input CriteriaBookingDatesInput { # Type of date. Can be Arrival or Booking date. dateType: DateType! # Start date. # Format: yyyy-MM-dd. start: Date! # End date. # Format: yyyy-MM-dd. end: Date! } # Criteria by references. input CriteriaBookingReferencesInput { # The hotel code. hotelCode: String! # The requested currency. The API will convert to this currency if supplier returns a different one. TODO: ES CORRECTO? currency : Currency! # Contains the client reference and/or supplier reference. references: [BookReferenceInput!]! } # Input delta price, indicates the price variation permitted by the client before failing the booking. input DefaultSettingsBusinessRulesInput { # Options quota per avail. Numbers of options wanted by avail. optionsQuota: Int! # Different business rules to filter the options that you are interested. businessRulesType: BusinessRulesType! } input DefaultSettingsInput { # Unique Id groupCode : String! # This field is got only if the authorization header is of the type JWT. It is used for to change the user that # has been set by default in the preload. connectUser: String! # Indicates the context of the I/O codes (hotel, board, room and rates) context: String # Language to be used in request. language : Language! # Currency requested if supported by supplier. currency : Currency! # Nationality of the guest (use ISO3166_1_alfa_2). nationality : Country! # Targeted zone, country or point of sale to be used in request. market : String! # Group of timeouts to be used in the differents services timeout : TimeoutInput! # Business rules. businessRules: DefaultSettingsBusinessRulesInput! } # Input delta price, indicates price variation permitted by the client input DeltaPriceInput { # The amount in the currency returned by the option that will be accepted by the client to be higher than the valuation price. amount: Float # The percentage accepted by the client to be higher than the valuation price. percent: Float # Indicates that the range between valuation price and the new price does not exceed the amount and/or porcentage indicated by the client. applyBoth: Boolean! } # The card expiration date # TODO: yo lo cambiaria a ExpirationDateInput input ExpireDateInput{ # Month MM month: Int! # Year yy year: Int! } # Filter that selects the filter criteria which will be used in this availability. Currently you can only choose the accesses. # You must choose one of them, include or exclude, or the other alternative isn't specified anything. # If input both, you will receive a validation error that indicates this error. input FilterInput { # You can specify one of the filters or any of them. In this latter case, all the configurated accesses will be executed. access: AccessFilterInput # If requested, only options with the specified rateRules will be returned rateRules: RateRulesFilterInput } input GroupAccessInput { # groups identifiers in which the access will be associated groupCodes: [String!] # access related data accesses: [AccessConfigurationInput!]! } # Holder object that contains the pax name and surname. # TODO: yo lo cambiaria a CardHolder o es BookingHolder input HolderInput { # The card holder's name name: String! # The card holder's surname surname: String! } # Criteria of book. input HotelBookInput { # Option ID optionRefId: String! # Language to be used in request. language: Language # Booking ID in client’s system. clientReference: String! # Indicates price variation permitted by the client. deltaPrice: DeltaPriceInput # If the payment is done by credit card, it's mandatory to specify the payment type and the credit card information. paymentCard: PaymentCardInput # Any customer comments for the supplier to consider. remarks: String # Holder's basic information holder: HolderInput! # Rooms within this option rooms: [BookRoomInput!]! } # Cancellation Criteria. input HotelCancelInput { # The name of the access to use in the request. accessCode: String! # The language code. language: Language # The hotel code. hotelCode: String! # Contains the client reference and/or supplier reference. # One of them is mandatory. reference: BookReferenceInput! } # Criteria of book contains basic information to find a book or books. input HotelCriteriaBookingInput { # Name of the access that have to use in the request. accessCode: String! # The language code. language: Language # The search type criteria. typeSearch: BookingCriteriaType! # The references criteria. references: CriteriaBookingReferencesInput # The dates criteria. dates: CriteriaBookingDatesInput } # The quote criteria contains the option reference id, block and language. input HotelCriteriaQuoteInput { # Identifier of the option chosen in the search. optionRefId: String! # Language to be used in request. language : Language } # Criteria of search contains destination, travel dates and the number of pax in each room. # You must preload the other fields in our system by complete the fields absents. input HotelCriteriaSearchInput { # Check-in date for the booking. # Format: yyyy-MM-dd checkIn: Date! # Check-out, date for the booking. # Format: yyyy-MM-dd checkOut: Date! # Contains the list of hotels's ID. hotels: [String!]! # For multi room bookings, this array will contain multiple elements (rooms). # For each room you have to specify its own occupancy. occupancies: [RoomInput!]! # Language to be used in request. language : Language # Currency requested if supported by supplier. currency : Currency # Nationality of the guest (use ISO3166_1_alfa_2). nationality : Country # Targeted zone, country or point of sale to be used in request. market : String } # Settings that you can edit for this avail. Values are loaded by default in our Back Office. input HotelSettingsInput { # Indicates the context of the I/O codes (hotel, board, room and rates) context: String #Indicates if you want use context, or not, by default is true. useContext: Boolean # This field is got only if the authorization header is of the type JWT. It is used for to change the user that # has been set by default in the preload. connectUser: String, # Milliseconds before the connection is closed. timeout: Int # Returns all the transactions exchanged with the supplier. auditTransactions: Boolean # Business rules. businessRules: BusinessRulesInput # Array of suppliers. Each one contains its own code, settings and accesses. suppliers: [SupplierInput!] } input IdAccessConfigurationInput { # access unique identifier id: ID! # Indicates if the access is active. isActive: Boolean! # Arbitrary not unique identifier code: String! # Supplier to which this access belongs supplier: String! # Information required to access the supplier’s system. configuration: ConfigurationInput } input IdGroupAccessInput { # identifier of the groups in which the access will be associated groupCodes: [String!] accesses: [IdAccessConfigurationInput!]! } # Parameters for additional information for the supplier's configuration. input ParameterInput { # Contains the keyword/Id to identify a parameter. key: String! # Contains the parameter values. value: String! } # Pax object that contains the pax age. input PaxInput { # Pax age. age: Int! } # Input PaymentCard, if the payment is done by credit card, is it mandatory to specify the payment type and the credit card information input PaymentCardInput { # Indicates the card type. cardType: String! # Contains owner's name holder: HolderInput! # Contains credit card number number: String! # Contains credit card CVC CVC: String! # Contains credit card expiration date expire: ExpireDateInput! } # If requested, only options with the specified rateRules will be returned input RateRulesFilterInput { # if includes not nil: only options without rate rules and options with rate rules found in includes will be returned includes: [RateRulesType!] # if excludes not nil: only options without rate rules and options with rate rules that haven't been sent in excludes will be returned excludes: [RateRulesType!] } # Occupancy for a room. It contains a list of pax ages. input RoomInput { # Array of pax ages. The number of items in the array will indicate the pax occupancy. paxes: [PaxInput!]! } # Contains the time out and business rules of a supplier or an access. input SettingsBaseInput { # Milliseconds before the connection is closed. timeout: Int # Specifies if transactions exchanged with the supplier have to be logged or not. auditTransactions: Boolean # Business rules. businessRules: BusinessRulesInput } # group related to a supplier input SupplierGroupInput { # group code of the group related to this supplier groupCode: String! # Indicates if the supplier is active for its supplier isActive: Boolean! } # Supplier object. Contains its own settings, code and access. input SupplierInput { # You can configure an special settings for any supplier. This level overwrites the avail settings level but not the # access settings level. settings: SettingsBaseInput # Code that represents a supplier in our system. # This information is mandatory. code: String! # Array of accesses that can overwrite an existing access information or include a new access for this avail. accesses: [AccessInput!] } input TimeoutInput { # Milliseconds before the search connection is closed. search: Int! # Milliseconds before the quote connection is closed. quote: Int! # Milliseconds before the book connection is closed. book: Int! } # Url's input UrlsInput { # Specific Url for Availability method. search: URI # Specific Url for Reservation method. quote: URI # Specific Url for Valuation method. book: URI # Supplier URL used for multiple methods. generic: URI } # Book status enum BookStatusType { # The status of the booking is available OK # The status of the booking is KO KO # The status of the booking is on request ON_REQUEST # The status of the booking is cancelled CANCELLED # The status of the booking is unknown UNKNOWN } # Indicates the type of criteria in the request of the booking list enum BookingCriteriaType { # Search by date range DATES # Search by reference codes REFERENCES } # Business rules type enum BusinessRulesType { # The cheapest options is returned without exceeding the optionsQuota limit. CHEAPER_AMOUNT # Groups the option by room type without exceeding the optionsQuota limit. ROOM_TYPE } # Options type enum CancelPenaltyType { # Indicates the number of nights to be penalized. NIGHTS # Indicates the percentage to pay based on the option price. PERCENT # Indicates the exact amount payable. IMPORT } # Charge Type enum ChargeType { # The charge is included. INCLUDE # The charge is excluded. EXCLUDE } # Duration Type enum DurationType { # Date range is set. RANGE # Not restricted by date. OPEN } # Price Type enum PriceType { # Price without deductions. GROSS # Price after deducting all discounts and rebates. NET # Final quantity. Sum of multiple quantities. AMOUNT } # Rate Rules enum RateRulesType { # The product can’t be sold separately from another product attached to it, such as a flight. PACKAGE # Options that can only be sold to people who are 55 and older. OLDER55 # Options that can only be sold to people who are 60 and older. OLDER60 # Options that can only be sold to people who are 65 and older. OLDER65 # The rate CanaryResident is applicable to Canary Islands residents only. CANARY_RESIDENT # The rate BalearicResident is applicable to Balearic Islands residents only. BALEARIC_RESIDENT # The rate largeFamily is applied to large families and is determined by each supplier LARGE_FAMILY # The rate honeymoon is applied to those who just got married and is determined by each supplier. HONEYMOON # The rate publicServant is applicable to public servants only. PUBLIC_SERVANT # The rate unemployed is applied to those without work. UNEMPLOYED } # Service Type enum ServiceType { # A ticket or pass authorizing the holder to ski in a certain place or resort. Gross. SKI_PASS } # Options status enum StatusType { # The status of the avail is available OK # The status of the avail is On request RQ } # Supplement Type enum SupplementType { # A ticket or pass authorizing the holder to ski in a certain place or resort. SKI_PASS # Lessons of any type that the costumer can take. LESSONS # Supplement of a determined meal plan. MEALS # Extra equipment for a specific purpose. EQUIPMENT # Admission to some service. TICKET # Transfers used by the costumer. TRANSFERS # Gala: A festive occasion, celebration or special entertainment. GALA # Activities that the costumer can do. ACTIVITY } # Unit Time Type enum UnitTimeType { # Day DAY # Hour HOUR } # Returns detailed information about books. type Booking { # Returns detailed information about books, you can indicated a list of locators or a range date. hotel(criteria: HotelCriteriaBookingInput!, settings: HotelSettingsInput): HotelBooking } # Mutations are operations that change or update data in the server. type Mutation { # Creates a new hotel booking consisting of an option of 1 or more rooms. hotelBook(input: HotelBookInput!, settings: HotelSettingsInput): HotelBookPayload # Cancels an existing hotel booking consisting of an option of 1 or more rooms. hotelCancel(input: HotelCancelInput!, settings: HotelSettingsInput): HotelCancelPayload # Creates accesses # If groups are sent in input, every access will be assigned to them. createAccess(input: GroupAccessInput!): GroupAccess # Updates existing accesses. Assigment/dissociation of groups will be done depening of the 'groups' input. # Note that if 'groups' is sent as empty, these accesses will be dissociated from all groups. updateAccess(input: IdGroupAccessInput!): GroupAccess # Deletes accesses and their relation with groups. Accesses Id are expected as input. deleteAccesses(input: [String!]!): [GroupAccess!] # Creates a defaultSettings for a given group createDefaultSettings(input: DefaultSettingsInput!): DefaultSettings # Updates a defaultSettings for a given group updateDefaultSettings(input: DefaultSettingsInput!): DefaultSettings # Deletes a defaultSettings for a given group deleteDefaultSettings(input: String!): Boolean! # Updates existing suppliers. Assigment/dissociation of groups cannot be done. updateSupplier(input: AccessSupplierInput!): Supplier # Updates existing connectUser. Assigment/dissociation of groups cannot be done. updateConnectUser(input: AccessConnectUserInput!): ConnectUser # Load mapping files for a group. loadFile(input: String!): String! } # A Query is an entry point into the object graph. type Query { # Available options for a given date and itinerary. search: Search! # Returns the total price and cancellation policies of the Option selected in the previous step (Search). quote: Quote! # Returns detailed information about books. booking: Booking # Returns accesses grouped by 'groups'. # If access identifiers 'ids' are sent, only those accesses will be read. # If 'groupsCodes' are sent, only accesses for these groups will be read # Requesting this query without any of these filters will provide all requestor accesses access(ids: [String!], groupCodes: [String!]): [GroupAccess!] # Reads defaultSettings of the given group defaultSettings(groupCode: String!): DefaultSettings # Returns suppliers and their groups. # If supplier identifiers 'ids' are sent, only those will be read. # If 'groupsCodes' are sent, only suppliers for these groups will be read # Requesting this query without any of these filters will provide all requestor suppliers supplier(ids: [String!], groupCodes: [String!]): [Supplier!] # Returns connect users and their groups. # If connect user identifiers 'ids' are sent, only those will be read. # If 'groupsCodes' are sent, only connect user for these groups will be read # Requesting this query without any of these filters will provide all requestor connect users connectUser(ids: [String!], groupCodes: [String!]): [ConnectUser!] # Returns the mapping for a group, is necessary specify the group. mapping(groupCode: String!): Mapping! # Returns status of the search service. searchStatusService: ServiceStatus! # Returns status of the quote service. quoteStatusService: ServiceStatus! # Returns status of the new booking service. bookStatusService: ServiceStatus! # Returns status of the cancellation service. cancelStatusService: ServiceStatus! # TODO: me no understand... # Returns status of the booking service. bookingStatusService: ServiceStatus! # Query to obtain Hotels hotels(codes: [String!], language: String, first: Int, Last: Int, before: String, after:String): HotelConnection! } # Returns the total price and cancellation policies of the Option selected in the previous step (Search). type Quote { # Returns the total price and cancellation policies of the Option selected in the previous step (Search). hotel(criteria: HotelCriteriaQuoteInput!, settings: HotelSettingsInput): HotelQuote } # Available options for a given date and itinerary. It does not filter different classes, times or # fares. It will always retrieve all results returned by the suppliers. The availability request is very straight # forward. type Search { # Available options of an hotel for a given date and itinerary. It does not filter different classes, times or # fares. It will always retrieve all results returned by the suppliers. The availability request is very straight # forward. It only requires the criteria of search (destination, travel dates and the number of pax in each room). # But you must preload the other fields in our system by complete the fields absents. hotel(token: String, criteria: HotelCriteriaSearchInput, settings: HotelSettingsInput, filter: FilterInput): HotelSearch } interface Information{ description: String! language: Language! } type Amenity implements Node{ code: ID! AmenityData: AmenityData #Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } type AmenityConnection{ edges: [AmenityEdge] pageInfo: PageInfo! } type AmenityData{ code: ID! type: ApplicationArea! } # HotelList Edge definition type AmenityEdge { cursor: String! node: Amenity } # Contact type type Contact { # Email. email: String # Telephone. telephone: String # Fax. fax: String # Web. web: URI! } # Destination type type Destination { # Destination code. code: String # Destination name. name: String # Indicates if it is allowed in availability. avail: Boolean! } # Geocode type type Geocode { # Latitude latitude: String! # Longitude longitude: String! } # Giata System ID. type GiataID { # Giata url. # source: URI! # Giata code code: String # supplier: Supplier! } # Hotel type type Hotel implements Node { # Hotel ID code: ID! # Hotel data hotelData: HotelData # Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } # HotelList definition type HotelConnection { edges: [HotelEdge] pageInfo: PageInfo! } # Hotel data type HotelData { # Internal code to perform availability and/or supplier code. code: ID! # Name. name: String! # Hotel category (for example number of stars). categoryCode: String! # Indicates that the Hotel has an Exclusive Deal. exclusiveDeal: Boolean! medias(type: ApplicationArea, first: Int, Last: Int, before: String, after:String): MediaConnection amenities(language: Language, first: Int, Last: Int, before: String, after:String):AmenityConnection additionalInformation(language: Language): Information! generalDescription(language: Language): Information! location: Location! # Contact information. contact: Contact! # Destination information. destination: Destination! } # HotelList Edge definition type HotelEdge { cursor: String! node: Hotel } # Location type Location { # Street Address address: String! # City city: String! # Zip Code zipCode: String! # Country ISO Code country: Country! # Geocode #geocode: Geocode! } type Media implements Node{ code: ID! mediaData: MediaData #Errors that will lead the service to abort error: [Error!] # Create date createdAt: DateTime! # Update date updatedAt: DateTime! } type MediaConnection{ edges: [MediaEdge] pageInfo: PageInfo! } type MediaData{ type: ApplicationArea! url: URI! } # HotelList Edge definition type MediaEdge { cursor: String! node: Media } input HotelInput { codes: [ID!] language: Language } # Indicates a place enum ApplicationArea { GENERAL HOTEL ROOM SERVICE }