Graphql schema

schema {
  mutation: Mutation
}

"A stringified JSON object."
scalar JSON

"A 13-character JavaScript timestamp."
scalar Timestamp

scalar Point

type Query {
  """Fetches an app by ID."""
  app(id: ID!): App!
  """Fetches features by app ID."""
  appFeatures(appId: ID!): [AppFeature!]!
  """Fetches feature properties by feature ID."""
  featureProperties(featureId: ID!): [AppFeatureProperty!]!
  """Fetches cities."""
  publicMarketplaceCities(country: String, region: String): [PublicSpatialCitySearchResponse]!
  """Fetches regions."""
  publicMarketplaceRegions(country: String!): [PublicSpatialRegionSearchResponse]!
  """Fetches countries."""
  publicMarketplaceCountries(continent: String!): [PublicSpatialCountrySearchResponse]!
}

type Mutation {
  """Updates tileset source on Mapbox."""
  updateTilesetSource(appId: ID!): AsyncActionResponse!
  """Creates one feature."""
  createOneFeature(input: CreateOneFeatureInput!): AppFeature!
  """Creates many features under the same app."""
  createManyFeatures(input: CreateManyAppFeaturesInput!): [AppFeature!]!
  """Deletes one feature."""
  deleteOneFeature(input: DeleteOneFeatureInput!): AppFeature!
  """Updates one feature."""
  updateOneFeature(input: UpdateOneFeatureInput!): AppFeature!
  """Deletes many features."""
  deleteManyFeatures(input: DeleteManyFeaturesInput!): DeleteManyFeaturesResponse!
  """Creates one feature property."""
  createOneFeatureProperty(input: CreateOneFeaturePropertyInput!): AppFeatureProperty!
  """Deletes many feature properties."""
  deleteManyFeatureProperties(input: DeleteManyFeaturePropertiesInput!): DeleteManyFeaturePropertiesResponse!
  """Creates many feature properties."""
  createManyFeatureProperties(input: CreateManyFeaturePropertiesInput!): CreateManyFeaturePropertiesResponse!
  """Deletes one feature property."""
  deleteOneFeatureProperty(input: DeleteOneFeaturePropertyInput!): AppFeatureProperty!
  """Updates one feature property."""
  updateOneFeatureProperty(input: UpdateOneFeaturePropertyInput!): AppFeatureProperty!
}

input CreateManyFeaturePropertiesNestedResourceInput {
  "The name of the feature property."
  name: String!
  "The value of the feature property."
  value: String!
  "The data type of the feature property."
  dataType: DataType!
}

input CreateManyAppFeatureAndFeaturePropertiesResourceInput {
  "The title of the feature."
  title: String!
  "The type of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  type: FeatureGeoType
  "The country ISO code of the feature."
  country: String
  "The region ISO code of the feature."
  region: String
  "The city ISO code of the feature."
  city: String
  "The address of the feature."
  address: String
  "The coordinates of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  coordinates: JSON
  "The list of feature Properties inputs."
  featureProperties: [CreateManyFeaturePropertiesNestedResourceInput!]
}

type CreateManyAppFeaturesResourceResponse {
  "The Feature ID."
  id: ID!
  "The number of created feature properties."
  featurePropertiesCount: Int!
}

type BannedPlace {
  code: String!
  title: String!
  featureId: ID!
}

type PlaceCap {
  code: String!
  currency_code: String!
  cap_value: Float!
  price: Float
}

input OrganizationDataFiltersCorporateAccommodationRates {
  countryCode: String!
}

type CorporateAccommodationRate {
  id: String!
  name: String!
  address: String
  coordinates: JSON
  type: FeatureGeoType!
  properties: [FeaturePropertyForOrgs]!
}

type OrganizationOffice {
  id: String!
  organizationId: String!
  name: String!
  title: String!
  appId: String!
  coordinates: JSON
  address: String
  type: FeatureGeoType!
  properties: [FeaturePropertyForOrgs]!
}

type FeaturePropertyForOrgs {
  name: String!
  value: String!
}

input PermissionInput {
  "The permission category."
  category: PermissionCategoryInput!
  "The permission value."
  value: String!
}

input CreateManyAppFeaturesInput {
  "The app ID."
  appId: ID!
  "The list of feature inputs."
  features: [CreateManyAppFeatureResourceInput!]!
}

input CreateManyAppFeatureResourceInput {
  "The title of the feature."
  title: String!
  "The type of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  type: FeatureGeoType
  "The country ISO code of the feature."
  country: String
  "The region ISO code of the feature."
  region: String
  "The city ISO code of the feature."
  city: String
  "The address of the feature."
  address: String
  "The coordinates of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  coordinates: JSON
}

type Permission {
  "The permission ID."
  id: ID!
  "The installation ID."
  installationId: ID!
  "The permission category."
  category: PermissionCategory!
  "The permission value."
  value: String!
  "The creation date."
  created: Timestamp!
  "The last update date."
  updated: Timestamp!
}

input CreateOneFeatureInput {
  "The app ID."
  appId: ID!
  "The title of the feature."
  title: String!
  "The type of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  type: FeatureGeoType
  "The country ISO code of the feature."
  country: String
  "The region ISO code of the feature."
  region: String
  "The city ISO code of the feature."
  city: String
  "The address of the feature."
  address: String
  "The coordinates of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  coordinates: JSON
}

input UpdateOneFeatureInput {
  "The feature ID."
  id: ID!
  "The title of the feature."
  title: String
  "The type of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  type: FeatureGeoType
  "The country ISO code of the feature."
  country: String
  "The region ISO code of the feature."
  region: String
  "The city ISO code of the feature."
  city: String
  "The address of the feature."
  address: String
  "The coordinates of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  coordinates: JSON
  "The app ID."
  appId: String
}

input UpdateOneFeaturePropertyInput {
  "The feature property ID."
  id: ID!
  "The name of the feature property."
  name: String
  "The value of the feature property."
  value: String
  "The data type of the feature property."
  dataType: DataType
}

input DeleteOneFeatureInput {
  "The feature ID."
  id: ID!
  "The app ID."
  appId: String
}

input DeleteOneFeaturePropertyInput {
  "The feature property ID."
  id: ID!
  "The app ID."
  appId: String
}

input CreateOneFeaturePropertyInput {
  "The app ID."
  appId: String!
  "The feature ID."
  featureId: String!
  "The name of the feature property."
  name: String!
  "The value of the feature property."
  value: String!
  "The data type of the feature property."
  dataType: DataType!
}

input CreateManyFeaturePropertiesInput {
  "The feature ID."
  featureId: ID!
  "The name of the feature properties."
  featureProperties: [CreateManyFeaturePropertiesResourceInput!]!
  "The app ID."
  appId: String
}

input CreateManyFeaturePropertiesResourceInput {
  "The name of the feature property."
  name: String!
  "The value of the feature property."
  value: String!
  "The data type of the feature property."
  dataType: DataType!
  "The app ID."
  appId: String
}

input EmissionsSegmentPayload {
  origin: String!
  destination: String!
  distance: Float!
  cabinClass: CabinClassTypes!
}

input TransfersPayloadOrigin {
  iataCode: String
}

input TransfersPayloadDestination {
  address: TransfersPayloadAddress
}

input TransfersPayloadAddress {
  addressSearchPhrase: String
  countryCode: String
}

type CreateManyFeaturePropertiesResponse {
  "The number of created feature properties."
  count: Int!
}

input DeleteManyFeaturesInput {
  "The app ID."
  appId: ID
  "The Feature ID's"
  featureIDs: [ID]
}

input DeleteManyFeaturePropertiesInput {
  "The app ID."
  appId: ID!
}

type DeleteManyFeaturesResponse {
  "The number of deleted features."
  count: Int!
}

type DeleteManyFeaturePropertiesResponse {
  "The number of deleted feature properties."
  count: Int!
}

type App {
  "The app ID."
  id: ID!
  "The app name."
  appName: String!
  "The app description."
  description: String!
  "The thumbnail media ID."
  thumbnailUrl: String
  "Returns true if the application is Troop verified."
  isVerified: Boolean!
  "The creation date."
  created: Timestamp!
  "The date an app was last accessed."
  lastAccessed: Timestamp
  "The expiration date of the app."
  expiryDate: Timestamp!
  "The last update date."
  updated: Timestamp!
  "The app owner ID."
  userId: String!
  "The organization ID of the owner."
  organizationId: String!
  "The app status."
  status: AppStatus!
  "The app type."
  type: AppType!
  "The app subtype."
  subType: AppSubType!
  "The app visibility."
  visibility: AppVisibility!
  "Returns true if the application is Troop Featured."
  isFeatured: Boolean!
  "The app IntegrationType"
  integrationType: IntegrationType!
  "The support email"
  supportEmail: String
  "The Last Updated Date"
  lastUpdatedDate: Timestamp
  "The import status."
  importStatus: ImportStatus
  "Returns the number of time the app has been installed."
  installationsCount: Int
  "Returns true if the application is set to be a default Troop app."
  isDefault: Boolean!
  "The amount of features linked to this app"
  nFeatures: Int
  "Returns the appMetaData for this app."
  appMetaDatas: [AppMetadata]
}

type ImportStatus {
  "The import status ID."
  id: ID!
  "The app ID."
  appId: ID!
  "The execution ID."
  executionId: String!
  "The status."
  status: ImportStatusStatus!
  "The name of the current stage."
  current_stage: ImportStatusStage!
  "The events related to the import operation."
  events: JSON!
  "The type of import."
  type: ImportStatusType!
  "The creation date."
  created: Timestamp!
  "The last update date."
  updated: Timestamp!
}

type AppMetadata {
  "The app metadata ID."
  id: ID!
  "The app metadata name. For a Google Sheet ID: 'gSheetId'."
  name: String!
  "The app metadata value."
  value: String!
  "The data type of the metadata."
  dataType: DataType!
  "The app ID."
  appId: String!
  "The app metadata Title"
  title: String!
  "The app metadata description."
  description: String!
}

type AppFeature @key(fields: "id") {
  "The feature ID."
  id: ID!
  "The creation date."
  created: Timestamp!
  "The last update date."
  updated: Timestamp!
  "The title of the feature."
  title: String!
  "The type of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  type: FeatureGeoType
  "The country ISO code of the feature."
  country: String
  "The region ISO code of the feature."
  region: String
  "The city ISO code of the feature."
  city: String
  "The address of the feature."
  address: String
  "The coordinates of the feature. Required for apps of subtype PLACE_DATA_GEOGRAPHIC_LOCATION."
  coordinates: JSON
  "The app ID."
  appId: String!
  "The feature properties."
  featureProperties: [AppFeatureProperty!]
}

type AppFeatureProperty {
  "The feature property ID."
  id: ID!
  "The name of the feature property."
  name: String!
  "The value of the feature property."
  value: String!
  "The data type of the property"
  dataType: DataType!
  "The app ID."
  appId: String!
  "The feature ID."
  featureId: String!
}

enum ImportStatusStatus {
  PROCESSING
  COMPLETED
  CANCELLED
  FAILED
}

enum ImportStatusStage {
  READ_GOOGLE_SHEET
  IMPORT_DATABASE
  IMPORT_MAPBOX
  PROCESS_TILESET
  GEOLOCATE_ADDRESS
  FETCH_HOTEL_DETAILS
}

enum ImportStatusType {
  CRON
  MANUAL
}

enum AppStatus {
  DRAFT
  READY
  ARCHIVED
  DISABLED
}

enum AppVisibility {
  PUBLIC
  PRIVATE
}

enum PermissionCategory {
  OWNER
  ORGANIZATION
  USER
  USER_ROLE
}

enum PermissionCategoryInput {
  ORGANIZATION
  USER
  USER_ROLE
}

enum AppType {
  PLACE_DATA
  LOCAL_TRANSPORT
  ORGANIZATION_DATA
  EMISSIONS
  OAUTH2
}

enum AppSubType {
  PLACE_DATA_GEOGRAPHIC_LOCATION
  PLACE_DATA_GEOGRAPHIC_AREA
  PLACE_DATA_EVENTS
  LOCAL_TRANSPORT_RENTALS
  ORGANIZATION_DATA_BANNED_PLACES
  ORGANIZATION_DATA_OFFICE_LOCATIONS
  ORGANIZATION_DATA_PLACE_CAPS
  ORGANIZATION_DATA_CORPORATE_RATES
  EMISSIONS_CALCULATION
  OAUTH2_CALENDAR
}

enum AsyncActionResponseStatus {
  SCHEDULED
  PENDING
  SUCCESSFUL
  FAILED
  CANCELLED
}

enum DataType {
  STRING
  INT
  JSON
  DECIMAL
  BOOLEAN
  DATE
}

enum FeatureGeoType {
  Point
  MultiPoint
  Polygon
  MultiPolygon
  LineString
  MultiLineString
}

enum IntegrationType {
  API_FETCH
  API_IMPORT
  GOOGLE_SHEET
  GOOGLE
  MICROSOFT
}

enum EmissionsCalculationMode {
  ACCOMMODATION
  AIRCRAFT
  TRAIN
  BUS
  CAR
}

enum CabinClassTypes {
  NONE
  BUSINESS
  ECONOMY
  FIRST
  PREMIUM_ECONOMY
}

type AsyncActionResponse {
  "The response status."
  status: AsyncActionResponseStatus!
  "The response message."
  message: String
}

type PublicSpatialCitySearchResponse {
  "The city code."
  code: String!
  "The city name."
  name: String
  "The continent code."
  continent_code: String
  "The country code."
  country_code: String
  "The region code."
  region_code: String
}

type PublicSpatialCountrySearchResponse {
  "The country code."
  code: String!
  "The country name."
  name: String
  "The country code."
  continent_code: String
}

type PublicSpatialRegionSearchResponse {
  "The region code."
  code: String!
  "The region name."
  name: String
  "The country code."
  continent_code: String
  "The country code."
  country_code: String
}

type TransfersDataResponseAddress {
  bookerEnteredAddress: String
  resolvedAddress: String
  fullResolvedAddress: FullResolvedAddress
  latitude: Float
  longitude: Float
  hub: Boolean
  iataCode: String
}

type FullResolvedAddress {
  streetName: String
  streetNumber: String
  city: String
  postalCode: String
  region: String
  countryCode: String
  establishment: String
}

type TravelAddon {
  id: String
  type: String
  price: Float
  commission: Float
  maxAllowed: Int
}

type TransfersDataQuote {
  id: String
  vehicleCategory: String
  vehicleImageUrl: String
  passengerCapacity: Int
  luggageCapacity: Int
  price: Float
  commission: Float
  currencyCode: String
  combinedBabyAndBoosterSeatsCapacity: Int
  expires: String
  availableTravelAddons: [TravelAddon]
  includedWaitingTimeInMinutes: Int
  freeCancellationUntil: String
  pricePerPassenger: Boolean
}

type TransfersDataResponseQuoteCategory {
  outbound: [TransfersDataQuote]
  inbound: [TransfersDataQuote]
}

type TicketData {
  USD: String
  ItemID: String
  Price: Float
  PriceComments: String
  Section: String
  ServiceFee: Float
}

enum OrganizationDataSpecType {
  FEATURE
  FEATURE_PROPERTY
}

type OrganizationDataSpecOption {
  label: String!
  value: String!
}

type FeatureValidatorFilterProperties {
  dependsOn: String
  filterKey: String
  relatedFields: [String]
}

type EmissionsEquivalency {
  type: String
  values: [String]
  amount: Float
  unit: String
}

Last updated