Listing

Advert for a property that is for sale or for rent, the listing actually refers to the listing agreement that is made between a principal and an agent, regarding marketing of a property.

Important information

Amenities

Parking can have 2 values:

  • null if the listing does not have amenity "Has Parking" checked

  • {type, quality} if the listing has amenity "Has Parking" checked

Pictures and documents

There are 4 important document properties: {coverPicture,pictures,documents,floorPlans}

The base path of pictures is formed of the baseUrl + "/" picture.resourcePath .The base url is https://resources.everreal.co

Query

To understand what is necessary and how to use GraphQl, in Master Data page we explain what is necessary to do

Ideal CSV Structure
type Query {
  listings(input: ListingFilterListPaging): [Listing]
  avgListingActivity(input: AvgActivityFilter): AvgListingActivity
  listingCounts(input: ListingCountsFilter): ListingCounts
}

type AvgListingActivity {
  activeListings: Int
}

type ListingCounts {
  listingsMissingViewings: Int
  listingsMissingContracts: Int
  activeAndPublished: Int
  olderThan30Days: Int
  listingsInContracting: Int
  listingsContractingCompleted: Int
  listingsMoveinCompleted: Int
}

type Listing {
  id: String
  title: String
  type: String
  isArchived: Boolean
  isActive: Boolean
  companyId: String
  listingResponsible: User
  contractDetails: ListingContractDetails
  coverPicture: IFile
  pictures: [IFile]
  documents: [IFile]
  floorplans: [IFile]
  company: Company
  status: LISTING_STATUS
  amenities: ListingAmenities
  listingInformation: ListingInformation
  availableFrom: Date
  propertyId: String
  property: Property
  unitId: String
  unit: Unit
  descriptions: ListingDescription
  createdAt: DateTime
  updatedAt: DateTime
}

type ListingAmenities {
  amenitiesIncluded: [AMENITIES_INCLUDED] # See this type under units page
  parking: UnitParkingType # See this type under units page
  qualityOfAmenities: String
  condition: String
  lastRenovationYear: Int
  heatingType: String
  mainEnergySource: String
  energyPerformanceCertificateAvailability: ENERGY_PERFORMANCE_CERTIFICATE_AVAILABILITY
  energyCertificateCreationDate: ENERGY_CERTIFICATE_CREATION_DATE
  buildingEnergyRatingType: BUILDING_ENERGY_RATING_TYPE
  thermalCharacteristic: Float
  energyConsumptionContainsWarmWater: Boolean
  energyEfficiencyClass: ENERGY_EFFICIENCY_CLASS
}

type ListingDescription {
  object: String
  amenities: String
  location: String
  other: String
}

type ListingContractDetails {
  currency: String
  rent: Float
  totalMonthlyRent: Float
  parkingRent: Float
  deposit: Float
  heatingCostsIncluded: Boolean
  utilityCosts: Float
  heatingCosts: Float
  petsAllowed: String
  displayAmount: Float
  hasCommission: Boolean
  commission: String
  commissionNote: String
  commissionType: String
}

enum UNIT_TYPE {
  APARTMENT
  HOUSE
  PARKING
  OFFICE
  STORE
  GASTRONOMY
  INDUSTRY
  SPECIAL_PURPOSE
  LAN
}

enum LISTING_TYPE {
  RENT_APARTMENT
  SELL_APARTMENT
  RENT_SHORT_TERM_APARTMENT
  RENT_HOUSE
  SELL_HOUSE
  RENT_PARKING
  SELL_PARKING
  RENT_RESIDENTIAL_LAND
  SELL_RESIDENTIAL_LAND
  RENT_OFFICE
  SELL_OFFICE
  RENT_STORE
  SELL_STORE
  RENT_GASTRONOMY
  SELL_GASTRONOMY
  RENT_INDUSTRY
  SELL_INDUSTRY
  RENT_SPECIAL_PURPOSE
  SELL_SPECIAL_PURPOSE
  RENT_COMMERCIAL_LAND
  SELL_COMMERCIAL_LAND
}

enum LISTING_STATUS {
  OPEN_FOR_CANDIDATES
  OPEN_FOR_APPLICANTS
  CONTRACTING_STARTED
  CONTRACTING_COMPLETED
  MOVE_IN_COMPLETED
  IS_INACTIVE
  IS_ARCHIVED
}

enum CANDIDATE_SOURCE {
  APPLIED_EVERREAL
  MANUAL_EVERREAL_CANDIDATE
  MANUAL_EVERREAL_SCHEDULED
  MANUAL_EVERREAL_APPLICANT
  IMMOSCOUT24
  WG_GESUCHT
  IMMOWELT
  IMMONET
  IVD24
  NWZ
  OPENIMMO_GENERIC
  EBAY
  OFFLINE_CONTRACT
}

input ListingFilter {
  from: Date
  to: Date
  candidateSources: [CANDIDATE_SOURCE]
  companyId: String
  propertyGroupId: String
  propertyId: String
  ownerId: String
  listingId: String
  external: Boolean
  fullSearch: String
  isArchived: Boolean
  isActive: Boolean
  internalAdvertiseId: String
  availableFrom: Date
  externalPropertyId: String
  scoringTemplateId: String
  propertyCity: String
  propertyName: String
  propertyStreet: String
  listingType: LISTING_TYPE
  status: LISTING_STATUS
  responsibleFullName: String
  unitName: String
  unitId: String
  externalUnitId: String
  unitType: UNIT_TYPE
  priceMin: Float
  priceMax: Float
  roomsMin: Int
  roomsMax: Int
  surfaceMin: Int
  surfaceMax: Int
  livingSurfaceMin: Int
  livingSurfaceMax: Int
  heightMax: Int
  heightMin: Int
  listingResponsibleUserId: String
  projectId: String
  candidateEmail: String
  candidateIsWinner: Boolean
}

input ListingFilterListPaging {
  filter: ListingFilter
  paging: GraphPaging
  sort: GraphSorting
}

input ListingCountsFilter {
  userId: String
  companyId: String
}

Usage:

Query:

Variables:

You can used any variable in ListingFilter to

Should l be something like this.

Mutation

Mutations are responsible to update a specific operations like activating, deactivating listing or archiving or unarchiving listing.

Here are details on the capabilities of different mutations

  • updateListing: Is used to perform update on an listing with the help of a listing Id, this will help is performing some basic operations listed below

Schema Definition

Below we are providing a full example how to update listing, all this information is not required, only the ones that was using ! notation previously.

Last updated

Was this helpful?