Interfaces are in a beta state and support for the feature varies across the Palantir platform. Review the current levels of support for more details.
An interface is an Ontology type that describes the shape of an object type and its capabilities. Interfaces provide object type polymorphism, allowing for consistent modeling of and interaction with object types that share a common shape.
An interface is composed of shared properties, interface link types, and metadata about the interface. An interface can be implemented by multiple object types and can extend one another to allow for composability. An interface can extend any number of other interfaces.
Much like interfaces in programming languages, you can extend an interface to compose interfaces together and have object types implement the interface to indicate that those object types conform to the interface definition. When interacting with objects that implement an interface, you can refer to the object, its properties, and its links by both its local API names as well as the API names of any interface which it implements.
There are both functional and stylistic differences between interfaces and object types within the Ontology.
Object types are concrete; they have schemas defined by shared or local properties, are backed by datasets containing property values, and can be instantiated as objects.
By contrast, interfaces are abstract; they have schemas defined by only shared properties, are not backed by datasets, and cannot be instantiated.
Stylistically, interfaces are visually distinguished from object types in the platform by having dashed lines around their icons.
Interface types usually fall into one of two conceptual buckets: capability interfaces and abstract object interfaces. Neither of these are explicit subtypes within the Ontology, but they are helpful terms to discuss and understand how interfaces are frequently used.
A capability interface represents a distinct capability and facilitates that capability’s reuse on all implementing object types. Capability interfaces tend to have a small set of properties and/or links specific to the capability represented. By implementing a capability interface, an object type may be used in the associated capability.
For example, a Schedulable Resource
interface could represent the properties and links necessary to support scheduling of an object type. Implementing object types could include Employee
, Conference room
, Equipment
, or any resource modeled as an object type with the necessary properties and links.
An abstract object interface represents a "supertype" of two or more object types that share common properties and links. In contrast to capability interfaces, object types that implement an abstract object interface are likely to have more similarities than differences, and may frequently be bucketed together to represent a more generic supertype.
Abstract object interfaces contain any properties and links common to all related object types. For example, an Employee
interface might include Name
, Email
, and Start Date
properties, and a Lead/Manager
link to another Employee
. Object types that would implement Employee
could be Full Time Employee
, Intern
, or Contractor
. All of these individual object types will have three common properties and one common link, so it is helpful for consistency and reusability to ensure that these are represented interchangeably.
In the example below, we show a Facility
abstract object interface that contains three shared properties (Latitude
, Longitude
and Facility Identifier
) and is applied to two object types (Runway
and Airport
).
Applications that are built to work with the Facility
interface can interact with any object type that implements the interface through the interface's shared properties and links. If a third object type uses the same interface (Weather Station
, for example), the application can use the shared properties for this additional object type with no code changes to the application.
Interfaces are permissioned through Ontology roles.
As support for interface Ontology types expands, availability will vary across the Palantir platform.
Interfaces are currently supported in the following applications and services:
Support for interfaces is in development in the following:
Interfaces are not yet supported in the following:
To add interfaces to your Ontology, you can create new interfaces or extend existing ones. Once you have an interface, you can then implement that interface with an object type of the appropriate shape or edit it to better fit your Organization as your Ontology evolves.