scalar Long scalar DateTime """ A string representing a duration, the format is a string that starts with a number and ends with a time unit. Examples: "1s", "100ms", "1m30s", "1h" """ scalar Duration enum EventHubType { KAFKA } interface EventHub { name: String! uuid: ID! type: EventHubType! } type KafkaEventHub implements EventHub @key(fields: "name") { name: String! uuid: ID! type: EventHubType! bootstrapServers: String! properties: [KafkaProperty!] } type KafkaProperty { key: String! value: String! } union EventHubs = KafkaEventHub type EventHubTopic { name: String! } enum StorageType { AZURE GCS S3 VOLUME } interface Storage { name: String! uuid: ID! type: StorageType! } type AzureStorage implements Storage @key(fields: "name") { name: String! uuid: ID! type: StorageType! container: String! location: String! directory: String storageURI: String! } type GcsStorage implements Storage @key(fields: "name") { name: String! uuid: ID! type: StorageType! bucketName: String! bucketPrefix: String bucketURI: String! } type S3Storage implements Storage @key(fields: "name") { name: String! uuid: ID! type: StorageType! bucketName: String! bucketRegion: String! bucketPrefix: String bucketURI: String! } type VolumeStorage implements Storage @key(fields: "name") { name: String! uuid: ID! type: StorageType! capacity: String! } union Storages = AzureStorage | GcsStorage | S3Storage | VolumeStorage interface Credentials { name: String! uuid: ID! } enum Mechanism { PLAIN SCRAMSHA256 SCRAMSHA512 } type SaslCredentials implements Credentials @key(fields: "name") { name: String! uuid: ID! mechanism: Mechanism! useSsl: Boolean! } type MTlsCredentials implements Credentials @key(fields: "name") { name: String! uuid: ID! } type AzureCredentials implements Credentials @key(fields: "name") { name: String! uuid: ID! } type AwsCredentials implements Credentials @key(fields: "name") { name: String! uuid: ID! } type GcpCredentials implements Credentials @key(fields: "name") { name: String! uuid: ID! } union CredentialsUnion = AzureCredentials| AwsCredentials | GcpCredentials | SaslCredentials | MTlsCredentials type ServiceAccount @key(fields: "name") { name: String! } type EventHubRef { name: String! eventHub: EventHub } type StorageRef { name: String! storage: Storages } type CredentialsRef { name: String! credentials: Credentials } type Backup @key(fields: "name") { name: String! uuid: ID! description: String sourceRef: EventHubRef! sourceCredentialsRef: CredentialsRef sourceAdditionalProperties: [AdditionalProperty!] sinkRef: StorageRef! sinkCredentialsRef: CredentialsRef sinkAdditionalProperties: [AdditionalProperty!] serviceAccount: String streams: [BackupStream!]! partitionRolloverTriggers: PartitionRolloverTriggers dataRetentionPolicy: DataRetentionPolicy compression: BackupCompression! resources: ResourceRequirements paused: Boolean! status: BackupStatus! createdAt: DateTime! lastUpdatedAt: DateTime! } enum BackupStatus { """ The backup has been created, but the configuration is not yet complete """ DRAFT, """ The backup is ready to be started """ READY, """ The backup is currently running """ RUNNING, """ The backup has been paused """ PAUSED """ The backup has errors """ ERROR } type BackupStream { topic: String! status: BackupStreamStatus! } enum BackupStreamStatus { ACTIVE, PAUSED } type PartitionRolloverTriggers { size: String timeoutSeconds: Long } type DataRetentionPolicy { delete: DeleteDataRetentionPolicy } type DeleteDataRetentionPolicy { after: String } type BackupCompression { algorithm: BackupCompressionAlgorithm! quality: Int } enum BackupCompressionAlgorithm { NONE ZSTD GZIP BZIP2 XZ DEFLATE BROTLI LZMA ZLIB } type AdditionalProperty { key: String value: String } type Restore @key(fields: "id") { id: ID! uuid: ID! description: String status: RestoreStatus! backupRef: BackupRef config: RestoreConfiguration! createdAt: DateTime! lastUpdatedAt: DateTime! startedAt: DateTime completedAt: DateTime } type BackupRef { name: String! backup: Backup } enum RestoreStatus { """ The restore has been created, but the configuration is not yet complete """ DRAFT, """ The restore is ready to be started """ READY, """ The restore is enabled, but not yet started """ INITIALIZING, """ The restore is currently running """ RUNNING, """ The restore has run to completion successfully """ DONE """ The configuration of the restore contains an error """ INVALID_CONFIGURATION """ The restore has failed """ FAILED } type RestoreConfiguration { sourceRef: StorageRef sourceCredentialsRef: CredentialsRef sourceAdditionalProperties: [AdditionalProperty!] sinkRef: EventHubRef sinkCredentialsRef: CredentialsRef sinkAdditionalProperties: [AdditionalProperty!] serviceAccount: String topics: [RestoreTopicConfiguration!]! restoreFrom: DateTime restoreUntil: DateTime legacyOffsetHeader: String parallelism: Int maxProducers: Int topicMappingStrategy: TopicMappingStrategy resources: ResourceRequirements } """ The topic mapping strategy of a restore None - No topic mapping strategy is used AllAtOnce - All topics are mapped at once using a suffix or prefix Advanced - A YAML file is used to map topics """ union TopicMappingStrategy = AllAtOnceTopicMappingStrategy | AdvancedTopicMappingStrategy type AllAtOnceTopicMappingStrategy { prefix: String suffix: String } type AdvancedTopicMappingStrategy { yaml: String } type RestoreTopicConfiguration { sourceTopic: String! targetTopic: String! partitions: [RestorePartitionConfiguration!]! } type RestorePartitionConfiguration { partitionNumber: Int! fromOffset: Long untilOffset: Long } input ConfigureKafkaEventHubInput { """ UUID of the event hub. If not provided, a new event hub will be created. If provided, the existing event hub will be updated. If the UUID does not exist, an error will be returned. """ uuid: String """ Name of the event hub """ name: String! bootstrapServers: String! properties: [KafkaPropertyInput!] } input KafkaPropertyInput { key: String! value: String! } union ConfigureKafkaEventHubPayload = KafkaEventHubConfigured | KafkaEventHubConfigurationFailed type KafkaEventHubConfigured { eventHub: KafkaEventHub! } type KafkaEventHubConfigurationFailed { problems: [KafkaEventHubConfigurationProblem!]! } type KafkaEventHubConfigurationProblem { message: String! type: KafkaEventHubConfigurationProblemType! } enum KafkaEventHubConfigurationProblemType { EVENT_HUB_WITH_SAME_NAME_ALREADY_EXISTS, INVALID_EVENT_HUB_UUID } input ConfigureAzureStorageInput { name: String! uuid: ID container: String! location: String! directory: String } union ConfigureAzureStoragePayload = AzureStorageConfigured | AzureStorageConfigurationFailed type AzureStorageConfigured { storage: AzureStorage! } type AzureStorageConfigurationFailed { problems: [AzureStorageConfigurationProblem!]! } type AzureStorageConfigurationProblem { message: String! type: AzureStorageConfigurationProblemType! } enum AzureStorageConfigurationProblemType { """ The name is already in use by another storage """ STORAGE_WITH_SAME_NAME_ALREADY_EXISTS, """ The uuid doesn't match with the existing storage """ INVALID_STORAGE_UUID } input ConfigureGcsStorageInput { name: String! uuid: ID bucketName: String! bucketPrefix: String } union ConfigureGcsStoragePayload = GcsStorageConfigured | GcsStorageConfigurationFailed type GcsStorageConfigured { storage: GcsStorage! } type GcsStorageConfigurationFailed { problems: [GcsStorageConfigurationProblem!]! } type GcsStorageConfigurationProblem { message: String! type: GcsStorageConfigurationProblemType! } enum GcsStorageConfigurationProblemType { """ The name is already in use by another storage """ STORAGE_WITH_SAME_NAME_ALREADY_EXISTS """ The uuid doesn't match with the existing storage """ INVALID_STORAGE_UUID } input ConfigureS3StorageInput { name: String! uuid: ID bucketName: String! bucketRegion: String! bucketPrefix: String } union ConfigureS3StoragePayload = S3StorageConfigured | S3StorageConfigurationFailed type S3StorageConfigured { storage: S3Storage! } type S3StorageConfigurationFailed { problems: [S3StorageConfigurationProblem!]! } type S3StorageConfigurationProblem { message: String! type: S3StorageConfigurationProblemType! } enum S3StorageConfigurationProblemType { """ The name is already in use by another storage """ STORAGE_WITH_SAME_NAME_ALREADY_EXISTS """ The uuid doesn't match with the existing storage """ INVALID_STORAGE_UUID } input ConfigureVolumeStorageInput { name: String! uuid: ID capacity: String! } union ConfigureVolumeStoragePayload = VolumeStorageConfigured | VolumeStorageConfigurationFailed type VolumeStorageConfigured { storage: VolumeStorage! } type VolumeStorageConfigurationFailed { problems: [VolumeStorageConfigurationProblem!]! } type VolumeStorageConfigurationProblem { message: String! type: VolumeStorageConfigurationProblemType! } enum VolumeStorageConfigurationProblemType { """ The name is already in use by another storage """ STORAGE_WITH_SAME_NAME_ALREADY_EXISTS """ The uuid doesn't match with the existing storage """ INVALID_STORAGE_UUID } input ConfigureSaslCredentialsInput { name: String! uuid: ID mechanism: Mechanism! username: String! password: String! useSsl: Boolean! sslConf: ConfigureSaslCredentialsSslConfInput } input ConfigureSaslCredentialsSslConfInput { clientKey: String clientKeyPassword: String clientCertificate: String caCertificate: String } union ConfigureSaslCredentialsPayload = SaslCredentialsConfigured | SaslCredentialsConfigurationFailed type SaslCredentialsConfigured { credentials: SaslCredentials! } type SaslCredentialsConfigurationFailed { problems: [SaslCredentialsConfigurationProblem!]! } type SaslCredentialsConfigurationProblem { message: String! type: SaslCredentialsConfigurationProblemType! } enum SaslCredentialsConfigurationProblemType { """ The name is already in use by other credentials """ CREDENTIALS_WITH_SAME_NAME_ALREADY_EXISTS, TYPE_CANNOT_BE_CHANGED } input ConfigureMTlsCredentialsInput { name: String! uuid: ID clientKey: String! clientKeyPassword: String clientCertificate: String! caCertificate: String! } union ConfigureMTlsCredentialsPayload = MTlsCredentialsConfigured | MTlsCredentialsConfigurationFailed type MTlsCredentialsConfigured { credentials: MTlsCredentials! } type MTlsCredentialsConfigurationFailed { problems: [MTlsCredentialsConfigurationProblem!]! } type MTlsCredentialsConfigurationProblem { message: String! type: MTlsCredentialsConfigurationProblemType! } enum MTlsCredentialsConfigurationProblemType { """ The name is already in use by other credentials """ CREDENTIALS_WITH_SAME_NAME_ALREADY_EXISTS, TYPE_CANNOT_BE_CHANGED } input ConfigureAwsCredentialsInput { name: String! uuid: ID accessKeyId: String! secretAccessKey: String! } union ConfigureAwsCredentialsPayload = AwsCredentialsConfigured | AwsCredentialsConfigurationFailed type AwsCredentialsConfigured { credentials: AwsCredentials! } type AwsCredentialsConfigurationFailed { problems: [AwsCredentialsConfigurationProblem!]! } type AwsCredentialsConfigurationProblem { message: String! type: AwsCredentialsConfigurationProblemType! } enum AwsCredentialsConfigurationProblemType { """ The name is already in use by other credentials """ CREDENTIALS_WITH_SAME_NAME_ALREADY_EXISTS, TYPE_CANNOT_BE_CHANGED } input ConfigureAzureCredentialsInput { name: String! uuid: ID sasToken: String! } union ConfigureAzureCredentialsPayload = AzureCredentialsConfigured | AzureCredentialsConfigurationFailed type AzureCredentialsConfigured { credentials: AzureCredentials! } type AzureCredentialsConfigurationFailed { problems: [AzureCredentialsConfigurationProblem!]! } type AzureCredentialsConfigurationProblem { message: String! type: AzureCredentialsConfigurationProblemType! } enum AzureCredentialsConfigurationProblemType { """ The name is already in use by other credentials """ CREDENTIALS_WITH_SAME_NAME_ALREADY_EXISTS, TYPE_CANNOT_BE_CHANGED } input ConfigureGcpCredentialsInput { name: String! uuid: ID serviceAccountJson: String! } union ConfigureGcpCredentialsPayload = GcpCredentialsConfigured | GcpCredentialsConfigurationFailed type GcpCredentialsConfigured { credentials: GcpCredentials! } type GcpCredentialsConfigurationFailed { problems: [GcpCredentialsConfigurationProblem!]! } type GcpCredentialsConfigurationProblem { message: String! type: GcpCredentialsConfigurationProblemType! } enum GcpCredentialsConfigurationProblemType { """ The name is already in use by other credentials """ CREDENTIALS_WITH_SAME_NAME_ALREADY_EXISTS, TYPE_CANNOT_BE_CHANGED } input ConfigureBackupInput { name: String! description: String sourceEventHubName: String! sourceCredentialsName: String sourceAdditionalProperties: [AdditionalPropertyInput!] sinkStorageName: String! sinkCredentialsName: String sinkAdditionalProperties: [AdditionalPropertyInput!] serviceAccountName: String partitionRolloverTriggers: PartitionRolloverTriggersInput dataRetentionPolicy: DataRetentionPolicyInput compression: BackupCompressionInput resources: ResourceRequirementsInput } input AdditionalPropertyInput { key: String value: String } input PartitionRolloverTriggersInput { size: String! timeoutSeconds: Long } input DataRetentionPolicyInput { delete: DeleteDataRetentionPolicyInput } input DeleteDataRetentionPolicyInput { after: String } input BackupCompressionInput { algorithm: BackupCompressionAlgorithm! quality: Int } union ConfigureBackupPayload = BackupConfigured | BackupConfigurationFailed type BackupConfigured { backup: Backup! } type BackupConfigurationFailed { problems: [BackupConfigurationProblem!]! } type BackupConfigurationProblem { message: String! type: BackupConfigurationProblemType! } enum BackupConfigurationProblemType { SOURCE_EVENT_HUB_NOT_FOUND SINK_STORAGE_NOT_FOUND SOURCE_CREDENTIALS_NOT_FOUND SINK_CREDENTIALS_NOT_FOUND SERVICE_ACCOUNT_NOT_FOUND BACKUP_WITH_SAME_NAME_ALREADY_EXISTS } input TestKafkaConnectionInput { bootstrapServers: String! properties: [KafkaPropertyInput!] authentication: TestKafkaConnectionAuthenticationInput } input TestKafkaConnectionAuthenticationInput { """ The name of existing credentials to test with """ credentialsName: String """ SASL credentials properties to test with """ sasl: TestKafkaConnectionSaslAuthenticationInput """ mTLS credentials properties to test with """ mTls: TestKafkaConnectionMTlsAuthenticationInput } input TestKafkaConnectionSaslAuthenticationInput { mechanism: Mechanism! username: String! password: String! useSsl: Boolean! sslConf: TestKafkaConnectionSaslAuthenticationSslInput } input TestKafkaConnectionSaslAuthenticationSslInput { clientKey: String clientKeyPassword: String clientCertificate: String caCertificate: String } input TestKafkaConnectionMTlsAuthenticationInput { clientKey: String! clientKeyPassword: String clientCertificate: String! caCertificate: String! } union TestConnectionPayload = ConnectionTestSucceeded | ConnectionTestFailed type ConnectionTestSucceeded { message: String! } type ConnectionTestFailed { problems: [ConnectionTestFailedProblem!]! } type ConnectionTestFailedProblem { message: String! type: ConnectionTestFailedProblemType! } enum ConnectionTestFailedProblemType { CREDENTIALS_NOT_FOUND, INVALID_CREDENTIALS_TYPE, AUTHENTICATION_FAILED, CONNECTION_TIME_OUT, NO_RESOLVABLE_URLS, INVALID_URL, INVALID_PORT, SSL_HANDSHAKE_FAILED, PARSE_CERTIFICATE_FAILED, PARSE_PRIVATE_KEY_FAILED, SECRET_NOT_FOUND, SECRET_VALUE_NOT_FOUND, UNKNOWN_ERROR } input PauseBackupInput { name: String! } union PauseBackupPayload = BackupPaused | BackupWasAlreadyPaused | BackupNotFound input ResumeBackupInput { name: String! } union ResumeBackupPayload = BackupResumed | BackupWasAlreadyActive | BackupNotFound type BackupPaused { backup: Backup! } type BackupResumed { backup: Backup! } type BackupWasAlreadyPaused { backup: Backup! } type BackupWasAlreadyActive { backup: Backup! } type BackupNotFound { name: String! } input DeleteBackupInput { name: String! } union DeleteBackupPayload = BackupDeleted | BackupNotFound type BackupDeleted { backup: Backup } input ConfigureRestoreInput { id: String, description: String, sourceBackupName: String sourceStorageName: String sourceCredentialsName: String sourceAdditionalProperties: [AdditionalPropertyInput!] sinkEventHubName: String! sinkCredentialsName: String sinkAdditionalProperties: [AdditionalPropertyInput!] serviceAccountName: String topics: [RestoreTopicConfigurationInput!] restoreFrom: DateTime restoreUntil: DateTime topicMappingStrategy: TopicMappingStrategyInput legacyOffsetHeader: String parallelism: Int maxProducers: Int resources: ResourceRequirementsInput } input RestoreTopicConfigurationInput { sourceTopic: String! targetTopic: String! partitions: [RestorePartitionConfigurationInput!] = [] } union ConfigureRestorePayload = RestoreConfigured | RestoreConfigurationFailed """ Input for the topic mapping strategy of a restore Since GraphQL does not support union input types (or @oneof), we need to use a single input type for all topic mapping strategies. If no topic mapping strategy is used, the topic names are kept the same. """ input TopicMappingStrategyInput { """ All topics are mapped at once using a suffix or prefix """ allAtOnce: AllAtOnceTopicMappingStrategyInput """ A YAML file is used to map topics """ advanced: AdvancedTopicMappingStrategyInput } input AllAtOnceTopicMappingStrategyInput { prefix: String suffix: String } input AdvancedTopicMappingStrategyInput { yaml: String } type RestoreConfigured { restore: Restore! } type RestoreConfigurationFailed { problems: [RestoreConfigurationProblem!]! } type RestoreConfigurationProblem { message: String! type: RestoreConfigurationProblemType! } enum RestoreConfigurationProblemType { SOURCE_STORAGE_NOT_FOUND SINK_EVENT_HUB_NOT_FOUND SOURCE_CREDENTIALS_NOT_FOUND SINK_CREDENTIALS_NOT_FOUND SERVICE_ACCOUNT_NOT_FOUND RESTORE_WITH_SAME_ID_ALREADY_EXISTS BACKUP_NOT_FOUND } input RestorePartitionConfigurationInput { partitionNumber: Int! fromOffset: Long untilOffset: Long } input StartRestoreInput { id: String! } union StartRestorePayload = RestoreStarted | StartRestoreFailed type RestoreStarted { restore: Restore! } type StartRestoreFailed { problems: [StartRestoreProblem!]! } type StartRestoreProblem { message: String! type: StartRestoreProblemType! } enum StartRestoreProblemType { RESTORE_NOT_FOUND, RESTORE_ALREADY_STARTED, RESTORE_CONFIG_INCOMPLETE, } input DeleteRestoreInput { id: String! } type DeleteRestoreProblem { message: String! type: DeleteRestoreProblemType! } enum DeleteRestoreProblemType { RESTORE_NOT_FOUND, } type DeleteRestoreFailed { problems: [DeleteRestoreProblem!]! } union DeleteRestorePayload = RestoreDeleted | DeleteRestoreFailed type RestoreDeleted { restore: Restore } input ConfigureRestoreTopicsInput { """ The ID of the restore to configure the topics for. """ restoreId: String! """ Configure all topics. Any topic not in this list will be removed from the restore. This only works if there is at least one topic in this list. For clearing all topics of a restore, use the `topicsToRemove` field. """ topics: [String] """ Add these topics to the restore. Any topic already in the restore will be ignored. """ topicsToAdd: [String!] """ Remove these topics from the restore. Any topic not in the restore will be ignored. """ topicsToRemove: [String!] } union ConfigureRestoreTopicsPayload = RestoreTopicsConfigured | ConfigureRestoreTopicsFailed type RestoreTopicsConfigured { restore: Restore! added: [String!]! removed: [String!]! } type ConfigureRestoreTopicsFailed { problems: [ConfigureRestoreTopicsProblem!]! } type ConfigureRestoreTopicsProblem { message: String! type: ConfigureRestoreTopicsProblemType! } enum ConfigureRestoreTopicsProblemType { RESTORE_NOT_FOUND, TOPICS_NOT_FOUND, } input ConfigureRestoreDescriptionInput { restoreId: String! description: String } union ConfigureRestoreDescriptionPayload = RestoreDescriptionConfigured | ConfigureRestoreDescriptionFailed type RestoreDescriptionConfigured { restore: Restore! } type ConfigureRestoreDescriptionFailed { problems: [ConfigureRestoreDescriptionProblem!]! } type ConfigureRestoreDescriptionProblem { message: String! type: ConfigureRestoreDescriptionProblemType! } enum ConfigureRestoreDescriptionProblemType { RESTORE_NOT_FOUND, } type BackupConnection { edges: [BackupEdge!]! pageInfo: PageInfo! } type BackupEdge { cursor: String! node: Backup! } type RestoreConnection { edges: [RestoreEdge!]! pageInfo: PageInfo! } type RestoreEdge { cursor: String! node: Restore! } type EventHubConnection { edges: [EventHubEdge!]! pageInfo: PageInfo! } type EventHubEdge { cursor: String! node: EventHub! } type CredentialsConnection { edges: [CredentialsEdge!]! pageInfo: PageInfo! } type CredentialsEdge { cursor: String! node: Credentials! } type ServiceAccountConnection { edges: [ServiceAccountEdge!]! pageInfo: PageInfo! } type ServiceAccountEdge { cursor: String! node: ServiceAccount! } type EventHubTopicConnection { edges: [EventHubTopicEdge!]! pageInfo: PageInfo! } type EventHubTopicEdge { cursor: String! node: EventHubTopic! } type StorageConnection { edges: [StorageEdge!]! pageInfo: PageInfo! } type StorageEdge { cursor: String! node: Storage! } input ConfigureBackupTopicsInput { """ The name of the backup to configure the topics for. """ backupName: String! """ Configure all topics. Any topic not in this list will be removed from the backup. This only works if there is at least one topic in this list. For clearing all topics of a backup, use the `topicsToRemove` field. """ topics: [String] """ Add these topics to the backup. Any topic already in the backup will be ignored. """ topicsToAdd: [String!] """ Remove these topics from the backup. Any topic not in the backup will be ignored. """ topicsToRemove: [String!] """ Set to true to immediately enable backup for the topics that will be added. """ enable: Boolean! } union ConfigureBackupTopicsPayload = BackupTopicsConfigured | ConfigureBackupTopicsFailed type BackupTopicsConfigured { backup: Backup! added: [String!]! removed: [String!]! } type ConfigureBackupTopicsFailed { problems: [ConfigureBackupTopicsProblem!]! } type ConfigureBackupTopicsProblem { message: String! type: ConfigureBackupTopicsProblemType! topics: [String!] } enum ConfigureBackupTopicsProblemType { BACKUP_NOT_FOUND, SOURCE_EVENT_HUB_NOT_FOUND, SOURCE_EVENT_HUB_UNREACHABLE, SOURCE_CREDENTIALS_NOT_FOUND, INVALID_CREDENTIALS_TYPE, INVALID_CREDENTIALS_SECRET, TOPICS_NOT_FOUND, } input ConfigureBackupDescriptionInput { backupName: String! description: String } union ConfigureBackupDescriptionPayload = BackupDescriptionConfigured | ConfigureBackupDescriptionFailed type BackupDescriptionConfigured { backup: Backup! } type ConfigureBackupDescriptionFailed { problems: [ConfigureBackupDescriptionProblem!]! } type ConfigureBackupDescriptionProblem { message: String! type: ConfigureBackupDescriptionProblemType! } enum ConfigureBackupDescriptionProblemType { BACKUP_NOT_FOUND, } input EnableBackupStreamsInput { backupName: String! topics: [String!]! } type BackupStreamsEnabled { backup: Backup! enabled: [BackupStream!]! } type EnableBackupStreamsFailed { problems: [EnableBackupStreamsProblem!]! } type EnableBackupStreamsProblem { message: String! type: EnableBackupStreamsProblemType! } enum EnableBackupStreamsProblemType { TOPICS_NOT_FOUND, BACKUP_NOT_FOUND, } union EnableBackupStreamsPayload = BackupStreamsEnabled | EnableBackupStreamsFailed input PauseBackupStreamsInput { backupName: String! topics: [String!]! } type BackupStreamsPaused { backup: Backup! paused: [BackupStream!]! } type PauseBackupStreamsFailed { problems: [PauseBackupStreamsProblem!]! } type PauseBackupStreamsProblem { message: String! type: PauseBackupStreamsProblemType! } enum PauseBackupStreamsProblemType { STREAM_NOT_FOUND, BACKUP_NOT_FOUND } union PauseBackupStreamsPayload = BackupStreamsPaused | PauseBackupStreamsFailed input IgnoreTopicsInput { backupName: String! topics: [String!]! } type TopicsIgnored { backup: Backup! ignored: [String!]! } type IgnoreTopicsFailed { problems: [IgnoreTopicsProblem!]! } type IgnoreTopicsProblem { message: String! type: IgnoreTopicsProblemType! topics: [String!] } enum IgnoreTopicsProblemType { BACKUP_NOT_FOUND, TOPICS_ARE_STREAMING } union IgnoreTopicsPayload = TopicsIgnored | IgnoreTopicsFailed type Mutation { configureKafkaEventHub(input: ConfigureKafkaEventHubInput!): ConfigureKafkaEventHubPayload testKafkaConnection(input: TestKafkaConnectionInput!): TestConnectionPayload configureAzureStorage(input: ConfigureAzureStorageInput!): ConfigureAzureStoragePayload configureGcsStorage(input: ConfigureGcsStorageInput!): ConfigureGcsStoragePayload configureS3Storage(input: ConfigureS3StorageInput!): ConfigureS3StoragePayload configureVolumeStorage(input: ConfigureVolumeStorageInput!): ConfigureVolumeStoragePayload configureAwsCredentials(input: ConfigureAwsCredentialsInput!): ConfigureAwsCredentialsPayload configureAzureCredentials(input: ConfigureAzureCredentialsInput!): ConfigureAzureCredentialsPayload configureGcpCredentials(input: ConfigureGcpCredentialsInput!): ConfigureGcpCredentialsPayload configureSaslCredentials(input: ConfigureSaslCredentialsInput!): ConfigureSaslCredentialsPayload configureMTlsCredentials(input: ConfigureMTlsCredentialsInput!): ConfigureMTlsCredentialsPayload ignoreTopics(input: IgnoreTopicsInput!): IgnoreTopicsPayload enableBackupStreams(input: EnableBackupStreamsInput!): EnableBackupStreamsPayload pauseBackupStreams(input: PauseBackupStreamsInput!): PauseBackupStreamsPayload configureBackup(input: ConfigureBackupInput!): ConfigureBackupPayload configureBackupTopics(input: ConfigureBackupTopicsInput!): ConfigureBackupTopicsPayload configureBackupDescription(input: ConfigureBackupDescriptionInput!): ConfigureBackupDescriptionPayload pauseBackup(input: PauseBackupInput!): PauseBackupPayload resumeBackup(input: ResumeBackupInput!): ResumeBackupPayload deleteBackup(input: DeleteBackupInput!): DeleteBackupPayload configureRestore(input: ConfigureRestoreInput!): ConfigureRestorePayload configureRestoreTopics(input: ConfigureRestoreTopicsInput!): ConfigureRestoreTopicsPayload configureRestoreDescription(input: ConfigureRestoreDescriptionInput!): ConfigureRestoreDescriptionPayload startRestore(input: StartRestoreInput!): StartRestorePayload deleteRestore(input: DeleteRestoreInput!): DeleteRestorePayload } type Query { getBackupByName(name: String!) : Backup getBackupMetrics(name: String!) : BackupMetricsPayload getBackups(first: Int = 10, after: String): BackupConnection getRestoreById(id: String!) : Restore getRestores(first: Int = 10, after: String): RestoreConnection getRestoreMetrics(id: String!) : RestoreMetricsPayload getEventHubByName(name: String!) : EventHub getEventHubs(first: Int = 10, after: String): EventHubConnection getEventHubTopics(eventHubName: String!, credentialsName: String, skipCache: Boolean = false, first: Int = 100, after: String): EventHubTopicConnection getStorages(first: Int = 10, after: String): StorageConnection getCredentials(first: Int = 100, after: String): CredentialsConnection getEventHubCredentials(eventHubType: String, first: Int = 100, after: String): CredentialsConnection getStorageCredentials(storageType: String, first: Int = 100, after: String): CredentialsConnection getServiceAccounts(first: Int = 100, after: String): ServiceAccountConnection } type PageInfo { endCursor: String hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String } type ResourceRequirements { requests: ResourceRequirementSettings limits: ResourceRequirementSettings } type ResourceRequirementSettings { cpu: String memory: String } input ResourceRequirementsInput { requests: ResourceRequirementSettingsInput limits: ResourceRequirementSettingsInput } input ResourceRequirementSettingsInput { cpu: String memory: String } union BackupMetricsPayload = BackupMetrics | BackupMetricsHeartbeat | BackupMetricsFailed type BackupMetrics { ingestion: Ingestion totalCompressedSize: Long totalUncompressedSize: Long topicMessageCounts: [TopicMessageCount!] topicCompressedSizes: [TopicMessageSize!] topicUncompressedSizes: [TopicMessageSize!] } type TopicMessageCount { topicName: String! count: Long! } type TopicMessageSize { topicName: String! size: Long! } type Ingestion { bytesPerSecond: Long } type BackupMetricsHeartbeat { message: String } type BackupMetricsFailed { problems: [BackupMetricsProblem!]! } type BackupMetricsProblem { message: String! type: BackupMetricsProblemType! } enum BackupMetricsProblemType { BACKUP_NOT_FOUND, } input BackupMetricsSubscriptionInput { """ The name of the backup to get the metrics for. """ backupName: String! """ The interval to receive the metrics. Note that metrics themselves are not guaranteed to be updated at this interval. This is just the interval at which the client will receive metrics, irrelevant of the actual query interval. Minimum value is defined by the server property `kannika.graphql.subscriptions.minInterval`, which is 1s by default. Maximum value is defined by the server property `kannika.graphql.subscriptions.maxInterval`, which is 60s by default. Default value is defined by the server property `kannika.graphql.subscriptions.defaultInterval`, which is 10s by default. """ interval: Duration } union RestoreMetricsPayload = RestoreMetrics | RestoreMetricsHeartbeat | RestoreMetricsFailed type RestoreMetrics { topicRestoredSizes: [TopicMessageSize!] topicToRestoreSizes: [TopicMessageSize!] } type RestoreMetricsHeartbeat { message: String } type RestoreMetricsFailed { problems: [RestoreMetricsProblem!]! } type RestoreMetricsProblem { message: String! type: RestoreMetricsProblemType! } enum RestoreMetricsProblemType { RESTORE_NOT_FOUND, } input RestoreMetricsSubscriptionInput { """ The id of the restore to get the metrics for. """ restoreId: String! """ The interval to receive the metrics. Note that metrics themselves are not guaranteed to be updated at this interval. This is just the interval at which the client will receive metrics, irrelevant of the actual query interval. Minimum value is defined by the server property `kannika.graphql.subscriptions.minInterval`, which is 1s by default. Maximum value is defined by the server property `kannika.graphql.subscriptions.maxInterval`, which is 60s by default. Default value is defined by the server property `kannika.graphql.subscriptions.defaultInterval`, which is 10s by default. """ interval: Duration } type Subscription { backupMetrics(input: BackupMetricsSubscriptionInput!): BackupMetricsPayload restoreMetrics(input: RestoreMetricsSubscriptionInput!): RestoreMetricsPayload } directive @todo(remark: String = "TODO") on FIELD_DEFINITION