code: public static List<GraphObjectMap> getSchemaTypeInfo(final SecurityContext securityContext, final String rawType, final Class type, final String propertyView) throws FrameworkException {
  
  		List<GraphObjectMap> resultList = new LinkedList<>();
  
  		// create & add schema information
  
  		if (type != null) {
  
  			if (propertyView != null) {
  
  				for (final Map.Entry<String, Object> entry : getPropertiesForView(securityContext, type, propertyView).entrySet()) {
  
  					final GraphObjectMap property = new GraphObjectMap();
  
  					for (final Map.Entry<String, Object> prop : ((Map<String, Object>) entry.getValue()).entrySet()) {
  
  						property.setProperty(new GenericProperty(prop.getKey()), prop.getValue());
  					}
  
  					resultList.add(property);
  				}
  
  			} else {
  
  				final GraphObjectMap schema = new GraphObjectMap();
  
  				resultList.add(schema);
  
  				String url = "/".concat(rawType);
  
  				schema.setProperty(new StringProperty("url"), url);
  				schema.setProperty(new StringProperty("type"), type.getSimpleName());
  				schema.setProperty(new StringProperty("className"), type.getName());
  				schema.setProperty(new StringProperty("extendsClass"), type.getSuperclass().getName());
  				schema.setProperty(new BooleanProperty("isRel"), AbstractRelationship.class.isAssignableFrom(type));
  				schema.setProperty(new LongProperty("flags"), SecurityContext.getResourceFlags(rawType));
  
  				Set<String> propertyViews = new LinkedHashSet<>(StructrApp.getConfiguration().getPropertyViewsForType(type));
  
  				// list property sets for all views
  				Map<String, Map<String, Object>> views = new TreeMap();
  				schema.setProperty(new GenericProperty("views"), views);
  
  				for (final String view : propertyViews) {
  
  					if (!View.INTERNAL_GRAPH_VIEW.equals(view)) {
  
  						views.put(view, getPropertiesForView(securityContext, type, view));
  					}
  				}
  			}
  		}
  
  		return resultList;
  	}
docs: ----- public static methods -----