interface Configuration {
    active: Boolean!
    error: String
}

type ConfigurationError {
    field: String
    message: String!
}

# Integration specific

# Datadog
enum DatadogSite{
    US1
    US3
    US5
    EU1
    US1_FED
}

type DataDogCredentials {
    site: DatadogSite!
    apiKeyLast4: String!
}

type DatadogConfig implements Configuration {
    active: Boolean!
    error: String
    credentials: DataDogCredentials!
}

type Integrations {
    datadog: DatadogConfig
}

input DataDogCredentialsInput {
    site: DatadogSite!
    apiKey: String!

}

input DatadogConfigInput {
    active: Boolean
    credentials: DataDogCredentialsInput
}

type DataDogConfigMutationResult {
    errors: [ConfigurationError!]!
    datadog: DatadogConfig
}

# End integrations

type Query {
    integrations: Integrations!
}

type Mutation {
    updateDatadogConfig(input: DatadogConfigInput!): DataDogConfigMutationResult!
    deleteDatadogConfig: DataDogConfigMutationResult!
}
