{"ok": true, "next": null, "rows": [{"id": "configuration:configuration-reference-canned-queries", "page": "configuration", "ref": "configuration-reference-canned-queries", "title": "Canned queries configuration", "content": "Canned queries  are named SQL queries that appear in the Datasette interface. They can be configured in  datasette.yaml  using the  queries  key at the database level: \n                 [[[cog\nfrom metadata_doc import config_example, config_example\nconfig_example(cog, {\n    \"databases\": {\n       \"sf-trees\": {\n           \"queries\": {\n               \"just_species\": {\n                   \"sql\": \"select qSpecies from Street_Tree_List\"\n               }\n           }\n       }\n    }\n}) \n                 ]]] \n                 [[[end]]] \n                 See the  canned queries documentation  for more, including how to configure  writable canned queries .", "breadcrumbs": "[\"Configuration\", null]", "references": "[]"}, {"id": "configuration:configuration-reference-css-js", "page": "configuration", "ref": "configuration-reference-css-js", "title": "Custom CSS and JavaScript", "content": "Datasette can load additional CSS and JavaScript files, configured in  datasette.yaml  like this: \n                 [[[cog\nfrom metadata_doc import config_example\nconfig_example(cog, \"\"\"\n    extra_css_urls:\n    - https://simonwillison.net/static/css/all.bf8cd891642c.css\n    extra_js_urls:\n    - https://code.jquery.com/jquery-3.2.1.slim.min.js\n\"\"\") \n                 ]]] \n                 [[[end]]] \n                 The extra CSS and JavaScript files will be linked in the  <head>  of every page: \n                 <link rel=\"stylesheet\" href=\"https://simonwillison.net/static/css/all.bf8cd891642c.css\">\n<script src=\"https://code.jquery.com/jquery-3.2.1.slim.min.js\"></script> \n                 You can also specify a SRI (subresource integrity hash) for these assets: \n                 [[[cog\nconfig_example(cog, \"\"\"\n    extra_css_urls:\n    - url: https://simonwillison.net/static/css/all.bf8cd891642c.css\n      sri: sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI\n    extra_js_urls:\n    - url: https://code.jquery.com/jquery-3.2.1.slim.min.js\n      sri: sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g=\n\"\"\") \n                 ]]] \n                 [[[end]]] \n                 This will produce: \n                 <link rel=\"stylesheet\" href=\"https://simonwillison.net/static/css/all.bf8cd891642c.css\"\n    integrity=\"sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI\"\n    crossorigin=\"anonymous\">\n<script src=\"https://code.jquery.com/jquery-3.2.1.slim.min.js\"\n    integrity=\"sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g=\"\n    crossorigin=\"anonymous\"></script> \n                 Modern browsers will only execute the stylesheet or JavaScript if the SRI hash\n                    matches the content served. You can generate hashes using  www.srihash.org \n                 Items in  \"extra_js_urls\"  can specify  \"module\": true  if they reference JavaScript that uses  JavaScript modules . This configuration: \n                 [[[cog\nconfig_example(cog, \"\"\"\n    extra_js_urls:\n    - url: https://example.datasette.io/module.js\n      module: true\n\"\"\") \n                 ]]] \n                 [[[end]]] \n                 Will produce this HTML: \n                 <script type=\"module\" src=\"https://example.datasette.io/module.js\"></script>", "breadcrumbs": "[\"Configuration\", null]", "references": "[{\"href\": \"https://www.srihash.org/\", \"label\": \"www.srihash.org\"}, {\"href\": \"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\", \"label\": \"JavaScript modules\"}]"}, {"id": "configuration:configuration-reference-permissions", "page": "configuration", "ref": "configuration-reference-permissions", "title": "Permissions configuration", "content": "Datasette's  authentication and permissions  system can also be configured using  datasette.yaml . \n                 Here is a simple example: \n                 [[[cog\nfrom metadata_doc import config_example\nimport textwrap\nconfig_example(cog, textwrap.dedent(\n  \"\"\"\n    # Instance is only available to users 'sharon' and 'percy':\n    allow:\n      id:\n      - sharon\n      - percy\n\n    # Only 'percy' is allowed access to the accounting database:\n    databases:\n      accounting:\n        allow:\n          id: percy\n  \"\"\").strip()\n  ) \n                 ]]] \n                 [[[end]]] \n                 Access permissions in datasette.yaml  has the full details.", "breadcrumbs": "[\"Configuration\", null]", "references": "[]"}, {"id": "configuration:configuration-reference-plugins", "page": "configuration", "ref": "configuration-reference-plugins", "title": "Plugin configuration", "content": "Datasette plugins  often require configuration. This plugin configuration should be placed in  plugins  keys inside  datasette.yaml . \n                 Most plugins are configured at the top-level of the file, using the  plugins  key: \n                 [[[cog\nfrom metadata_doc import config_example\nimport textwrap\nconfig_example(cog, textwrap.dedent(\n  \"\"\"\n    # inside datasette.yaml\n    plugins:\n      datasette-my-plugin:\n        key: my_value\n    \"\"\").strip()\n  ) \n                 ]]] \n                 [[[end]]] \n                 Some plugins can be configured at the database or table level. These should use a  plugins  key nested under the appropriate place within the  databases  object: \n                 [[[cog\nfrom metadata_doc import config_example\nimport textwrap\nconfig_example(cog, textwrap.dedent(\n  \"\"\"\n    # inside datasette.yaml\n    databases:\n      my_database:\n        # plugin configuration for the my_database database\n        plugins:\n          datasette-my-plugin:\n            key: my_value\n      my_other_database:\n        tables:\n          my_table:\n            # plugin configuration for the my_table table inside the my_other_database database\n            plugins:\n              datasette-my-plugin:\n                key: my_value\n  \"\"\").strip()\n  ) \n                 ]]] \n                 [[[end]]]", "breadcrumbs": "[\"Configuration\", null]", "references": "[]"}, {"id": "configuration:configuration-reference-settings", "page": "configuration", "ref": "configuration-reference-settings", "title": "Settings", "content": "Settings  can be configured in  datasette.yaml  with the  settings  key: \n                 [[[cog\nfrom metadata_doc import config_example\nimport textwrap\nconfig_example(cog, textwrap.dedent(\n  \"\"\"\n    # inside datasette.yaml\n    settings:\n      default_allow_sql: off\n      default_page_size: 50\n    \"\"\").strip()\n  ) \n                 ]]] \n                 [[[end]]] \n                 The full list of settings is available in the  settings documentation . Settings can also be passed to Datasette using one or more  --setting name value  command line options.`", "breadcrumbs": "[\"Configuration\", null]", "references": "[]"}, {"id": "configuration:configuration-reference-table", "page": "configuration", "ref": "configuration-reference-table", "title": "Table configuration", "content": "Datasette supports a number of table-level configuration options inside  datasette.yaml . These are placed under  databases.database_name.tables.table_name .", "breadcrumbs": "[\"Configuration\", null]", "references": "[]"}], "truncated": false}