# info.description
An API to manage Object types.

# Introduction

An OBJECTTYPE represents a collection of objects of similar form and/or function.
An OBJECTTYPE includes a definition of an object, represented as a JSON schema, and
metadata attributes. Metadata is stored on the top level and the JSON schema itself is stored
in VERSIONs because the definition of an object can change over time.

## Versions

Over time, an OBJECTTYPE can also change. This is reflected with VERSIONs.

A VERSION contains the JSON schema of an OBJECTTYPE at a certain time. Each
OBJECTTYPE can have several VERSIONs. A VERSION can have the `status` "draft" or "published".
Only draft VERSIONs are allowed to be changed. Once a VERSION is published
it becomes immutable, and if changes are still required a new VERSION should be created.

## JSON schema validation

OBJECTTYPEs are created to ensure that OBJECTs in the Objects API have the same
well defined structure. The JSON schema makes this possible.
The Objects API retrieves the related OBJECTTYPE and validates the object data against
the JSON schema in the appropriate VERSION of the OBJECTTYPE.

**Useful links**

* [JSON schema](https://json-schema.org/)

# paths./objecttypes.get.parameters[].description
Confidential level of the object type

* `open` - Open
* `intern` - Intern
* `confidential` - Confidential
* `strictly_confidential` - Strictly confidential

# paths./objecttypes.get.parameters[].description
A page number within the paginated result set.

# paths./objecttypes/{objecttype_uuid}/versions.get.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# paths./objecttypes/{objecttype_uuid}/versions.get.parameters[].description
A page number within the paginated result set.

# paths./objecttypes/{objecttype_uuid}/versions.post.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# paths./objecttypes/{objecttype_uuid}/versions/{version}.get.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# paths./objecttypes/{objecttype_uuid}/versions/{version}.put.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# paths./objecttypes/{objecttype_uuid}/versions/{version}.patch.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# paths./objecttypes/{objecttype_uuid}/versions/{version}.delete.description
Abstract base class for generic types.

A generic type is typically declared by inheriting from
this class parameterized with one or more type variables.
For example, a generic mapping type might be defined as::

  class Mapping(Generic[KT, VT]):
      def __getitem__(self, key: KT) -> VT:
          ...
      # Etc.

This class can then be used as follows::

  def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
      try:
          return mapping[key]
      except KeyError:
          return default

# components.schemas.DataClassificationEnum.description
* `open` - Open
* `intern` - Intern
* `confidential` - Confidential
* `strictly_confidential` - Strictly confidential

# components.schemas.ObjectType.properties.url.description
URL reference to this object. This is the unique identification and location of this object.

# components.schemas.ObjectType.properties.dataClassification.description
Confidential level of the object type

* `open` - Open
* `intern` - Intern
* `confidential` - Confidential
* `strictly_confidential` - Strictly confidential

# components.schemas.ObjectType.properties.maintainerOrganization.description
Organization which is responsible for the object type

# components.schemas.ObjectType.properties.maintainerDepartment.description
Business department which is responsible for the object type

# components.schemas.ObjectType.properties.contactPerson.description
Name of the person in the organization who can provide information about the object type

# components.schemas.ObjectType.properties.contactEmail.description
Email of the person in the organization who can provide information about the object type

# components.schemas.ObjectType.properties.source.description
Name of the system from which the object type originates

# components.schemas.ObjectType.properties.updateFrequency.description
Indicates how often the object type is updated

* `real_time` - Real-time
* `hourly` - Hourly
* `daily` - Daily
* `weekly` - Weekly
* `monthly` - Monthly
* `yearly` - Yearly
* `unknown` - Unknown

# components.schemas.ObjectType.properties.providerOrganization.description
Organization which is responsible for publication of the object type

# components.schemas.ObjectType.properties.documentationUrl.description
Link to the documentation for the object type

# components.schemas.ObjectType.properties.labels.description
Key-value pairs of keywords related for the object type

# components.schemas.ObjectType.properties.modifiedAt.description
Last date when the object type was modified

# components.schemas.ObjectType.properties.allowGeometry.description
Shows whether the related objects can have geographic coordinates. If the value is 'false' the related objects are not allowed to have coordinates and the creation/update of objects with `geometry` property will raise an error 

# components.schemas.ObjectType.properties.versions.description
list of URLs for the OBJECTTYPE versions

# components.schemas.ObjectVersion.description
A type of `ModelSerializer` that uses hyperlinked relationships with compound keys instead
of primary key relationships.  Specifically:

* A 'url' field is included instead of the 'id' field.
* Relationships to other instances are hyperlinks, instead of primary keys.

NOTE: this only works with DRF 3.1.0 and above.

# components.schemas.ObjectVersion.properties.status.description
Status of the object type version

* `published` - Published
* `draft` - Draft
* `deprecated` - Deprecated

# components.schemas.PatchedObjectType.properties.url.description
URL reference to this object. This is the unique identification and location of this object.

# components.schemas.PatchedObjectType.properties.dataClassification.description
Confidential level of the object type

* `open` - Open
* `intern` - Intern
* `confidential` - Confidential
* `strictly_confidential` - Strictly confidential

# components.schemas.PatchedObjectType.properties.maintainerOrganization.description
Organization which is responsible for the object type

# components.schemas.PatchedObjectType.properties.maintainerDepartment.description
Business department which is responsible for the object type

# components.schemas.PatchedObjectType.properties.contactPerson.description
Name of the person in the organization who can provide information about the object type

# components.schemas.PatchedObjectType.properties.contactEmail.description
Email of the person in the organization who can provide information about the object type

# components.schemas.PatchedObjectType.properties.source.description
Name of the system from which the object type originates

# components.schemas.PatchedObjectType.properties.updateFrequency.description
Indicates how often the object type is updated

* `real_time` - Real-time
* `hourly` - Hourly
* `daily` - Daily
* `weekly` - Weekly
* `monthly` - Monthly
* `yearly` - Yearly
* `unknown` - Unknown

# components.schemas.PatchedObjectType.properties.providerOrganization.description
Organization which is responsible for publication of the object type

# components.schemas.PatchedObjectType.properties.documentationUrl.description
Link to the documentation for the object type

# components.schemas.PatchedObjectType.properties.labels.description
Key-value pairs of keywords related for the object type

# components.schemas.PatchedObjectType.properties.modifiedAt.description
Last date when the object type was modified

# components.schemas.PatchedObjectType.properties.allowGeometry.description
Shows whether the related objects can have geographic coordinates. If the value is 'false' the related objects are not allowed to have coordinates and the creation/update of objects with `geometry` property will raise an error 

# components.schemas.PatchedObjectType.properties.versions.description
list of URLs for the OBJECTTYPE versions

# components.schemas.PatchedObjectVersion.description
A type of `ModelSerializer` that uses hyperlinked relationships with compound keys instead
of primary key relationships.  Specifically:

* A 'url' field is included instead of the 'id' field.
* Relationships to other instances are hyperlinks, instead of primary keys.

NOTE: this only works with DRF 3.1.0 and above.

# components.schemas.PatchedObjectVersion.properties.status.description
Status of the object type version

* `published` - Published
* `draft` - Draft
* `deprecated` - Deprecated

# components.schemas.StatusEnum.description
* `published` - Published
* `draft` - Draft
* `deprecated` - Deprecated

# components.schemas.UpdateFrequencyEnum.description
* `real_time` - Real-time
* `hourly` - Hourly
* `daily` - Daily
* `weekly` - Weekly
* `monthly` - Monthly
* `yearly` - Yearly
* `unknown` - Unknown

# components.securitySchemes.tokenAuth.description
Token-based authentication with required prefix "Token"