@simpleview/sv-booking-client
v1.4.0
Published
Client for communicating with sv-booking
Downloads
15
Maintainers
Keywords
Readme
sv-booking-client
Client for communicating with the sv-booking
GraphQL system.
It is build in JavaScript and has one peer dependency of @simpleview/sv-graphql-client
.
OS Support
The expectation is that this application will be installed in Linux using sv-kubernetes.
Prerequisites
Install
Using npm:
npm install @simpleview/sv-booking-client
Using yarn:
yarn install @simpleview/sv-booking-client
Update
To update to the latest version, rerun the install command.
Authentication Requirements
Interactions with sv-booking
mutations require authentication as a Simpleview user.
Use a Google Service Account when interacting with the service on behalf of a product.
const { AuthPrefix } = require("@simpleview/sv-auth-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
async function serviceAccountToken() {
const service_account = JSON.parse(SERVICE_ACCOUNT_JSON);
const { auth } = new GraphServer({
graphUrl: AUTH_GRAPHQL_URL,
prefixes: [AuthPrefix]
});
// authorize the service_account return the token
const { token } = await auth.login_service_account({
input: {
email: service_account.client_email,
private_key: service_account.private_key
},
fields: `
success
token
`
});
return token;
}
The token
should be added to the context
for each mutation function call.
Implementation & Usage
To see the input parameters and output fields of an endpoint, view the Schema in the GraphQL Explorer at https://graphql.simpleviewinc.com/ for the corresponding GraphQL query.
BookingPrefix
BookingPrefix
can be loaded into the sv-graphql-client
GraphServer
to use as a client library for accessing booking
in GraphQL.
JavaScript:
const { BookingPrefix } = require("@simpleview/sv-booking-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
module.exports = new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [BookingPrefix] });
TypeScript:
import { BookingPrefix } from "@simpleview/sv-orion-client";
import { GraphServer } from "@simpleview/sv-graphql-client";
export default new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [BookingPrefix] });
Where you are making server requests:
JavaScript:
const { booking } = require("./bookingGraphServer");
TypeScript:
import { booking } from "./bookingGraphServer";
BookingPrefix.bd_calendar
This method wraps the booking.bd_calendar
GraphQL query.
const result = await booking.bd_calendar({
fields: `
redirect_url
docs {
date
los
rate
}
`,
filter: {
booking_name: "test.bookdirect.net",
property_id: "1",
start_date: "3000-01-01",
end_date: "3000-01-02",
currency: "USD"
}
});
BookingPrefix.bd_liverates
This method wraps the booking.bd_liverates
GraphQL query.
const result = await booking.bd_liverates({
fields: `
docs {
property_id
suppliers {
redirect_url
date_options {
occupancies {
options {
rate {
total
average
}
}
}
}
}
}
`,
filter: {
booking_name: "test.bookdirect.net",
start_date: "3000-01-01",
end_date: "3000-01-20",
property_ids: [
"1",
"2",
"3"
],
currency: "USD"
}
});
BookingPrefix.pe_liverates
This method wraps the booking.pe_liverates
GraphQL query.
const result = await booking.pe_liverates({
fields: `
docs {
property_id
suppliers {
supplier_id
supplier_logo
redirect_url
date_options {
start_date
end_date
redirect_url_postfix
occupancies {
occupancy {
adults
children
}
options {
name
redirect_url_postfix
rate {
total
average
}
}
}
}
}
}
`,
filter: {
booking_name: "TestClient",
start_date: "3000-01-01",
end_date: "3000-01-02",
fuzzy: 1,
property_ids: [
"1",
"2",
"3"
],
occupancies: [
{ adults: 2, children: 0 },
{ adults: 2, children: 1, ages: [4] }
],
currency: "GBP"
}
});
BookingPrefix.events
This method wraps the booking.events
GraphQL query.
const result = await booking.events({
fields: `
count
docs {
service_name
event_id
canonical_id
venue_id
name
url
image_url
start_date
end_date
data
}
`,
filter: {
service_name: "ticketmaster",
event_ids: ["1", "2", "3"]
},
options: {
limit: 10,
skip: 0,
sort: {
field: "start_date",
dir: "asc"
}
}
});
BookingPrefix.events_update
This method wraps the booking.events_update
GraphQL mutation.
const result = await booking.events_update({
fields: `
success
message
docs {
service_name
event_id
canonical_id
venue_id
name
url
image_url
start_date
end_date
data
}
`,
input: {
service_name: "ticketmaster",
venue_id: "1"
},
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
BookingPrefix.event_venues
This method wraps the booking.event_venues
GraphQL query.
const result = await booking.event_venues({
fields: `
count
docs {
service_name
venue_id
name
city
state
zip_code
country_code
data
}
`,
filter: {
service_name: "ticketmaster",
zip_codes: ["12345"]
}
});
BookingPrefix.ticketed_events
This method wraps the booking.ticketed_events
GraphQL query.
const result = await booking.ticketed_events({
fields: `
count
docs {
supplier_id
service_name
product_id
canonical_id
name
supplier_name
price_from
currency
description
url
images {
url
caption
}
rating
}
`,
filter: {
service_name: "fareharbor",
product_ids: ["1", "2", "3"]
},
options: {
limit: 10,
skip: 0,
sort: {
field: "name",
dir: "asc"
}
}
});
BookingPrefix.ticketed_events_destinations
This method wraps the booking.ticketed_events_destinations
GraphQL query.
const result = await booking.ticketed_events_destinations({
fields: `
count
docs {
service_name
destination_id
name
currency
}
`,
filter: {
service_name: "viator"
},
options: {
limit: 10,
skip: 0,
sort: {
field: "name",
dir: "asc"
}
}
});
BookingPrefix.ticketed_events_destinations_upsert
This method wraps the booking.ticketed_events_destinations_upsert
GraphQL mutation.
const result = await booking.ticketed_events_destinations_upsert({
fields: `
success
message
results {
success
message
doc {
service_name
destination_id
name
currency
}
}
errors {
success
message
doc {
service_name
destination_id
name
currency
}
}
`,
input: {
service_name: "viator",
destination_id: "test.id",
name: "Test Name",
currency: "USD"
},
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
BookingPrefix.ticketed_events_destinations_remove
This method wraps the booking.ticketed_events_destinations_remove
GraphQL mutation.
const result = await booking.ticketed_events_destinations_remove({
fields: `
success
message
`,
input: {
service_name: "viator",
destination_id: "test.id"
},
context: {
acct_id: "sv-all",
token // from serviceAccountToken call
}
});
BookingPrefix.ticketed_events_destinations_fetch_viator
This method wraps the booking.ticketed_events_destinations_fetch_viator
GraphQL query.
const result = await booking.ticketed_events_destinations_fetch_viator({
fields: `
count
docs {
destination_id
name
currency
type
parent_id
}
`
});
BookingPrefix.ticketed_events_suppliers_fetch_viator
This method wraps the booking.ticketed_events_suppliers_fetch_viator
GraphQL query.
const result = await booking.ticketed_events_suppliers_fetch_viator({
fields: `
count
docs {
supplier_id
supplier_name
}
`,
input: {
destination_id: "123"
}
});
Related Documentation
Troubleshooting
For any assistance please reach out on the sv-booking Slack channel.