text: export const Apartment = {
    label: "Apartment",
    description: `An apartment (in American English) or flat (in British English) is a
  self-contained housing unit (a type of residential real estate) that occupies
  only part of a building (Source: Wikipedia, the free encyclopedia, see 
  http://en.wikipedia.org/wiki/Apartment).`,
    _id: {
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      optional: true,
    },
    createdAt: {
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Date,
      optional: true,
      viewableBy: ["guests"],
      onInsert: (document, context) => {
        return new Date()
      },
    },
    userId: {
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      optional: true,
      resolveAs: {
        fieldName: "user",
        type: "User",
        resolver: (document, args, context) => {
          return context.Users.findOne(
            { _id: document.userId },
            {
              fields: context.Users.getViewableFields(
                context.currentUser,
                context.Users
              ),
            }
          )
        },
        optional: true,
      },
    },
    sameAs: {
      label: "sameAs",
      description: `URL of a reference Web page that unambiguously indicates the item's identity.
  E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    alternateName: {
      label: "alternateName",
      description: `An alias for the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    image: {
      label: "image",
      description: `An image of the item. This can be a URL or a fully described ImageObject.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ImageObjectResolved",
        type: "ImageObject",
        resolver: (document, args, context) => {
          return context.ImageObject.findOne(
            { _id: document.ImageObject },
            {
              fields: context.ImageObject.getViewableFields(
                context.currentUser,
                context.ImageObject
              ),
            }
          )
        },
        optional: true,
      },
    },
    additionalType: {
      label: "additionalType",
      description: `An additional type for the item, typically used for adding more specific types
  from external vocabularies in microdata syntax. This is a relationship between
  something and a class that the thing is in. In RDFa syntax, it is better to use
  the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org
  tools may have only weaker understanding of extra types, in particular those
  defined externally.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    name: {
      label: "name",
      description: `The name of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    identifier: {
      label: "identifier",
      description: `The identifier property represents any kind of identifier for any kind of Thing,
  such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties
  for representing many of these, either as textual strings or as URL (URI) links.
  See background notes for more details.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    mainEntityOfPage: {
      label: "mainEntityOfPage",
      description: `Indicates a page (or other CreativeWork) for which this thing is the main entity
  being described. See background notes for details.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    url: {
      label: "url",
      description: `URL of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    potentialAction: {
      label: "potentialAction",
      description: `Indicates a potential Action, which describes an idealized action in which this
  thing would play an 'object' role.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ActionResolved",
        type: "Action",
        resolver: (document, args, context) => {
          return context.Action.findOne(
            { _id: document.Action },
            {
              fields: context.Action.getViewableFields(
                context.currentUser,
                context.Action
              ),
            }
          )
        },
        optional: true,
      },
    },
    description: {
      label: "description",
      description: `A description of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    disambiguatingDescription: {
      label: "disambiguatingDescription",
      description: `A sub property of description. A short description of the item used to
  disambiguate from other, similar items. Information from other properties (in
  particular, name) may be necessary for the description to be useful for
  disambiguation.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    openingHoursSpecification: {
      label: "openingHoursSpecification",
      description: `The opening hours of a certain place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "OpeningHoursSpecificationResolved",
        type: "OpeningHoursSpecification",
        resolver: (document, args, context) => {
          return context.OpeningHoursSpecification.findOne(
            { _id: document.OpeningHoursSpecification },
            {
              fields: context.OpeningHoursSpecification.getViewableFields(
                context.currentUser,
                context.OpeningHoursSpecification
              ),
            }
          )
        },
        optional: true,
      },
    },
    events: {
      label: "events",
      description: `Upcoming or past events associated with this place or organization.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "EventResolved",
        type: "Event",
        resolver: (document, args, context) => {
          return context.Event.findOne(
            { _id: document.Event },
            {
              fields: context.Event.getViewableFields(
                context.currentUser,
                context.Event
              ),
            }
          )
        },
        optional: true,
      },
    },
    faxNumber: {
      label: "faxNumber",
      description: `The fax number.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    photo: {
      label: "photo",
      description: `A photograph of this place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ImageObjectResolved",
        type: "ImageObject",
        resolver: (document, args, context) => {
          return context.ImageObject.findOne(
            { _id: document.ImageObject },
            {
              fields: context.ImageObject.getViewableFields(
                context.currentUser,
                context.ImageObject
              ),
            }
          )
        },
        optional: true,
      },
    },
    smokingAllowed: {
      label: "smokingAllowed",
      description: `Indicates whether it is allowed to smoke in the place, e.g. in the restaurant,
  hotel or hotel room.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Boolean,
      input: "checkbox",
    },
    globalLocationNumber: {
      label: "globalLocationNumber",
      description: `The Global Location Number (GLN, sometimes also referred to as International
  Location Number or ILN) of the respective organization, person, or place. The
  GLN is a 13-digit number used to identify parties and physical locations.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    maximumAttendeeCapacity: {
      label: "maximumAttendeeCapacity",
      description: `The total number of individuals that may attend an event or venue.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "IntegerResolved",
        type: "Integer",
        resolver: (document, args, context) => {
          return context.Integer.findOne(
            { _id: document.Integer },
            {
              fields: context.Integer.getViewableFields(
                context.currentUser,
                context.Integer
              ),
            }
          )
        },
        optional: true,
      },
    },
    aggregateRating: {
      label: "aggregateRating",
      description: `The overall rating, based on a collection of reviews or ratings, of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "AggregateRatingResolved",
        type: "AggregateRating",
        resolver: (document, args, context) => {
          return context.AggregateRating.findOne(
            { _id: document.AggregateRating },
            {
              fields: context.AggregateRating.getViewableFields(
                context.currentUser,
                context.AggregateRating
              ),
            }
          )
        },
        optional: true,
      },
    },
    reviews: {
      label: "reviews",
      description: `Review of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ReviewResolved",
        type: "Review",
        resolver: (document, args, context) => {
          return context.Review.findOne(
            { _id: document.Review },
            {
              fields: context.Review.getViewableFields(
                context.currentUser,
                context.Review
              ),
            }
          )
        },
        optional: true,
      },
    },
    photos: {
      label: "photos",
      description: `Photographs of this place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ImageObjectResolved",
        type: "ImageObject",
        resolver: (document, args, context) => {
          return context.ImageObject.findOne(
            { _id: document.ImageObject },
            {
              fields: context.ImageObject.getViewableFields(
                context.currentUser,
                context.ImageObject
              ),
            }
          )
        },
        optional: true,
      },
    },
    map: {
      label: "map",
      description: `A URL to a map of the place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    branchCode: {
      label: "branchCode",
      description: `A short textual code (also called "store code") that uniquely identifies a place
  of business. The code is typically assigned by the parentOrganization and used
  in structured URLs.
  
  For example, in the URL http://www.starbucks.co.uk/store-locator/etc/detail/3047
  the code "3047" is a branchCode for a particular branch.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    hasMap: {
      label: "hasMap",
      description: `A URL to a map of the place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "MapResolved",
        type: "Map",
        resolver: (document, args, context) => {
          return context.Map.findOne(
            { _id: document.Map },
            {
              fields: context.Map.getViewableFields(
                context.currentUser,
                context.Map
              ),
            }
          )
        },
        optional: true,
      },
    },
    additionalProperty: {
      label: "additionalProperty",
      description: `A property-value pair representing an additional characteristics of the
  entitity, e.g. a product feature or another characteristic for which there is no
  matching property in schema.org.
  
  Note: Publishers should be aware that applications designed to use specific
  schema.org properties (e.g. width, color, gtin13, ...) will typically expect
  such data to be provided using those properties, rather than using the generic
  property/value mechanism.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "PropertyValueResolved",
        type: "PropertyValue",
        resolver: (document, args, context) => {
          return context.PropertyValue.findOne(
            { _id: document.PropertyValue },
            {
              fields: context.PropertyValue.getViewableFields(
                context.currentUser,
                context.PropertyValue
              ),
            }
          )
        },
        optional: true,
      },
    },
    address: {
      label: "address",
      description: `Physical address of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    specialOpeningHoursSpecification: {
      label: "specialOpeningHoursSpecification",
      description: `The special opening hours of a certain place.
  
  Use this to explicitly override general opening hours brought in scope by 
  openingHoursSpecification or openingHours.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "OpeningHoursSpecificationResolved",
        type: "OpeningHoursSpecification",
        resolver: (document, args, context) => {
          return context.OpeningHoursSpecification.findOne(
            { _id: document.OpeningHoursSpecification },
            {
              fields: context.OpeningHoursSpecification.getViewableFields(
                context.currentUser,
                context.OpeningHoursSpecification
              ),
            }
          )
        },
        optional: true,
      },
    },
    amenityFeature: {
      label: "amenityFeature",
      description: `An amenity feature (e.g. a characteristic or service) of the Accommodation. This
  generic property does not make a statement about whether the feature is included
  in an offer for the main accommodation or available at extra costs.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "LocationFeatureSpecificationResolved",
        type: "LocationFeatureSpecification",
        resolver: (document, args, context) => {
          return context.LocationFeatureSpecification.findOne(
            { _id: document.LocationFeatureSpecification },
            {
              fields: context.LocationFeatureSpecification.getViewableFields(
                context.currentUser,
                context.LocationFeatureSpecification
              ),
            }
          )
        },
        optional: true,
      },
    },
    logo: {
      label: "logo",
      description: `An associated logo.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    telephone: {
      label: "telephone",
      description: `The telephone number.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    geo: {
      label: "geo",
      description: `The geo coordinates of the place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "GeoShapeResolved",
        type: "GeoShape",
        resolver: (document, args, context) => {
          return context.GeoShape.findOne(
            { _id: document.GeoShape },
            {
              fields: context.GeoShape.getViewableFields(
                context.currentUser,
                context.GeoShape
              ),
            }
          )
        },
        optional: true,
      },
    },
    containedInPlace: {
      label: "containedInPlace",
      description: `The basic containment relation between a place and one that contains it.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "PlaceResolved",
        type: "Place",
        resolver: (document, args, context) => {
          return context.Place.findOne(
            { _id: document.Place },
            {
              fields: context.Place.getViewableFields(
                context.currentUser,
                context.Place
              ),
            }
          )
        },
        optional: true,
      },
    },
    review: {
      label: "review",
      description: `A review of the item.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "ReviewResolved",
        type: "Review",
        resolver: (document, args, context) => {
          return context.Review.findOne(
            { _id: document.Review },
            {
              fields: context.Review.getViewableFields(
                context.currentUser,
                context.Review
              ),
            }
          )
        },
        optional: true,
      },
    },
    publicAccess: {
      label: "publicAccess",
      description: `A flag to signal that the Place is open to public visitors. If this property is
  omitted there is no assumed default boolean value`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Boolean,
      input: "checkbox",
    },
    event: {
      label: "event",
      description: `Upcoming or past event associated with this place, organization, or action.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "EventResolved",
        type: "Event",
        resolver: (document, args, context) => {
          return context.Event.findOne(
            { _id: document.Event },
            {
              fields: context.Event.getViewableFields(
                context.currentUser,
                context.Event
              ),
            }
          )
        },
        optional: true,
      },
    },
    containsPlace: {
      label: "containsPlace",
      description: `The basic containment relation between a place and another that it contains.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "PlaceResolved",
        type: "Place",
        resolver: (document, args, context) => {
          return context.Place.findOne(
            { _id: document.Place },
            {
              fields: context.Place.getViewableFields(
                context.currentUser,
                context.Place
              ),
            }
          )
        },
        optional: true,
      },
    },
    isicV4: {
      label: "isicV4",
      description: `The International Standard of Industrial Classification of All Economic
  Activities (ISIC), Revision 4 code for a particular organization, business
  person, or place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    maps: {
      label: "maps",
      description: `A URL to a map of the place.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
      input: "url",
    },
    isAccessibleForFree: {
      label: "isAccessibleForFree",
      description: `A flag to signal that the item, event, or place is accessible for free.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Boolean,
      input: "checkbox",
    },
    containedIn: {
      label: "containedIn",
      description: `The basic containment relation between a place and one that contains it.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "PlaceResolved",
        type: "Place",
        resolver: (document, args, context) => {
          return context.Place.findOne(
            { _id: document.Place },
            {
              fields: context.Place.getViewableFields(
                context.currentUser,
                context.Place
              ),
            }
          )
        },
        optional: true,
      },
    },
    floorSize: {
      label: "floorSize",
      description: `The size of the accommodation, e.g. in square meter or squarefoot. Typical unit
  code(s): MTK for square meter, FTK for square foot, or YDK for square yard`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "QuantitativeValueResolved",
        type: "QuantitativeValue",
        resolver: (document, args, context) => {
          return context.QuantitativeValue.findOne(
            { _id: document.QuantitativeValue },
            {
              fields: context.QuantitativeValue.getViewableFields(
                context.currentUser,
                context.QuantitativeValue
              ),
            }
          )
        },
        optional: true,
      },
    },
    petsAllowed: {
      label: "petsAllowed",
      description: `Indicates whether pets are allowed to enter the accommodation or lodging
  business. More detailed information can be put in a text value.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Boolean,
      input: "checkbox",
    },
    numberOfRooms: {
      label: "numberOfRooms",
      description: `The number of rooms (excluding bathrooms and closets) of the accommodation or
  lodging business. Typical unit code(s): ROM for room or C62 for no unit. The
  type of room can be put in the unitText property of the QuantitativeValue.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: Number,
      input: "number",
    },
    permittedUsage: {
      label: "permittedUsage",
      description: `Indications regarding the permitted usage of the accommodation.`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      type: String,
    },
    occupancy: {
      label: "occupancy",
      description: `The allowed total occupancy for the accommodation in persons (including infants
  etc). For individual accommodations, this is not necessarily the legal maximum
  but defines the permitted usage as per the contractual agreement (e.g. a double
  room used by a single person). Typical unit code(s): C62 for person`,
      viewableBy: ["guests"],
      editableBy: ["members"],
      insertableBy: ["members"],
      resolveAs: {
        fieldName: "QuantitativeValueResolved",
        type: "QuantitativeValue",
        resolver: (document, args, context) => {
          return context.QuantitativeValue.findOne(
            { _id: document.QuantitativeValue },
            {
              fields: context.QuantitativeValue.getViewableFields(
                context.currentUser,
                context.QuantitativeValue
              ),
            }
          )
        },
        optional: true,
      },
    },
  }
  export default Apartment
  