# hexkit > A Toolkit for Building Microservices using the Hexagonal Architecture ## Docs ### API Reference #### Core Types & Base Classes > Shared type aliases and provider base classes - [custom_types.ID](https://ghga-de.github.io/hexkit/reference/custom_types.ID.html) - [custom_types.JsonObject](https://ghga-de.github.io/hexkit/reference/custom_types.JsonObject.html) - [custom_types.Ascii](https://ghga-de.github.io/hexkit/reference/custom_types.Ascii.html) - [custom_types.AsyncConstructable](https://ghga-de.github.io/hexkit/reference/custom_types.AsyncConstructable.html) - [custom_types.AsyncContextConstructable](https://ghga-de.github.io/hexkit/reference/custom_types.AsyncContextConstructable.html) - [custom_types.KafkaCompressionType](https://ghga-de.github.io/hexkit/reference/custom_types.KafkaCompressionType.html) - [custom_types.PytestScope](https://ghga-de.github.io/hexkit/reference/custom_types.PytestScope.html) - [base.InboundProviderBase](https://ghga-de.github.io/hexkit/reference/base.InboundProviderBase.html) #### General Utilities > Dependency-light helper functions and related errors - [utils.calc_part_size](https://ghga-de.github.io/hexkit/reference/utils.calc_part_size.html) - [utils.check_ascii](https://ghga-de.github.io/hexkit/reference/utils.check_ascii.html) - [utils.validate_fields_in_model](https://ghga-de.github.io/hexkit/reference/utils.validate_fields_in_model.html) - [utils.round_datetime_to_ms](https://ghga-de.github.io/hexkit/reference/utils.round_datetime_to_ms.html) - [utils.now_utc_ms_prec](https://ghga-de.github.io/hexkit/reference/utils.now_utc_ms_prec.html) - [utils.FieldNotInModelError](https://ghga-de.github.io/hexkit/reference/utils.FieldNotInModelError.html) - [utils.NonAsciiStrError](https://ghga-de.github.io/hexkit/reference/utils.NonAsciiStrError.html) #### Correlation IDs > Correlation-ID context management and helpers - [correlation.get_correlation_id](https://ghga-de.github.io/hexkit/reference/correlation.get_correlation_id.html) - [correlation.new_correlation_id](https://ghga-de.github.io/hexkit/reference/correlation.new_correlation_id.html) - [correlation.validate_correlation_id](https://ghga-de.github.io/hexkit/reference/correlation.validate_correlation_id.html) - [correlation.correlation_id_from_str](https://ghga-de.github.io/hexkit/reference/correlation.correlation_id_from_str.html) - [correlation.set_context_var](https://ghga-de.github.io/hexkit/reference/correlation.set_context_var.html) - [correlation.set_correlation_id](https://ghga-de.github.io/hexkit/reference/correlation.set_correlation_id.html) - [correlation.set_new_correlation_id](https://ghga-de.github.io/hexkit/reference/correlation.set_new_correlation_id.html) - [correlation.CorrelationIdContextError](https://ghga-de.github.io/hexkit/reference/correlation.CorrelationIdContextError.html) - [correlation.InvalidCorrelationIdError](https://ghga-de.github.io/hexkit/reference/correlation.InvalidCorrelationIdError.html) #### OpenTelemetry > Observability / tracing configuration - [opentelemetry.OpenTelemetryConfig](https://ghga-de.github.io/hexkit/reference/opentelemetry.OpenTelemetryConfig.html) - [opentelemetry.configure_opentelemetry](https://ghga-de.github.io/hexkit/reference/opentelemetry.configure_opentelemetry.html) #### Logging > Structured logging configuration and formatters - [log.LoggingConfig](https://ghga-de.github.io/hexkit/reference/log.LoggingConfig.html) - [log.configure_logging](https://ghga-de.github.io/hexkit/reference/log.configure_logging.html) - [log.JsonFormatter](https://ghga-de.github.io/hexkit/reference/log.JsonFormatter.html) - [log.RecordCompiler](https://ghga-de.github.io/hexkit/reference/log.RecordCompiler.html) #### Protocols — Events > Ports for event publishing and subscription - [protocols.eventpub.EventPublisherProtocol](https://ghga-de.github.io/hexkit/reference/protocols.eventpub.EventPublisherProtocol.html) - [protocols.eventsub.EventSubscriberProtocol](https://ghga-de.github.io/hexkit/reference/protocols.eventsub.EventSubscriberProtocol.html) - [protocols.eventsub.DLQSubscriberProtocol](https://ghga-de.github.io/hexkit/reference/protocols.eventsub.DLQSubscriberProtocol.html) #### Protocols — Data Access Objects > Ports for DAOs and outbox publishing/subscription - [protocols.dao.Dao](https://ghga-de.github.io/hexkit/reference/protocols.dao.Dao.html) - [protocols.dao.DaoFactoryProtocol](https://ghga-de.github.io/hexkit/reference/protocols.dao.DaoFactoryProtocol.html) - [protocols.dao.DaoFactoryBase](https://ghga-de.github.io/hexkit/reference/protocols.dao.DaoFactoryBase.html) - [protocols.dao.FindResult](https://ghga-de.github.io/hexkit/reference/protocols.dao.FindResult.html) - [protocols.daopub.DaoPublisher](https://ghga-de.github.io/hexkit/reference/protocols.daopub.DaoPublisher.html) - [protocols.daopub.DaoPublisherFactoryProtocol](https://ghga-de.github.io/hexkit/reference/protocols.daopub.DaoPublisherFactoryProtocol.html) - [protocols.daosub.DaoSubscriberProtocol](https://ghga-de.github.io/hexkit/reference/protocols.daosub.DaoSubscriberProtocol.html) - [protocols.daosub.DtoValidationError](https://ghga-de.github.io/hexkit/reference/protocols.daosub.DtoValidationError.html) - [protocols.dao.DaoError](https://ghga-de.github.io/hexkit/reference/protocols.dao.DaoError.html) - [protocols.dao.ResourceNotFoundError](https://ghga-de.github.io/hexkit/reference/protocols.dao.ResourceNotFoundError.html) - [protocols.dao.ResourceAlreadyExistsError](https://ghga-de.github.io/hexkit/reference/protocols.dao.ResourceAlreadyExistsError.html) - [protocols.dao.UniqueConstraintViolationError](https://ghga-de.github.io/hexkit/reference/protocols.dao.UniqueConstraintViolationError.html) - [protocols.dao.FindError](https://ghga-de.github.io/hexkit/reference/protocols.dao.FindError.html) - [protocols.dao.InvalidFindMappingError](https://ghga-de.github.io/hexkit/reference/protocols.dao.InvalidFindMappingError.html) - [protocols.dao.MultipleHitsFoundError](https://ghga-de.github.io/hexkit/reference/protocols.dao.MultipleHitsFoundError.html) - [protocols.dao.NoHitsFoundError](https://ghga-de.github.io/hexkit/reference/protocols.dao.NoHitsFoundError.html) - [protocols.dao.DbTimeoutError](https://ghga-de.github.io/hexkit/reference/protocols.dao.DbTimeoutError.html) #### Protocols — Storage > Ports for key-value and object storage - [protocols.kvstore.KeyValueStoreProtocol](https://ghga-de.github.io/hexkit/reference/protocols.kvstore.KeyValueStoreProtocol.html) - [protocols.objstorage.ObjectStorageProtocol](https://ghga-de.github.io/hexkit/reference/protocols.objstorage.ObjectStorageProtocol.html) - [protocols.objstorage.PresignedPostURL](https://ghga-de.github.io/hexkit/reference/protocols.objstorage.PresignedPostURL.html) #### Provider — Apache Kafka > Event pub/sub backed by Apache Kafka - [providers.akafka.KafkaConfig](https://ghga-de.github.io/hexkit/reference/providers.akafka.KafkaConfig.html) - [providers.akafka.KafkaEventPublisher](https://ghga-de.github.io/hexkit/reference/providers.akafka.KafkaEventPublisher.html) - [providers.akafka.KafkaEventSubscriber](https://ghga-de.github.io/hexkit/reference/providers.akafka.KafkaEventSubscriber.html) - [providers.akafka.KafkaOutboxSubscriber](https://ghga-de.github.io/hexkit/reference/providers.akafka.KafkaOutboxSubscriber.html) - [providers.akafka.ComboTranslator](https://ghga-de.github.io/hexkit/reference/providers.akafka.ComboTranslator.html) #### Provider — MongoDB > DAO and key-value stores backed by MongoDB - [providers.mongodb.MongoDbConfig](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbConfig.html) - [providers.mongodb.MongoDbDaoFactory](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbDaoFactory.html) - [providers.mongodb.MongoDbDao](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbDao.html) - [providers.mongodb.MongoDbBytesKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbBytesKeyValueStore.html) - [providers.mongodb.MongoDbStrKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbStrKeyValueStore.html) - [providers.mongodb.MongoDbJsonKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbJsonKeyValueStore.html) - [providers.mongodb.MongoDbDtoKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.mongodb.MongoDbDtoKeyValueStore.html) #### MongoDB Migration Tooling > Versioned database migration framework for MongoDB - [providers.mongodb.migrations.MigrationConfig](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.MigrationConfig.html) - [providers.mongodb.migrations.MigrationManager](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.MigrationManager.html) - [providers.mongodb.migrations.MigrationDefinition](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.MigrationDefinition.html) - [providers.mongodb.migrations.Reversible](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.Reversible.html) - [providers.mongodb.migrations.check_db_version](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.check_db_version.html) - [providers.mongodb.migrations.validate_doc](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.validate_doc.html) - [providers.mongodb.migrations.MigrationStepError](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.MigrationStepError.html) - [providers.mongodb.migrations.DbVersionMismatchError](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.DbVersionMismatchError.html) - [providers.mongodb.migrations.helpers.convert_uuids_and_datetimes_v6](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.helpers.convert_uuids_and_datetimes_v6.html) - [providers.mongodb.migrations.helpers.convert_outbox_correlation_id_v6](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.helpers.convert_outbox_correlation_id_v6.html) - [providers.mongodb.migrations.helpers.convert_persistent_event_v6](https://ghga-de.github.io/hexkit/reference/providers.mongodb.migrations.helpers.convert_persistent_event_v6.html) #### Provider — MongoDB + Kafka > Persistent / outbox event publishing - [providers.mongokafka.MongoKafkaConfig](https://ghga-de.github.io/hexkit/reference/providers.mongokafka.MongoKafkaConfig.html) - [providers.mongokafka.MongoKafkaDaoPublisherFactory](https://ghga-de.github.io/hexkit/reference/providers.mongokafka.MongoKafkaDaoPublisherFactory.html) - [providers.mongokafka.PersistentKafkaPublisher](https://ghga-de.github.io/hexkit/reference/providers.mongokafka.PersistentKafkaPublisher.html) - [providers.mongokafka.PersistentKafkaEvent](https://ghga-de.github.io/hexkit/reference/providers.mongokafka.PersistentKafkaEvent.html) #### Provider — S3 > Object storage and key-value stores backed by S3 - [providers.s3.S3Config](https://ghga-de.github.io/hexkit/reference/providers.s3.S3Config.html) - [providers.s3.S3ObjectStorage](https://ghga-de.github.io/hexkit/reference/providers.s3.S3ObjectStorage.html) - [providers.s3.S3BytesKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.s3.S3BytesKeyValueStore.html) - [providers.s3.S3StrKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.s3.S3StrKeyValueStore.html) - [providers.s3.S3JsonKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.s3.S3JsonKeyValueStore.html) - [providers.s3.S3DtoKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.s3.S3DtoKeyValueStore.html) #### Provider — Redis > Key-value stores backed by Redis - [providers.redis.RedisConfig](https://ghga-de.github.io/hexkit/reference/providers.redis.RedisConfig.html) - [providers.redis.RedisBytesKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.redis.RedisBytesKeyValueStore.html) - [providers.redis.RedisStrKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.redis.RedisStrKeyValueStore.html) - [providers.redis.RedisJsonKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.redis.RedisJsonKeyValueStore.html) - [providers.redis.RedisDtoKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.redis.RedisDtoKeyValueStore.html) #### Provider — HashiCorp Vault > Key-value stores backed by Vault - [providers.vault.VaultConfig](https://ghga-de.github.io/hexkit/reference/providers.vault.VaultConfig.html) - [providers.vault.VaultBytesKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.vault.VaultBytesKeyValueStore.html) - [providers.vault.VaultStrKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.vault.VaultStrKeyValueStore.html) - [providers.vault.VaultJsonKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.vault.VaultJsonKeyValueStore.html) - [providers.vault.VaultDtoKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.vault.VaultDtoKeyValueStore.html) #### Provider — In-Memory (Testing) > In-memory providers and mocks for tests - [providers.testing.InMemEventPublisher](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemEventPublisher.html) - [providers.testing.InMemEventStore](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemEventStore.html) - [providers.testing.InMemBytesKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemBytesKeyValueStore.html) - [providers.testing.InMemStrKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemStrKeyValueStore.html) - [providers.testing.InMemJsonKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemJsonKeyValueStore.html) - [providers.testing.InMemDtoKeyValueStore](https://ghga-de.github.io/hexkit/reference/providers.testing.InMemDtoKeyValueStore.html) - [providers.testing.new_mock_dao_class](https://ghga-de.github.io/hexkit/reference/providers.testing.new_mock_dao_class.html) - [providers.testing.MockDAOEmptyError](https://ghga-de.github.io/hexkit/reference/providers.testing.MockDAOEmptyError.html) - [providers.testing.TopicExhaustedError](https://ghga-de.github.io/hexkit/reference/providers.testing.TopicExhaustedError.html)