{
  "jsonSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Postgres collector configuration.",
    "type": "object",
    "properties": {
      "update_every": {
        "title": "Update every",
        "description": "Data collection interval, measured in seconds.",
        "type": "integer",
        "minimum": 1,
        "default": 1
      },
      "dsn": {
        "title": "DSN",
        "description": "Postgres server Data Source Name in [key/value string](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-KEYWORD-VALUE) or [URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS) format.",
        "type": "string",
        "default": "postgres://netdata:password@127.0.0.1:5432/postgres"
      },
      "timeout": {
        "title": "Timeout",
        "description": "Timeout for queries, in seconds.",
        "type": "number",
        "minimum": 0.5,
        "default": 2
      },
      "vnode": {
        "title": "Vnode",
        "description": "Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes).",
        "type": "string"
      },
      "collect_databases_matching": {
        "title": "Database selector",
        "description": "Configuration for monitoring specific databases using [Netdata simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme). If left empty, no database metrics will be collected.",
        "type": "string"
      },
      "max_db_tables": {
        "title": "Table limit",
        "description": "Table metrics will not be collected for databases that have more tables than the limit. Set to 0 for no limit.",
        "type": "integer",
        "minimum": 0,
        "default": 50
      },
      "max_db_indexes": {
        "title": "Index limit",
        "description": "Index metrics will not be collected for databases that have more indexes than the limit. Set to 0 for no limit.",
        "type": "integer",
        "minimum": 0,
        "default": 250
      },
      "transaction_time_histogram": {
        "title": "Transaction time histogram",
        "description": "Buckets for transaction time histogram in milliseconds.",
        "type": [
          "array",
          "null"
        ],
        "items": {
          "title": "Bucket",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "uniqueItems": true,
        "default": [
          0.1,
          0.5,
          1,
          2.5,
          5,
          10
        ]
      },
      "query_time_histogram": {
        "title": "Query time histogram",
        "description": "Buckets for query time histogram in milliseconds.",
        "type": [
          "array",
          "null"
        ],
        "items": {
          "title": "Bucket",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "uniqueItems": true,
        "default": [
          0.1,
          0.5,
          1,
          2.5,
          5,
          10
        ]
      }
    },
    "required": [
      "dsn"
    ],
    "patternProperties": {
      "^name$": {}
    }
  },
  "uiSchema": {
    "uiOptions": {
      "fullPage": true
    },
    "ui:flavour": "tabs",
    "ui:options": {
      "tabs": [
        {
          "title": "Base",
          "fields": [
            "update_every",
            "dsn",
            "timeout",
            "vnode"
          ]
        },
        {
          "title": "Database stats",
          "fields": [
            "max_db_tables",
            "max_db_indexes",
            "collect_databases_matching"
          ]
        },
        {
          "title": "Histograms",
          "fields": [
            "transaction_time_histogram",
            "query_time_histogram"
          ]
        }
      ]
    },
    "vnode": {
      "ui:placeholder": "To use this option, first create a Virtual Node and then reference its name here."
    },
    "dsn": {
      "ui:placeholder": "postgres://username:password@host:port/dbname"
    },
    "transaction_time_histogram": {
      "ui:listFlavour": "list"
    },
    "query_time_histogram": {
      "ui:listFlavour": "list"
    }
  }
}
