@directus/app 9.13.0 → 9.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{@directus_extensions-sdk.c2d0f9e8.entry.js → @directus_extensions-sdk.016f1070.entry.js} +1 -1
- package/dist/assets/accounts.40ab36c1.js +1 -0
- package/dist/assets/{active-line.85f931be.js → active-line.71775521.js} +1 -1
- package/dist/assets/{activity-log.2f462c6d.js → activity-log.9449feec.js} +1 -1
- package/dist/assets/activity.fbd319d5.js +80 -0
- package/dist/assets/{apl.cef44fca.js → apl.fabbb08e.js} +1 -1
- package/dist/assets/ar-SA.215069dc.js +1 -0
- package/dist/assets/{architecture.19f588c9.js → architecture.9e90b6f3.js} +1 -1
- package/dist/assets/{asciiarmor.0a6d46c1.js → asciiarmor.f87dc63a.js} +1 -1
- package/dist/assets/{asn.1.8af7db88.js → asn.1.5dd57608.js} +1 -1
- package/dist/assets/{asterisk.133eb9d4.js → asterisk.395cf0ad.js} +1 -1
- package/dist/assets/authentication.bc20bce5.js +73 -0
- package/dist/assets/{autorefresh.8c3a7c64.js → autorefresh.2c9c0320.js} +1 -1
- package/dist/assets/aws.6652a1fd.js +1 -0
- package/dist/assets/backing-directus.02c28d29.js +1 -0
- package/dist/assets/{bg-BG.375ca1ae.js → bg-BG.9288ea83.js} +1 -1
- package/dist/assets/{br-FR.73a7f62b.js → br-FR.d3564938.js} +1 -1
- package/dist/assets/{brainfuck.bb0a1793.js → brainfuck.60536f63.js} +1 -1
- package/dist/assets/{ca-ES.3340d7d5.js → ca-ES.f3dfdef6.js} +1 -1
- package/dist/assets/cli.6e61515e.js +19 -0
- package/dist/assets/cli.863ef0d2.js +4 -0
- package/dist/assets/{clike.264a24b6.js → clike.74e0448b.js} +1 -1
- package/dist/assets/{clojure.5be5870c.js → clojure.8f96f0f7.js} +1 -1
- package/dist/assets/{cloudron.3b183977.js → cloudron.a348537b.js} +1 -1
- package/dist/assets/{cmake.361bb9df.js → cmake.723ea5dd.js} +1 -1
- package/dist/assets/{cobol.2e771d85.js → cobol.a990507c.js} +1 -1
- package/dist/assets/codebase-overview.b46635f9.js +1 -0
- package/dist/assets/{coffeescript.132c432c.js → coffeescript.c826a1f4.js} +1 -1
- package/dist/assets/collections.60e4b448.js +2 -0
- package/dist/assets/collections.80e4a52c.js +106 -0
- package/dist/assets/{commonlisp.87c850aa.js → commonlisp.0f5d3fae.js} +1 -1
- package/dist/assets/config-options.8e2d8e17.js +138 -0
- package/dist/assets/content.003d7d7c.js +1 -0
- package/dist/assets/creating-extensions.9a98925a.js +11 -0
- package/dist/assets/{crystal.8b2d4939.js → crystal.8517c407.js} +1 -1
- package/dist/assets/{cs-CZ.678bc13f.js → cs-CZ.a3c83b73.js} +1 -1
- package/dist/assets/{css.1e9857ce.js → css.f2b45d65.js} +1 -1
- package/dist/assets/{cypher.aefea96e.js → cypher.0f67a8c4.js} +1 -1
- package/dist/assets/{d.38a2fd63.js → d.d8c5a86d.js} +1 -1
- package/dist/assets/{da-DK.8db961d3.js → da-DK.3c379038.js} +1 -1
- package/dist/assets/{dart.4d90eff6.js → dart.ff540412.js} +1 -1
- package/dist/assets/data-model.086edd1e.js +1 -0
- package/dist/assets/data-sharing.27afa5ee.js +1 -0
- package/dist/assets/de-DE.350023db.js +1 -0
- package/dist/assets/{diff.f2ea9976.js → diff.1b6cf85e.js} +1 -1
- package/dist/assets/digitalocean-app-platform.aff2a50b.js +3 -0
- package/dist/assets/display-templates.d8e93a19.js +1 -0
- package/dist/assets/displays.e528abde.js +49 -0
- package/dist/assets/{django.fce1ee6c.js → django.b05a00dd.js} +1 -1
- package/dist/assets/{docker.7318105b.js → docker.6f265c46.js} +6 -6
- package/dist/assets/{dockerfile.10fea9a2.js → dockerfile.50e7896f.js} +1 -1
- package/dist/assets/{documentation.ec08e64e.js → documentation.ad1fdaf2.js} +1 -1
- package/dist/assets/{dtd.c67f9501.js → dtd.4f30128b.js} +1 -1
- package/dist/assets/{dylan.9c7c8fbb.js → dylan.295f582b.js} +1 -1
- package/dist/assets/{ebnf.5893ba11.js → ebnf.48a4d2a4.js} +1 -1
- package/dist/assets/{ecl.666cf005.js → ecl.686a8714.js} +1 -1
- package/dist/assets/{eiffel.1ff51078.js → eiffel.ee4a91b5.js} +1 -1
- package/dist/assets/{el-GR.98199dde.js → el-GR.103ebf8d.js} +1 -1
- package/dist/assets/{elm.3c43bbde.js → elm.3575efea.js} +1 -1
- package/dist/assets/{email-templates.bc7359ba.js → email-templates.2bdb87a6.js} +1 -1
- package/dist/assets/{en-CA.d2451b87.js → en-CA.9ad3a3ab.js} +1 -1
- package/dist/assets/{en-GB.e362e116.js → en-GB.c55341c7.js} +1 -1
- package/dist/assets/{endpoints.a283ab67.js → endpoints.2c9172db.js} +2 -2
- package/dist/assets/{erlang.cfe0d25f.js → erlang.2f06eab4.js} +1 -1
- package/dist/assets/{es-419.d7e63f16.js → es-419.10094709.js} +1 -1
- package/dist/assets/{es-CL.7fd46c95.js → es-CL.7f44ec7c.js} +1 -1
- package/dist/assets/es-ES.3ff9088e.js +1 -0
- package/dist/assets/{es-MX.778b926c.js → es-MX.17370b17.js} +1 -1
- package/dist/assets/{et-EE.5321add1.js → et-EE.fb46a361.js} +1 -1
- package/dist/assets/extensions.8d3df212.js +12 -0
- package/dist/assets/{fa-IR.a346165e.js → fa-IR.b864f77c.js} +1 -1
- package/dist/assets/{factor.eb880fb0.js → factor.59c6a149.js} +1 -1
- package/dist/assets/faq.63c79c18.js +2 -0
- package/dist/assets/{fcl.a70b3450.js → fcl.a6a387b9.js} +1 -1
- package/dist/assets/{fi-FI.14cee6db.js → fi-FI.14f31cb4.js} +1 -1
- package/dist/assets/fields.715d4591.js +135 -0
- package/dist/assets/file-library.a4de4015.js +1 -0
- package/dist/assets/files.7c2ccfe2.js +189 -0
- package/dist/assets/filter-rules.056b97be.js +76 -0
- package/dist/assets/filters.2cb82fd9.js +1 -0
- package/dist/assets/flows.38f60cc8.js +172 -0
- package/dist/assets/flows.f378a262.js +15 -0
- package/dist/assets/{fo-FO.ffe478b0.js → fo-FO.cc444b75.js} +1 -1
- package/dist/assets/folders.fa66a5ce.js +132 -0
- package/dist/assets/{forth.127a7f69.js → forth.eec0a81d.js} +1 -1
- package/dist/assets/{fortran.64d2bcc8.js → fortran.b9df31da.js} +1 -1
- package/dist/assets/{fr-FR.49507672.js → fr-CA.0e824ae4.js} +1 -1
- package/dist/assets/fr-FR.77a5277c.js +1 -0
- package/dist/assets/{gas.b5ddd39d.js → gas.1bf79f8f.js} +1 -1
- package/dist/assets/{gcp.aab7b77c.js → gcp.6c61b39e.js} +5 -5
- package/dist/assets/{gfm.0e5a0d37.js → gfm.04d0828d.js} +1 -1
- package/dist/assets/{gherkin.ca9beebc.js → gherkin.f334d646.js} +1 -1
- package/dist/assets/github-ci.04483301.js +2 -0
- package/dist/assets/glossary.485603d9.js +1 -0
- package/dist/assets/glossary.6efd77ad.js +1 -0
- package/dist/assets/{go.601cf92f.js → go.81bbba54.js} +1 -1
- package/dist/assets/{groovy.106b0e1b.js → groovy.3fb79de5.js} +1 -1
- package/dist/assets/{haml.8a27bb91.js → haml.9645befc.js} +1 -1
- package/dist/assets/{handlebars.7edaa076.js → handlebars.c78fa1ca.js} +1 -1
- package/dist/assets/{haskell-literate.c5a1599c.js → haskell-literate.ee77a8c9.js} +1 -1
- package/dist/assets/{haskell.499e9d63.js → haskell.0f131af0.js} +1 -1
- package/dist/assets/{haxe.6103069d.js → haxe.5ecd20ea.js} +1 -1
- package/dist/assets/{hi-IN.1abc0fe8.js → hi-IN.c0703db5.js} +1 -1
- package/dist/assets/hooks.f7efe9af.js +60 -0
- package/dist/assets/{hr-HR.5e9128d0.js → hr-HR.467388ee.js} +1 -1
- package/dist/assets/{htmlembedded.57ac5929.js → htmlembedded.b9d52c93.js} +1 -1
- package/dist/assets/{htmlmixed.be98881c.js → htmlmixed.b02b6e2e.js} +1 -1
- package/dist/assets/{http.4229d6d3.js → http.705b0cd9.js} +1 -1
- package/dist/assets/{hu-HU.edf3e061.js → hu-HU.47ab36e8.js} +1 -1
- package/dist/assets/{id-ID.5d8e082c.js → id-ID.8089647c.js} +1 -1
- package/dist/assets/{idl.1baa44ef.js → idl.ee86fe0e.js} +1 -1
- package/dist/assets/{iis.5653e9da.js → iis.e068f41a.js} +2 -2
- package/dist/assets/import-export.d334c127.js +2 -0
- package/dist/assets/{index.9c5a0589.js → index.0295bc4b.js} +1 -1
- package/dist/assets/{index.e65177c5.js → index.07257d01.js} +1 -1
- package/dist/assets/{index.b7cd48a8.js → index.0e101049.js} +1 -1
- package/dist/assets/{index.15a6b55f.js → index.10f90411.js} +1 -1
- package/dist/assets/{index.204d0697.js → index.14c720ba.js} +1 -1
- package/dist/assets/{index.7bfaf022.js → index.16acfb90.js} +1 -1
- package/dist/assets/{index.e7f7c63b.js → index.175a81f8.js} +1 -1
- package/dist/assets/index.192147d5.css +1 -0
- package/dist/assets/{index.8d2db40f.js → index.1a65b37a.js} +1 -1
- package/dist/assets/{index.4d0c9d2f.js → index.1b44d300.js} +1 -1
- package/dist/assets/{index.9dd4ba15.js → index.20b34242.js} +1 -1
- package/dist/assets/{index.5073c294.js → index.2598f40b.js} +1 -1
- package/dist/assets/{index.9fa88e82.js → index.28aa754b.js} +1 -1
- package/dist/assets/{index.b107abb9.js → index.2926879f.js} +1 -1
- package/dist/assets/{index.0b12fa24.js → index.2ec06d14.js} +1 -1
- package/dist/assets/{index.dd1b70ed.js → index.399c0d62.js} +1 -1
- package/dist/assets/{index.83254b8b.js → index.3d4cd218.js} +1 -1
- package/dist/assets/{index.5d2a1255.js → index.3eda79ec.js} +1 -1
- package/dist/assets/{index.6fe4b726.js → index.402d83c0.js} +1 -1
- package/dist/assets/{index.e29b1e2d.js → index.4100d6f0.js} +1 -1
- package/dist/assets/{index.d0c387c9.js → index.43fa9898.js} +1 -1
- package/dist/assets/{index.d2cb8f46.js → index.456ff0bd.js} +1 -1
- package/dist/assets/{index.e6925009.js → index.4e2109fe.js} +1 -1
- package/dist/assets/{index.58506149.js → index.4ef25ded.js} +1 -1
- package/dist/assets/{index.57201b30.js → index.4fbaebb7.js} +1 -1
- package/dist/assets/{index.4ae9df91.js → index.55a12dfb.js} +1 -1
- package/dist/assets/{index.cf04970d.js → index.56188e3b.js} +1 -1
- package/dist/assets/{index.7ccfac4f.js → index.5c54c17f.js} +1 -1
- package/dist/assets/{index.9f4f31bb.js → index.5f5bf5b9.js} +1 -1
- package/dist/assets/{index.7d3af32f.js → index.60d33aa1.js} +1 -1
- package/dist/assets/{index.1a744da7.js → index.627523d7.js} +1 -1
- package/dist/assets/{index.3fcf2822.js → index.63d1f569.js} +1 -1
- package/dist/assets/{index.16d5015d.js → index.663b73a9.js} +1 -1
- package/dist/assets/{index.59759bad.js → index.6bebaca7.js} +1 -1
- package/dist/assets/{index.28cc485f.js → index.6f0b7179.js} +1 -1
- package/dist/assets/{index.895a297f.css → index.6f497914.css} +1 -1
- package/dist/assets/{index.f73d801d.js → index.7249f524.js} +1 -1
- package/dist/assets/{index.7011d0c4.js → index.77260d1d.js} +1 -1
- package/dist/assets/{index.7b6f6a30.js → index.7f906cfe.js} +1 -1
- package/dist/assets/{index.b6f0287a.js → index.7fd5e2a0.js} +1 -1
- package/dist/assets/{index.731ea486.js → index.7fe984e4.js} +1 -1
- package/dist/assets/{index.9459ab09.js → index.8493b2e7.js} +1 -1
- package/dist/assets/{index.2c806494.js → index.85b9f847.js} +1 -1
- package/dist/assets/{index.f2b97e8c.js → index.8a9f2874.js} +1 -1
- package/dist/assets/{index.67e35129.js → index.93059741.js} +1 -1
- package/dist/assets/{index.9ff8ac88.js → index.94cf6fb4.js} +1 -1
- package/dist/assets/{index.3f26bd55.js → index.98713a56.js} +1 -1
- package/dist/assets/{index.530b8f76.js → index.98ee194a.js} +1 -1
- package/dist/assets/{index.3f629050.js → index.9b60cfa4.js} +1 -1
- package/dist/assets/{index.dbfcc1a7.js → index.a3e085ea.js} +1 -1
- package/dist/assets/{index.0ec094a3.js → index.a40592f5.js} +1 -1
- package/dist/assets/{index.da530994.js → index.a5d15d7f.js} +1 -1
- package/dist/assets/{index.91fa7a8d.js → index.a71fa74c.js} +1 -1
- package/dist/assets/{index.178f5aaf.js → index.a8aa4628.js} +1 -1
- package/dist/assets/{index.528b0171.js → index.a9b73f2c.js} +1 -1
- package/dist/assets/{index.656a3daa.js → index.a9faa4e8.js} +1 -1
- package/dist/assets/{index.3651f13c.js → index.af021d8a.js} +1 -1
- package/dist/assets/{index.c83f5be4.js → index.b43832c6.js} +1 -1
- package/dist/assets/{index.9fd2f4fc.js → index.b5ed5076.js} +1 -1
- package/dist/assets/{index.bfffbb2b.js → index.b67f8116.js} +1 -1
- package/dist/assets/{index.360682df.js → index.b702042e.js} +1 -1
- package/dist/assets/{index.5ef47d94.js → index.bce5f50d.js} +1 -1
- package/dist/assets/{index.d2a1f961.js → index.bfd23a9c.js} +1 -1
- package/dist/assets/{index.876852bd.entry.js → index.c2e31551.entry.js} +209 -209
- package/dist/assets/{index.e3eade04.js → index.c2e6211e.js} +1 -1
- package/dist/assets/{index.d7109bf7.js → index.c35b11e6.js} +1 -1
- package/dist/assets/{index.f03e3a04.js → index.c5266851.js} +1 -1
- package/dist/assets/{index.219a17f2.js → index.c6e501ec.js} +1 -1
- package/dist/assets/{index.7efa08a7.js → index.c9fb33ab.js} +1 -1
- package/dist/assets/{index.2d502598.js → index.cc6496a8.js} +1 -1
- package/dist/assets/{index.3142cfab.js → index.cda6c2d6.js} +1 -1
- package/dist/assets/{index.33ca7318.js → index.cef58c9b.js} +1 -1
- package/dist/assets/{index.c8cd968e.js → index.d060d5f6.js} +1 -1
- package/dist/assets/{index.29e951ca.js → index.d0fe3776.js} +1 -1
- package/dist/assets/{index.94d7ade8.js → index.d653bbf2.js} +1 -1
- package/dist/assets/{index.06b1bc9f.js → index.d8fe2ade.js} +1 -1
- package/dist/assets/{index.577a0434.js → index.d9285c22.js} +1 -1
- package/dist/assets/{index.3db870b4.js → index.e3dcc63c.js} +1 -1
- package/dist/assets/{index.a22ebf71.js → index.e6715953.js} +1 -1
- package/dist/assets/{index.cb9930fe.js → index.ebb444cf.js} +1 -1
- package/dist/assets/{index.b0a109be.js → index.ee22568a.js} +1 -1
- package/dist/assets/{index.708c2587.js → index.ef3faba8.js} +1 -1
- package/dist/assets/index.f0d32a46.js +26 -0
- package/dist/assets/{index.aadb91bf.js → index.fa57ca3f.js} +1 -1
- package/dist/assets/{input-rich-text-html.05181995.css → input-rich-text-html.172a38cb.css} +1 -1
- package/dist/assets/{input-rich-text-html.ec8448e4.js → input-rich-text-html.c72d474e.js} +47 -47
- package/dist/assets/insights.b3ba896c.js +2 -0
- package/dist/assets/installation.2025f88b.js +1 -0
- package/dist/assets/interfaces.606c790c.js +46 -0
- package/dist/assets/introduction.41a72fb0.js +1 -0
- package/dist/assets/introduction.527c3465.js +4 -0
- package/dist/assets/introduction.5566b96e.js +90 -0
- package/dist/assets/introduction.ecd17b88.js +1 -0
- package/dist/assets/{it-IT.558525d2.js → it-IT.58422a56.js} +1 -1
- package/dist/assets/items.d1f658a9.js +1 -0
- package/dist/assets/items.d9c6a0b4.js +136 -0
- package/dist/assets/{javascript-hint.7c0e2348.js → javascript-hint.af96cc6a.js} +1 -1
- package/dist/assets/{javascript.549d0ba4.js → javascript.ed7a2c00.js} +1 -1
- package/dist/assets/{jinja2.5aada9b5.js → jinja2.541c30d3.js} +1 -1
- package/dist/assets/{jsx.560c7673.js → jsx.211ba53b.js} +1 -1
- package/dist/assets/{julia.4b70a3c2.js → julia.66e518ec.js} +1 -1
- package/dist/assets/{ko-KR.5a129780.js → ko-KR.9056bd31.js} +1 -1
- package/dist/assets/{ku-TR.9eee23ff.js → ku-TR.3a07a57e.js} +1 -1
- package/dist/assets/layouts.0aa8d645.js +54 -0
- package/dist/assets/layouts.14b157dc.js +1 -0
- package/dist/assets/{livescript.c54303a1.js → livescript.06428372.js} +1 -1
- package/dist/assets/localization.c89061c7.js +1 -0
- package/dist/assets/{lt-LT.7c7364ab.js → lt-LT.f2d719ff.js} +1 -1
- package/dist/assets/{lua.eee6a1df.js → lua.4f86b0e3.js} +1 -1
- package/dist/assets/manual.20d730b3.js +12 -0
- package/dist/assets/{mark-selection.c75b2260.js → mark-selection.c376d4be.js} +1 -1
- package/dist/assets/{match-highlighter.06888b25.js → match-highlighter.75cb1404.js} +1 -1
- package/dist/assets/{mathematica.836a919a.js → mathematica.1e1f53c5.js} +1 -1
- package/dist/assets/{mbox.a18f3acd.js → mbox.4a5729c3.js} +1 -1
- package/dist/assets/{migrations.48bae78b.js → migrations.f13ec64d.js} +3 -3
- package/dist/assets/{mirc.8d633a4c.js → mirc.9b793041.js} +1 -1
- package/dist/assets/{mllike.ee0a0e4e.js → mllike.4e43f07d.js} +1 -1
- package/dist/assets/{mn-MN.ae109212.js → mn-MN.c504a096.js} +1 -1
- package/dist/assets/{modelica.806d9c14.js → modelica.deb73769.js} +1 -1
- package/dist/assets/modules.9b5ee510.js +69 -0
- package/dist/assets/{ms-MY.e50ff23a.js → ms-MY.e6553dad.js} +1 -1
- package/dist/assets/{mscgen.81143483.js → mscgen.48ffdfc0.js} +1 -1
- package/dist/assets/{multiplex.b5f6827f.js → multiplex.a2d83d7f.js} +1 -1
- package/dist/assets/{mumps.af4fdb4c.js → mumps.210b8bdf.js} +1 -1
- package/dist/assets/{nginx.a80ef11d.js → nginx.dbe68b8c.js} +1 -1
- package/dist/assets/{nl-NL.e22dd4e0.js → nl-NL.2f00af44.js} +1 -1
- package/dist/assets/{no-NO.6edd4997.js → no-NO.59f9d425.js} +1 -1
- package/dist/assets/notifications.674ee6f9.js +153 -0
- package/dist/assets/{nsis.6c7c39d8.js → nsis.5576ebf1.js} +1 -1
- package/dist/assets/{ntriples.9c907279.js → ntriples.07c64718.js} +1 -1
- package/dist/assets/{octave.1e59cd30.js → octave.9cb94caa.js} +1 -1
- package/dist/assets/operations.46679bea.js +1 -0
- package/dist/assets/operations.9995851b.js +169 -0
- package/dist/assets/{overlay.c92748f5.js → overlay.b1fd0f5a.js} +1 -1
- package/dist/assets/overview.3616b560.js +1 -0
- package/dist/assets/overview.3c9f8f3d.js +1 -0
- package/dist/assets/overview.6438dc44.js +1 -0
- package/dist/assets/{oz.fccca05b.js → oz.4bedbc84.js} +1 -1
- package/dist/assets/panels.570ee526.js +65 -0
- package/dist/assets/{pascal.ba64f8f0.js → pascal.9f3e47db.js} +1 -1
- package/dist/assets/{pegjs.6dfcd58b.js → pegjs.38dabda4.js} +1 -1
- package/dist/assets/{perl.0e74be0a.js → perl.d07c357e.js} +1 -1
- package/dist/assets/permissions.768d1878.js +178 -0
- package/dist/assets/{php.d233db82.js → php.a2fb29e5.js} +1 -1
- package/dist/assets/{pig.21e0eb3e.js → pig.cc357f9e.js} +1 -1
- package/dist/assets/{pinia.10afb35e.entry.js → pinia.256cc3da.entry.js} +1 -1
- package/dist/assets/{pl-PL.88defd20.js → pl-PL.80cfbed6.js} +1 -1
- package/dist/assets/plesk.b0ee9a9a.js +27 -0
- package/dist/assets/{powershell.da69d4e0.js → powershell.283f357b.js} +1 -1
- package/dist/assets/presets-bookmarks.522baf53.js +1 -0
- package/dist/assets/presets.d902ebfa.js +164 -0
- package/dist/assets/project-settings.1f95b799.js +1 -0
- package/dist/assets/projects.1ea6a392.js +1 -0
- package/dist/assets/{properties.a4628831.js → properties.57480d0c.js} +1 -1
- package/dist/assets/{protobuf.f0f96141.js → protobuf.c1758733.js} +1 -1
- package/dist/assets/{pt-BR.70dc0b86.js → pt-BR.40750500.js} +1 -1
- package/dist/assets/pt-PT.fae0fcc3.js +1 -0
- package/dist/assets/{pug.3fee26d4.js → pug.bdcaf1c5.js} +1 -1
- package/dist/assets/{puppet.60ebf719.js → puppet.8b6ff9f4.js} +1 -1
- package/dist/assets/{python.a209d75c.js → python.987c2ae7.js} +1 -1
- package/dist/assets/{q.9bc79202.js → q.85f4c589.js} +1 -1
- package/dist/assets/query.8abea6de.js +152 -0
- package/dist/assets/quickstart.75164dd7.js +9 -0
- package/dist/assets/quickstart.9985cb15.js +20 -0
- package/dist/assets/{r.73746445.js → r.25d10fd4.js} +1 -1
- package/dist/assets/relations.9011b2b5.js +115 -0
- package/dist/assets/relationships.cbc9b1c5.js +55 -0
- package/dist/assets/resources.25cb1e34.js +1 -0
- package/dist/assets/revisions.c90ecb76.js +40 -0
- package/dist/assets/{ro-RO.335d3129.js → ro-RO.a1adfb6a.js} +1 -1
- package/dist/assets/roles.22f7aa37.js +171 -0
- package/dist/assets/{rpm.b64d60a3.js → rpm.8909ead0.js} +1 -1
- package/dist/assets/{rst.d4af1cd8.js → rst.4d43ef54.js} +1 -1
- package/dist/assets/{ru-RU.2ccef41d.js → ru-RU.35703ea4.js} +1 -1
- package/dist/assets/{ruby.a80f4c3d.js → ruby.b7e26986.js} +1 -1
- package/dist/assets/running-locally.ce0a8200.js +26 -0
- package/dist/assets/{runtime-core.esm-bundler.e6808e6c.js → runtime-core.esm-bundler.b1f35d24.js} +0 -0
- package/dist/assets/{rust.899c7d8f.js → rust.6984b11a.js} +1 -1
- package/dist/assets/{sas.41f29cd7.js → sas.91990a72.js} +1 -1
- package/dist/assets/{sass.1d8f58d7.js → sass.898f89c7.js} +1 -1
- package/dist/assets/{scheme.2ab5ffc7.js → scheme.f661c5b8.js} +1 -1
- package/dist/assets/{sdk.482f914b.js → sdk.916109ed.js} +59 -59
- package/dist/assets/security.1963da73.js +1 -0
- package/dist/assets/server.afec52fc.js +114 -0
- package/dist/assets/settings.835be62f.js +51 -0
- package/dist/assets/{settings.3849af9a.js → settings.a02abd85.js} +1 -1
- package/dist/assets/{shell.a3cecf64.js → shell.af2902da.js} +1 -1
- package/dist/assets/{show-hint.3f4ba8eb.js → show-hint.2d43524d.js} +1 -1
- package/dist/assets/{sieve.f25d24f4.js → sieve.327a81f8.js} +1 -1
- package/dist/assets/{simple.c984322a.js → simple.4fb4f28d.js} +1 -1
- package/dist/assets/{sl-SI.e8321ed4.js → sl-SI.632899f8.js} +1 -1
- package/dist/assets/{slim.3db1f064.js → slim.e97ce531.js} +1 -1
- package/dist/assets/{smalltalk.f551ff39.js → smalltalk.b9556415.js} +1 -1
- package/dist/assets/{smarty.afd9c30f.js → smarty.d91926e3.js} +1 -1
- package/dist/assets/{solr.c9696404.js → solr.20381d3e.js} +1 -1
- package/dist/assets/{soy.1a041a45.js → soy.a0154260.js} +1 -1
- package/dist/assets/{sparql.8928a4e7.js → sparql.36de4d3f.js} +1 -1
- package/dist/assets/{spreadsheet.b508d495.js → spreadsheet.00a4877b.js} +1 -1
- package/dist/assets/{sql.ca615946.js → sql.1f7dd82a.js} +1 -1
- package/dist/assets/{sr-CS.4de79c8e.js → sr-CS.2e5b18be.js} +1 -1
- package/dist/assets/{sso-examples.b4ec54d6.js → sso-examples.048b39c5.js} +12 -12
- package/dist/assets/sso.70be105f.js +22 -0
- package/dist/assets/{stex.49bcb53e.js → stex.2b7cb363.js} +1 -1
- package/dist/assets/{stylus.861b3b1d.js → stylus.123ca166.js} +1 -1
- package/dist/assets/support.fce2dba5.js +1 -0
- package/dist/assets/{sv-SE.0f875403.js → sv-SE.d485ddd3.js} +1 -1
- package/dist/assets/{swift.3f2d8cb3.js → swift.9ca91d28.js} +1 -1
- package/dist/assets/{tcl.cd07bc30.js → tcl.1b7f83bd.js} +1 -1
- package/dist/assets/teams.44eb670e.js +1 -0
- package/dist/assets/{textile.a63fbf58.js → textile.ee402504.js} +1 -1
- package/dist/assets/{th-TH.2ebd6079.js → th-TH.1e9ab13f.js} +1 -1
- package/dist/assets/themes.e4a7762f.js +5 -0
- package/dist/assets/{tiddlywiki.f2f348c0.js → tiddlywiki.67540872.js} +1 -1
- package/dist/assets/{tiki.ba369f07.js → tiki.fb6dd4a0.js} +1 -1
- package/dist/assets/{toml.31bb978b.js → toml.9c5fe3d8.js} +1 -1
- package/dist/assets/{tornado.1777e143.js → tornado.c681a8fd.js} +1 -1
- package/dist/assets/tr-TR.feb24957.js +1 -0
- package/dist/assets/translation-strings.4ed25965.js +1 -0
- package/dist/assets/translations.cf2353ca.js +1 -0
- package/dist/assets/triggers.05092cdf.js +1 -0
- package/dist/assets/{troff.1d83c4c6.js → troff.a6f4e798.js} +1 -1
- package/dist/assets/{ttcn-cfg.7fa2f9b9.js → ttcn-cfg.a0214838.js} +1 -1
- package/dist/assets/{ttcn.5f856a38.js → ttcn.4c22a431.js} +1 -1
- package/dist/assets/{turtle.3c6fdbbb.js → turtle.d40e9c31.js} +1 -1
- package/dist/assets/{twig.542faf41.js → twig.d78613df.js} +1 -1
- package/dist/assets/{ubuntu.d721892a.js → ubuntu.35dc97df.js} +1 -1
- package/dist/assets/uk-UA.0e92f9a4.js +1 -0
- package/dist/assets/upgrades-migrations.9218bbe9.js +1 -0
- package/dist/assets/use-sync.c0f4dfab.js +28 -0
- package/dist/assets/user-directory.3daaa818.js +1 -0
- package/dist/assets/users-roles-permissions.6e18f7ca.js +1 -0
- package/dist/assets/users.4f11a7c5.js +252 -0
- package/dist/assets/utilities.0e0d0ace.js +74 -0
- package/dist/assets/{vb.660ea551.js → vb.5adeb8ea.js} +1 -1
- package/dist/assets/{vbscript.8d60ba84.js → vbscript.27937162.js} +1 -1
- package/dist/assets/{velocity.2c820c8c.js → velocity.581c25aa.js} +1 -1
- package/dist/assets/{verilog.a6d857f3.js → verilog.9f72c282.js} +1 -1
- package/dist/assets/{vhdl.1739da74.js → vhdl.4d290e0b.js} +1 -1
- package/dist/assets/{vi-VN.7aaf0f64.js → vi-VN.3e9c985f.js} +1 -1
- package/dist/assets/{vue-i18n.540626ab.entry.js → vue-i18n.ecb0af35.entry.js} +1 -1
- package/dist/assets/{vue-router.3ef5d657.entry.js → vue-router.8987d576.entry.js} +1 -1
- package/dist/assets/{vue.2ddff80c.entry.js → vue.1f4d921a.entry.js} +1 -1
- package/dist/assets/{vue.6a736ef9.js → vue.cf5a232a.js} +1 -1
- package/dist/assets/{vue.runtime.esm-bundler.f4ce1cef.js → vue.runtime.esm-bundler.ac4ff7af.js} +1 -1
- package/dist/assets/{wast.4a6e6c0b.js → wast.16f886c5.js} +1 -1
- package/dist/assets/webhooks.00ee297b.js +147 -0
- package/dist/assets/webhooks.01ddb390.js +1 -0
- package/dist/assets/{webidl.92e5974e.js → webidl.1185b166.js} +1 -1
- package/dist/assets/{xquery.2e4160b5.js → xquery.34864271.js} +1 -1
- package/dist/assets/{yacas.3afca2ee.js → yacas.880a270b.js} +1 -1
- package/dist/assets/{yaml-frontmatter.312d62d5.js → yaml-frontmatter.4cec6c13.js} +1 -1
- package/dist/assets/{yaml.71c2f2cd.js → yaml.15292258.js} +1 -1
- package/dist/assets/{z80.e076e688.js → z80.727a7271.js} +1 -1
- package/dist/assets/{zh-CN.d7b18680.js → zh-CN.432cf71e.js} +1 -1
- package/dist/assets/{zh-TW.4802ae81.js → zh-TW.cac20c88.js} +1 -1
- package/dist/index.html +8 -8
- package/package.json +7 -6
- package/dist/assets/accounts.6a41a439.js +0 -1
- package/dist/assets/activity.737e1d30.js +0 -80
- package/dist/assets/ar-SA.1270865d.js +0 -1
- package/dist/assets/authentication.77ec921a.js +0 -73
- package/dist/assets/aws.f94e1168.js +0 -1
- package/dist/assets/backing-directus.16949f6d.js +0 -1
- package/dist/assets/cli.18caf1f2.js +0 -19
- package/dist/assets/cli.774a4996.js +0 -4
- package/dist/assets/codebase-overview.d6365b1a.js +0 -1
- package/dist/assets/collections.5ec4ec4a.js +0 -2
- package/dist/assets/collections.e66dacd4.js +0 -106
- package/dist/assets/config-options.5b139611.js +0 -138
- package/dist/assets/content.0fca8e70.js +0 -1
- package/dist/assets/creating-extensions.09899f65.js +0 -11
- package/dist/assets/data-model.98153925.js +0 -1
- package/dist/assets/data-sharing.06e8a06f.js +0 -1
- package/dist/assets/de-DE.a45e2867.js +0 -1
- package/dist/assets/digitalocean-app-platform.7da3c7a1.js +0 -3
- package/dist/assets/display-templates.cd179d19.js +0 -1
- package/dist/assets/displays.1ee1f2b5.js +0 -49
- package/dist/assets/es-ES.90a08b21.js +0 -1
- package/dist/assets/extensions.a51d3924.js +0 -12
- package/dist/assets/faq.7bde76ae.js +0 -2
- package/dist/assets/fields.1f2e77de.js +0 -135
- package/dist/assets/file-library.3626307c.js +0 -1
- package/dist/assets/files.e045e557.js +0 -189
- package/dist/assets/filter-rules.247581e5.js +0 -76
- package/dist/assets/filters.43e74661.js +0 -1
- package/dist/assets/flows.323ce75f.js +0 -15
- package/dist/assets/flows.5f5e16d5.js +0 -172
- package/dist/assets/folders.56c9a624.js +0 -132
- package/dist/assets/fr-CA.7669aed8.js +0 -1
- package/dist/assets/github-ci.fbe7bc68.js +0 -2
- package/dist/assets/glossary.321fe2e7.js +0 -1
- package/dist/assets/glossary.8e8d2e42.js +0 -1
- package/dist/assets/hooks.c8418066.js +0 -60
- package/dist/assets/import-export.c48e51e7.js +0 -2
- package/dist/assets/index.9001e465.css +0 -1
- package/dist/assets/index.9ac418f5.js +0 -26
- package/dist/assets/insights.91323cd9.js +0 -2
- package/dist/assets/installation.52e4ff88.js +0 -1
- package/dist/assets/interfaces.3a13d91e.js +0 -46
- package/dist/assets/introduction.651560f1.js +0 -1
- package/dist/assets/introduction.8442768e.js +0 -4
- package/dist/assets/introduction.8fbc61cf.js +0 -1
- package/dist/assets/introduction.a7d534ac.js +0 -90
- package/dist/assets/items.21c2f5c1.js +0 -1
- package/dist/assets/items.89e120a5.js +0 -136
- package/dist/assets/layouts.1ab2977a.js +0 -1
- package/dist/assets/layouts.ec7b7659.js +0 -54
- package/dist/assets/localization.7df8d876.js +0 -1
- package/dist/assets/manual.1cafb3c9.js +0 -10
- package/dist/assets/modules.ba273153.js +0 -69
- package/dist/assets/notifications.1e1cfcf8.js +0 -153
- package/dist/assets/operations.054152be.js +0 -1
- package/dist/assets/operations.cd009c46.js +0 -169
- package/dist/assets/overview.70f19d6e.js +0 -1
- package/dist/assets/overview.a1ad38f6.js +0 -1
- package/dist/assets/overview.b5ff02e8.js +0 -1
- package/dist/assets/panels.a7ccfe62.js +0 -65
- package/dist/assets/permissions.7a7896f5.js +0 -178
- package/dist/assets/plesk.e70d310e.js +0 -27
- package/dist/assets/presets-bookmarks.03f2cacf.js +0 -1
- package/dist/assets/presets.78562380.js +0 -164
- package/dist/assets/project-settings.1ca9f129.js +0 -1
- package/dist/assets/projects.8310e11a.js +0 -1
- package/dist/assets/pt-PT.011f0864.js +0 -1
- package/dist/assets/query.23aa38a2.js +0 -152
- package/dist/assets/quickstart.2ad94821.js +0 -20
- package/dist/assets/quickstart.59a0c62f.js +0 -9
- package/dist/assets/relations.c6b50878.js +0 -115
- package/dist/assets/relationships.7a08adb6.js +0 -55
- package/dist/assets/resources.a731a4ac.js +0 -1
- package/dist/assets/revisions.69b22e98.js +0 -40
- package/dist/assets/roles.caf226aa.js +0 -171
- package/dist/assets/running-locally.0df06054.js +0 -26
- package/dist/assets/security.e53645ff.js +0 -1
- package/dist/assets/server.c899d180.js +0 -114
- package/dist/assets/settings.2dce0b3a.js +0 -51
- package/dist/assets/sso.83af860e.js +0 -22
- package/dist/assets/support.ec8c583f.js +0 -1
- package/dist/assets/teams.cd070396.js +0 -1
- package/dist/assets/themes.6b4fa5ad.js +0 -5
- package/dist/assets/tr-TR.bf97340d.js +0 -1
- package/dist/assets/translation-strings.20caaf44.js +0 -1
- package/dist/assets/translations.b0669f1b.js +0 -1
- package/dist/assets/triggers.ef2f026f.js +0 -1
- package/dist/assets/uk-UA.3d9cc5ac.js +0 -1
- package/dist/assets/upgrades-migrations.7ca77eae.js +0 -1
- package/dist/assets/use-sync.a493fd37.js +0 -28
- package/dist/assets/user-directory.1e43d57c.js +0 -1
- package/dist/assets/users-roles-permissions.298f1d29.js +0 -1
- package/dist/assets/users.c27bf116.js +0 -252
- package/dist/assets/utilities.5c027346.js +0 -74
- package/dist/assets/webhooks.c44db11b.js +0 -147
- package/dist/assets/webhooks.dcb64844.js +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import{a,o as c,b as h,w as n,g as e,e as r,B as t}from"./runtime-core.esm-bundler.e6808e6c.js";const u={class:"markdown-body"},d=t("This guide explains how to install the "),p=e("em",null,"Development",-1),_=t(" version of Directus locally so that you can work on the platform\u2019s source code. To install the "),m=e("em",null,"Production",-1),g=t(" version locally, please follow to our "),f=t("standard installation guides"),y=t("."),b=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Minimum Requirements"),e("p",null,[t("You will need to have "),e("a",{href:"https://nodejs.org/en/download/current/",target:"_blank",rel:"noopener noreferrer"},"the latest version of Node"),t(" to "),e("em",null,"build"),t(" a Development version of Directus.")]),e("p",null,[t("You can use the JavaScript tool manager "),e("a",{href:"https://volta.sh/",target:"_blank",rel:"noopener noreferrer"},"volta"),t(" to automatically install the current node and npm versions.")])],-1),k=e("h2",{id:"1.-fork-the-directus-repository"},[t("1. Fork the Directus repository "),e("a",{class:"header-anchor",href:"#1.-fork-the-directus-repository"},"#")],-1),v=e("p",null,[t("Go to the "),e("a",{href:"https://github.com/directus/directus",target:"_blank",rel:"noopener noreferrer"},"repository"),t(" and fork it to your GitHub account. A fork is your copy of the Directus repository. Forking the repository allows you to freely experiment with changes without affecting the original project.")],-1),w=e("h2",{id:"2.-clone-from-your-repository"},[t("2. Clone from your repository "),e("a",{class:"header-anchor",href:"#2.-clone-from-your-repository"},"#")],-1),j=e("pre",null,[e("code",{class:"language-bash"},[t("git "),e("span",{class:"hljs-built_in"},"clone"),t(` git@github.com:YOUR-USERNAME/directus.git
|
|
2
|
-
`)])],-1),x=e("h2",{id:"3.-make-a-new-branch"},[t("3. Make a new branch "),e("a",{class:"header-anchor",href:"#3.-make-a-new-branch"},"#")],-1),T=e("pre",null,[e("code",{class:"language-bash"},`git checkout -b YOUR-BRANCH-NAME
|
|
3
|
-
`)],-1),A=e("h2",{id:"4.-install-the-dependencies-and-build-the-project"},[t("4. Install the dependencies and build the project "),e("a",{class:"header-anchor",href:"#4.-install-the-dependencies-and-build-the-project"},"#")],-1),D=e("pre",null,[e("code",{class:"language-bash"},`npm install
|
|
4
|
-
npm run build
|
|
5
|
-
`)],-1),C=e("h2",{id:"5.-create-a-.env-file"},[t("5. Create a "),e("code",null,".env"),t(" file "),e("a",{class:"header-anchor",href:"#5.-create-a-.env-file"},"#")],-1),R=e("p",null,[t("Create an "),e("code",null,".env"),t(" file under the "),e("code",null,"api"),t(" folder using vars from the online "),e("a",{href:"https://docs.directus.io/self-hosted/config-options/",target:"_blank",rel:"noopener noreferrer"},"config help")],-1),E=e("h2",{id:"6.-initialize-the-database"},[t("6. Initialize the database "),e("a",{class:"header-anchor",href:"#6.-initialize-the-database"},"#")],-1),F=e("p",null,"For this step, you\u2019ll need to already have a SQL database up-and-running, except if you\u2019re using the SQLite driver, which will create the database (file) for you.",-1),N=e("p",null,"To start the initialization run the following command:",-1),S=e("pre",null,[e("code",{class:"language-bash"},[e("span",{class:"hljs-comment"},"# From within the root of the project"),t(`
|
|
6
|
-
npm run cli bootstrap
|
|
7
|
-
|
|
8
|
-
`),e("span",{class:"hljs-comment"},"# For SQLite you need to run the command in the 'api' context (to ensure the database file is created in the right directory)"),t(`
|
|
9
|
-
npm run cli bootstrap --workspace=api
|
|
10
|
-
`)])],-1),B=e("p",null,"This will set-up the required tables for Directus and make sure all the migrations have run.",-1),I=e("h2",{id:"7.-start-the-development-server"},[t("7. Start the development server "),e("a",{class:"header-anchor",href:"#7.-start-the-development-server"},"#")],-1),L=e("p",null,[t("First you need to choose what packages you want to work on. Then, you should run the "),e("code",null,"dev"),t(" script on that package. You can see their names and list of scripts in their related "),e("code",null,"package.json"),t(". Example of running APP:")],-1),M=e("pre",null,[e("code",{class:"language-bash"},`npm run dev -w @directus/app
|
|
11
|
-
`)],-1),Y=e("p",null,"If you want to work on multiple packages at once, you should create a new instance of your terminal for each package: Example of running Api, App:",-1),q=e("table",null,[e("tr",null,[e("th",null," Terminal 1 [Api] "),e("th",null," Terminal 2 [App] ")]),e("tr",null,[e("td",null,[e("pre",null,[e("code",{class:"language-bash"},`npm run dev -w directus
|
|
12
|
-
`)])]),e("td",null,[e("pre",null,[e("code",{class:"language-bash"},`npm run dev -w @directus/app
|
|
13
|
-
`)])])])],-1),z=e("hr",null,null,-1),H=e("p",null,[t("To work on the Documentation (public website version), you should navigate to the "),e("code",null,"docs"),t(" directory and run the following command:")],-1),G=e("pre",null,[e("code",{class:"language-bash"},`npm install
|
|
14
|
-
`)],-1),P=e("sup",null,"\u2139 This is necessary because the way vue-server-renderer imports vue",-1),Q=e("p",null,"Then you should run",-1),U=e("pre",null,[e("code",{class:"language-bash"},`npm run dev:site
|
|
15
|
-
`)],-1),V=e("div",{class:"tip hint"},[e("p",null,"If you encounter errors during this installation process, make sure your node version meets the minimum requirements")],-1),O=e("h2",{id:"8.-make-your-fixes%2Fchanges"},[t("8. Make your fixes/changes "),e("a",{class:"header-anchor",href:"#8.-make-your-fixes%2Fchanges"},"#")],-1),J=t("At this point you are ready to start working on Directus! Before diving in however, it\u2019s worth reading through the introduction to "),W=t("Contributing"),K=t("."),X=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Debugging"),e("p",null,[t("Check our Wiki for a "),e("a",{href:"https://github.com/directus/directus/wiki/debugging",target:"_blank",rel:"noopener noreferrer"},"guide"),t(" on debugging the app and api.")])],-1),Z=e("h2",{id:"9.-running-tests"},[t("9. Running tests "),e("a",{class:"header-anchor",href:"#9.-running-tests"},"#")],-1),$=e("p",null,"Tests run automatically through GitHub Actions. However you may wish to run the tests locally especially when you write tests.",-1),ee=e("p",null,[t("Install "),e("a",{href:"https://docs.docker.com/get-docker/",target:"_blank",rel:"noopener noreferrer"},"Docker"),t(" and ensure that the service is running.")],-1),te=e("pre",null,[e("code",{class:"language-bash"},[e("span",{class:"hljs-comment"},"# Ensure that you are testing on the lastest codebase"),t(`
|
|
16
|
-
npm run build
|
|
17
|
-
|
|
18
|
-
`),e("span",{class:"hljs-comment"},"# Clean up in case you ran the tests before"),t(`
|
|
19
|
-
docker compose -f tests/docker-compose.yml down -v
|
|
20
|
-
|
|
21
|
-
`),e("span",{class:"hljs-comment"},"# Start the necessary containers"),t(`
|
|
22
|
-
docker compose -f tests/docker-compose.yml up -d --`),e("span",{class:"hljs-built_in"},"wait"),t(`
|
|
23
|
-
|
|
24
|
-
`),e("span",{class:"hljs-comment"},"# Run the tests"),t(`
|
|
25
|
-
npm run `),e("span",{class:"hljs-built_in"},"test"),t(`:e2e
|
|
26
|
-
`)])],-1),re="Running Locally",le=!1,ie={name:"running-locally",setup(ne,{expose:l}){const o={title:"Running Locally",modularExtension:!1};return l({frontmatter:o}),(oe,se)=>{const s=a("router-link"),i=a("docs-wrapper");return c(),h(i,{frontmatter:o},{default:n(()=>[e("div",u,[e("blockquote",null,[e("p",null,[d,p,_,m,g,r(s,{to:"/docs/self-hosted/installation/"},{default:n(()=>[f]),_:1}),y])]),b,k,v,w,j,x,T,A,D,C,R,E,F,N,S,B,I,L,M,Y,q,z,H,G,P,Q,U,V,O,e("p",null,[J,r(s,{to:"/docs/contributing/introduction"},{default:n(()=>[W]),_:1}),K]),X,Z,$,ee,te])]),_:1})}}};export{ie as default,le as modularExtension,re as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as i,o as c,b as n,w as o,g as e,B as a}from"./runtime-core.esm-bundler.e6808e6c.js";const d=e("div",{class:"markdown-body"},[e("blockquote",null,[e("p",null,"TK")]),e("h2",{id:"https"},[a("HTTPS "),e("a",{class:"header-anchor",href:"#https"},"#")]),e("h2",{id:"password-salting%2Fhashing%2Falgorithm-%26-password-policy"},[a("Password Salting/Hashing/Algorithm & Password Policy "),e("a",{class:"header-anchor",href:"#password-salting%2Fhashing%2Falgorithm-%26-password-policy"},"#")]),e("h2",{id:"static-tokens"},[a("Static Tokens "),e("a",{class:"header-anchor",href:"#static-tokens"},"#")]),e("h2",{id:"encrypted-fields-%26-encrypted-database"},[a("Encrypted Fields & Encrypted Database "),e("a",{class:"header-anchor",href:"#encrypted-fields-%26-encrypted-database"},"#")]),e("h2",{id:"private-file-links"},[a("Private File Links "),e("a",{class:"header-anchor",href:"#private-file-links"},"#")]),e("h2",{id:"mfa-(required)-%26-sso"},[a("MFA (Required) & SSO "),e("a",{class:"header-anchor",href:"#mfa-(required)-%26-sso"},"#")]),e("h2",{id:"granular-access-control-%26-ip-white-listing-%26-app-access"},[a("Granular Access Control & IP WHite-Listing & App Access "),e("a",{class:"header-anchor",href:"#granular-access-control-%26-ip-white-listing-%26-app-access"},"#")]),e("h2",{id:"rate-limiting"},[a("Rate Limiting "),e("a",{class:"header-anchor",href:"#rate-limiting"},"#")]),e("h2",{id:"encrypted"},[a("Encrypted "),e("a",{class:"header-anchor",href:"#encrypted"},"#")]),e("h2",{id:"parameterized-database-queries"},[a("Parameterized Database Queries "),e("a",{class:"header-anchor",href:"#parameterized-database-queries"},"#")])],-1),m="Security",u=!1,g={name:"security",setup(h,{expose:r}){const s={title:"Security",modularExtension:!1};return r({frontmatter:s}),(l,p)=>{const t=i("docs-wrapper");return c(),n(t,{frontmatter:s},{default:o(()=>[d]),_:1})}}};export{g as default,u as modularExtension,m as title};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import{a as t,o as h,b as i,w as n,g as s,e as r,B as e}from"./runtime-core.esm-bundler.e6808e6c.js";const p={class:"markdown-body"},d={class:"two-up"},u={class:"left"},g=e("Provides detailed information about the project server, its schema, and its health. "),_=e("Learn more about Projects"),f=e("."),m=s("div",{class:"right"},[s("p",null,[s("div",{class:"table-of-contents"},[s("ul",null,[s("li",null,[s("a",{href:"#get-openapi-specification"},"Get OpenAPI Specification")]),s("li",null,[s("a",{href:"#get-graphql-sdl"},"Get GraphQL SDL")]),s("li",null,[s("a",{href:"#ping"},"Ping")]),s("li",null,[s("a",{href:"#info"},"Info")]),s("li",null,[s("a",{href:"#health"},"Health")])])])])],-1),j=s("hr",null,null,-1),y=s("h2",{id:"get-openapi-specification"},[e("Get OpenAPI Specification "),s("a",{class:"header-anchor",href:"#get-openapi-specification"},"#")],-1),v=s("p",null,"Retrieve the OpenAPI spec for the current project.",-1),b=s("div",{class:"two-up"},[s("div",{class:"left"},[s("div",{class:"tip hint"},[s("div",{class:"hint-title"},"Permissions"),s("p",null,"This OAS spec is based on the read permissions of the currently authenticated user.")]),s("h3",{id:"returns"},[e("Returns "),s("a",{class:"header-anchor",href:"#returns"},"#")]),s("p",null,[e("Object conforming to "),s("a",{href:"https://swagger.io/specification/",target:"_blank",rel:"noopener noreferrer"},"the OpenAPI Specification")])]),s("div",{class:"right"},[s("h3",{id:"rest-api"},[e("REST API "),s("a",{class:"header-anchor",href:"#rest-api"},"#")]),s("pre",null,[s("code",null,`GET /server/specs/oas
|
|
2
|
-
`)]),s("h3",{id:"graphql"},[e("GraphQL "),s("a",{class:"header-anchor",href:"#graphql"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
3
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),e(` {
|
|
4
|
-
server_specs_oas:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
5
|
-
}
|
|
6
|
-
`)])]),s("h5",{id:"example"},[e("Example "),s("a",{class:"header-anchor",href:"#example"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),e(` {
|
|
7
|
-
server_specs_oas
|
|
8
|
-
}
|
|
9
|
-
`)])])])],-1),q=s("hr",null,null,-1),k=s("h2",{id:"get-graphql-sdl"},[e("Get GraphQL SDL "),s("a",{class:"header-anchor",href:"#get-graphql-sdl"},"#")],-1),w=s("p",null,"Retrieve the GraphQL SDL for the current project.",-1),S=s("div",{class:"two-up"},[s("div",{class:"left"},[s("div",{class:"tip hint"},[s("div",{class:"hint-title"},"Permissions"),s("p",null,"The SDL is based on the permissions of the currently authenticated user.")]),s("h3",{id:"returns-2"},[e("Returns "),s("a",{class:"header-anchor",href:"#returns-2"},"#")]),s("p",null,"GraphQL SDL file."),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),e(` about_us {
|
|
10
|
-
id:`),s("span",{class:"hljs-type"}," Int"),e(`
|
|
11
|
-
introduction:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
12
|
-
our_process:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
13
|
-
sales_email:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
14
|
-
general_email:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
15
|
-
primary_color:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
16
|
-
secondary_color:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
17
|
-
logo: directus_files
|
|
18
|
-
mark: directus_files
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
`),s("span",{class:"hljs-keyword"},"type"),e(` articles {
|
|
22
|
-
id:`),s("span",{class:"hljs-type"}," Int"),e(`
|
|
23
|
-
status:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
24
|
-
`),s("span",{class:"hljs-keyword"},"..."),e(`
|
|
25
|
-
`),s("span",{class:"hljs-comment"},"# etc"),e(`
|
|
26
|
-
`)])])]),s("div",{class:"right"},[s("h3",{id:"rest-api-2"},[e("REST API "),s("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),s("pre",null,[s("code",null,`GET /server/specs/graphql/
|
|
27
|
-
GET /server/specs/graphql/system
|
|
28
|
-
`)]),s("h3",{id:"graphql-2"},[e("GraphQL "),s("a",{class:"header-anchor",href:"#graphql-2"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
29
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),e(` {
|
|
30
|
-
server_specs_graphql(scope: graphql_sdl_scope):`),s("span",{class:"hljs-type"}," String"),e(`
|
|
31
|
-
}
|
|
32
|
-
`)])]),s("h5",{id:"example-2"},[e("Example "),s("a",{class:"header-anchor",href:"#example-2"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),e(` {
|
|
33
|
-
server_specs_graphql(scope: `),s("span",{class:"hljs-string"},'"system"'),e(`)
|
|
34
|
-
}
|
|
35
|
-
`)])])])],-1),T=s("hr",null,null,-1),P=s("h2",{id:"ping"},[e("Ping "),s("a",{class:"header-anchor",href:"#ping"},"#")],-1),x=s("p",null,"Ping\u2026 pong! \u{1F3D3}",-1),A=s("div",{class:"two-up"},[s("div",{class:"left"},[s("h3",{id:"returns-3"},[e("Returns "),s("a",{class:"header-anchor",href:"#returns-3"},"#")]),s("p",null,"Pong.")]),s("div",{class:"right"},[s("h3",{id:"rest-api-3"},[e("REST API "),s("a",{class:"header-anchor",href:"#rest-api-3"},"#")]),s("pre",null,[s("code",null,`GET /server/ping
|
|
36
|
-
`)]),s("h3",{id:"graphql-3"},[e("GraphQL "),s("a",{class:"header-anchor",href:"#graphql-3"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
37
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),e(` {
|
|
38
|
-
server_ping:`),s("span",{class:"hljs-type"}," String"),e(`
|
|
39
|
-
}
|
|
40
|
-
`)])]),s("h5",{id:"example-3"},[e("Example "),s("a",{class:"header-anchor",href:"#example-3"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),e(` {
|
|
41
|
-
server_ping
|
|
42
|
-
}
|
|
43
|
-
`)])])])],-1),G=s("hr",null,null,-1),I=s("h2",{id:"info"},[e("Info "),s("a",{class:"header-anchor",href:"#info"},"#")],-1),E=s("p",null,"Information about the current installation.",-1),R={class:"two-up"},L={class:"left"},Q=s("div",{class:"tip hint"},[s("div",{class:"hint-title"},"Permissions"),s("p",null,"The public information is returned for everybody. Admin users get additional information (see below).")],-1),O=s("h3",{id:"returns-4"},[e("Returns "),s("a",{class:"header-anchor",href:"#returns-4"},"#")],-1),D={class:"definitions"},C=s("p",null,[s("code",null,"project"),e(),s("strong",null,"object"),s("br"),e(" Public information about the project. Used to render the Admin App public pages.")],-1),H=e("See "),B=e("the settings object"),V=e(" for more information on the individual properties of the "),N=s("code",null,"project",-1),U=e(" object."),W=s("p",null,"Admin users also get the following information:",-1),z=s("div",{class:"definitions"},[s("p",null,[s("code",null,"directus.version"),e(),s("strong",null,"string"),s("br"),e(" Current version of Directus used.")]),s("p",null,[s("code",null,"node.version"),e(),s("strong",null,"string"),s("br"),e(" Current version of Node used.")]),s("p",null,[s("code",null,"node.uptime"),e(),s("strong",null,"integer"),s("br"),e(" How long the current process has been running.")]),s("p",null,[s("code",null,"os.type"),e(),s("strong",null,"string"),s("br"),e(" What type of operation system is used.")]),s("p",null,[s("code",null,"os.version"),e(),s("strong",null,"string"),s("br"),e(" What version of the operation system is used.")]),s("p",null,[s("code",null,"os.uptime"),e(),s("strong",null,"string"),s("br"),e(" How long the operating system has been up.")]),s("p",null,[s("code",null,"os.totalmem"),e(),s("strong",null,"string"),s("br"),e(" How much memory is available on the operating system.")])],-1),F=s("div",{class:"right"},[s("h3",{id:"rest-api-4"},[e("REST API "),s("a",{class:"header-anchor",href:"#rest-api-4"},"#")]),s("pre",null,[s("code",null,`GET /server/info
|
|
44
|
-
`)]),s("h3",{id:"graphql-4"},[e("GraphQL "),s("a",{class:"header-anchor",href:"#graphql-4"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
45
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),e(` {
|
|
46
|
-
server_info: server_info
|
|
47
|
-
}
|
|
48
|
-
`)])]),s("h5",{id:"example-4"},[e("Example "),s("a",{class:"header-anchor",href:"#example-4"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),e(` {
|
|
49
|
-
server_info {
|
|
50
|
-
directus {
|
|
51
|
-
version
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
`)])])],-1),J=s("hr",null,null,-1),K=s("h2",{id:"health"},[e("Health "),s("a",{class:"header-anchor",href:"#health"},"#")],-1),M=s("p",null,"Get the current health status of the server.",-1),X=s("div",{class:"two-up"},[s("div",{class:"left"},[s("p",null,[e("The "),s("code",null,"/server/health"),e(" endpoint shows you a general health status for the server and all connected (third party) services, such as Redis or S3.")]),s("p",null,[e("The output is based on the \u201CHealth Check Response for HTTP APIs\u201D draft spec: "),s("a",{href:"https://tools.ietf.org/id/draft-inadarei-api-health-check-05.html",target:"_blank",rel:"noopener noreferrer"},"Health Check Response Format for HTTP APIs Draft Specification"),e(".")]),s("p",null,"This endpoint can be used to ensure a healthy system when running in a horizontally scaled setup, like Kubernetes, Google Cloud Platform or AWS Elastic Beanstalk."),s("p",null,[e("By default, the endpoint only returns a "),s("code",null,"status"),e(" of "),s("code",null,"ok"),e(", "),s("code",null,"warn"),e(" or "),s("code",null,"error"),e(". By authenticating as an admin, it will return more in-depth information about the current health status of the system.")]),s("pre",null,[s("code",{class:"language-json"},[s("span",{class:"hljs-comment"},"// Response"),e(`
|
|
56
|
-
|
|
57
|
-
`),s("span",{class:"hljs-comment"},"// Non-admin"),e(`
|
|
58
|
-
{
|
|
59
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
`),s("span",{class:"hljs-comment"},"// Admin"),e(`
|
|
63
|
-
{
|
|
64
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
65
|
-
`),s("span",{class:"hljs-attr"},'"releaseId"'),e(": "),s("span",{class:"hljs-string"},'"9.0.0"'),e(`,
|
|
66
|
-
`),s("span",{class:"hljs-attr"},'"serviceId"'),e(": "),s("span",{class:"hljs-string"},'"3292c816-ae02-43b4-ba91-f0bb549f040c"'),e(`,
|
|
67
|
-
`),s("span",{class:"hljs-attr"},'"checks"'),e(`: {
|
|
68
|
-
`),s("span",{class:"hljs-attr"},'"pg:responseTime"'),e(`: [
|
|
69
|
-
{
|
|
70
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
71
|
-
`),s("span",{class:"hljs-attr"},'"componentType"'),e(": "),s("span",{class:"hljs-string"},'"datastore"'),e(`,
|
|
72
|
-
`),s("span",{class:"hljs-attr"},'"observedUnit"'),e(": "),s("span",{class:"hljs-string"},'"ms"'),e(`,
|
|
73
|
-
`),s("span",{class:"hljs-attr"},'"observedValue"'),e(": "),s("span",{class:"hljs-number"},"0.489"),e(`
|
|
74
|
-
}
|
|
75
|
-
],
|
|
76
|
-
`),s("span",{class:"hljs-attr"},'"pg:connectionsAvailable"'),e(`: [
|
|
77
|
-
{
|
|
78
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
79
|
-
`),s("span",{class:"hljs-attr"},'"componentType"'),e(": "),s("span",{class:"hljs-string"},'"datastore"'),e(`,
|
|
80
|
-
`),s("span",{class:"hljs-attr"},'"observedValue"'),e(": "),s("span",{class:"hljs-number"},"2"),e(`
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
`),s("span",{class:"hljs-attr"},'"pg:connectionsUsed"'),e(`: [
|
|
84
|
-
{
|
|
85
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
86
|
-
`),s("span",{class:"hljs-attr"},'"componentType"'),e(": "),s("span",{class:"hljs-string"},'"datastore"'),e(`,
|
|
87
|
-
`),s("span",{class:"hljs-attr"},'"observedValue"'),e(": "),s("span",{class:"hljs-number"},"0"),e(`
|
|
88
|
-
}
|
|
89
|
-
],
|
|
90
|
-
`),s("span",{class:"hljs-attr"},'"storage:local:responseTime"'),e(`: [
|
|
91
|
-
{
|
|
92
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
93
|
-
`),s("span",{class:"hljs-attr"},'"componentType"'),e(": "),s("span",{class:"hljs-string"},'"objectstore"'),e(`,
|
|
94
|
-
`),s("span",{class:"hljs-attr"},'"observedValue"'),e(": "),s("span",{class:"hljs-number"},"1.038"),e(`,
|
|
95
|
-
`),s("span",{class:"hljs-attr"},'"observedUnit"'),e(": "),s("span",{class:"hljs-string"},'"ms"'),e(`
|
|
96
|
-
}
|
|
97
|
-
],
|
|
98
|
-
`),s("span",{class:"hljs-attr"},'"email:connection"'),e(`: [
|
|
99
|
-
{
|
|
100
|
-
`),s("span",{class:"hljs-attr"},'"status"'),e(": "),s("span",{class:"hljs-string"},'"ok"'),e(`,
|
|
101
|
-
`),s("span",{class:"hljs-attr"},'"componentType"'),e(": "),s("span",{class:"hljs-string"},'"email"'),e(`
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
`)])]),s("h3",{id:"returns-5"},[e("Returns "),s("a",{class:"header-anchor",href:"#returns-5"},"#")]),s("div",{class:"definitions"},[s("p",null,[s("code",null,"status"),e(),s("strong",null,"string"),s("br"),e(" One of "),s("code",null,"ok"),e(", "),s("code",null,"warn"),e(", "),s("code",null,"error"),e(".")])]),s("p",null,"Authenticated admin users also get the following information:"),s("div",{class:"definitions"},[s("p",null,[s("code",null,"releaseId"),e(),s("strong",null,"string"),s("br"),e(" Directus version in use.")]),s("p",null,[s("code",null,"serviceId"),e(),s("strong",null,"string"),s("br"),e(" UUID of the current Directus instance.")]),s("p",null,[s("code",null,"checks"),e(),s("strong",null,"array"),s("br"),e(" Array with the status of all individually connected services.")])])]),s("div",{class:"right"},[s("h3",{id:"rest-api-5"},[e("REST API "),s("a",{class:"header-anchor",href:"#rest-api-5"},"#")]),s("pre",null,[s("code",null,`GET /server/health
|
|
107
|
-
`)]),s("h3",{id:"graphql-5"},[e("GraphQL "),s("a",{class:"header-anchor",href:"#graphql-5"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
108
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),e(` {
|
|
109
|
-
server_health:`),s("span",{class:"hljs-literal"}," JSON"),e(`
|
|
110
|
-
}
|
|
111
|
-
`)])]),s("h5",{id:"example-5"},[e("Example "),s("a",{class:"header-anchor",href:"#example-5"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),e(` {
|
|
112
|
-
server_health
|
|
113
|
-
}
|
|
114
|
-
`)])])])],-1),Y=s("hr",null,null,-1),ns="Server",ls=!1,as="page-reference",ts={name:"server",setup(Z,{expose:o}){const l={title:"Server",modularExtension:!1,pageClass:"page-reference"};return o({frontmatter:l}),($,ss)=>{const a=t("router-link"),c=t("docs-wrapper");return h(),i(c,{frontmatter:l},{default:n(()=>[s("div",p,[s("div",d,[s("div",u,[s("blockquote",null,[s("p",null,[g,r(a,{to:"/docs/getting-started/glossary/#projects"},{default:n(()=>[_]),_:1}),f])])]),m]),j,y,v,b,q,k,w,S,T,P,x,A,G,I,E,s("div",R,[s("div",L,[Q,O,s("div",D,[C,s("p",null,[H,r(a,{to:"/docs/reference/system/settings/#the-settings-object"},{default:n(()=>[B]),_:1}),V,N,U])]),W,z]),F]),J,K,M,X,Y])]),_:1})}}};export{ts as default,ls as modularExtension,as as pageClass,ns as title};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import{a as o,o as i,b as h,w as e,g as s,e as n,B as t}from"./runtime-core.esm-bundler.e6808e6c.js";const d={class:"markdown-body"},p=s("div",{class:"two-up"},[s("div",{class:"left"},[s("blockquote",null,[s("p",null,"Settings are key-value pairs that are stored in the database, and control different aspects of the project. Only administrators have access to manage Settings.")])]),s("div",{class:"right"},[s("p",null,[s("div",{class:"table-of-contents"},[s("ul",null,[s("li",null,[s("a",{href:"#the-settings-object"},"The Settings Object")]),s("li",null,[s("a",{href:"#retrieve-settings"},"Retrieve Settings")]),s("li",null,[s("a",{href:"#update-settings"},"Update Settings")])])])])])],-1),_=s("hr",null,null,-1),u=s("h2",{id:"the-settings-object"},[t("The Settings Object "),s("a",{class:"header-anchor",href:"#the-settings-object"},"#")],-1),g={class:"two-up"},f={class:"left"},j={class:"definitions"},m=s("p",null,[s("code",null,"id"),t(),s("strong",null,"uuid"),s("br"),t(" Primary key of the setting.")],-1),b=s("p",null,[s("code",null,"project_name"),t(),s("strong",null,"string"),s("br"),t(" Name of the project, shown in the Admin App.")],-1),y=s("p",null,[s("code",null,"project_descriptor"),t(),s("strong",null,"string"),s("br"),t(" Descriptor of the project, shown in the Admin App.")],-1),w=s("p",null,[s("code",null,"project_url"),t(),s("strong",null,"string"),s("br"),t(" Link to the (public) website that goes with this project.")],-1),v=s("p",null,[s("code",null,"project_color"),t(),s("strong",null,"string"),s("br"),t(" Brand color for the current project.")],-1),q=s("code",null,"project_logo",-1),x=t(),k=s("strong",null,"many-to-one",-1),A=s("br",null,null,-1),S=t(" Primary logo for the current project. Many-to-one to "),T=t("files"),E=t("."),P=s("code",null,"public_foreground",-1),R=t(),C=s("strong",null,"many-to-one",-1),B=s("br",null,null,-1),M=t(" Foreground image for the Admin App\u2019s public pages. Many-to-one to "),O=t("files"),N=t("."),Q=s("code",null,"public_background",-1),D=t(),G=s("strong",null,"many-to-one",-1),H=s("br",null,null,-1),I=t(" Background image for the Admin App\u2019s public pages. Many-to-one to "),L=t("files"),V=t("."),W=s("p",null,[s("code",null,"public_note"),t(),s("strong",null,"string"),s("br"),t(" Note shown on the Admin App\u2019s public pages. Supports Markdown.")],-1),F=s("p",null,[s("code",null,"auth_login_attempts"),t(),s("strong",null,"integer"),s("br"),t(" How often a user is allowed to try to login. After which times the user will be suspended.")],-1),U=s("p",null,[s("code",null,"auth_password_policy"),t(),s("strong",null,"RegEx"),s("br"),t(" What regex passwords must pass in order to be valid.")],-1),z=s("code",null,"storage_asset_transform",-1),J=t(),K=s("strong",null,"string",-1),X=s("br",null,null,-1),Y=t(" If the transform endpoints are allowed to be used on "),Z=t("the assets endpoint"),$=t(". One of "),ss=s("code",null,"all",-1),ts=t(", "),es=s("code",null,"none",-1),ls=t(" or "),ns=s("code",null,"presets",-1),as=t("."),os=s("code",null,"storage_asset_presets",-1),rs=t(),cs=s("strong",null,"array",-1),is=s("br",null,null,-1),hs=t(" What preset keys exist in "),ds=t("the assets endpoint"),ps=t("."),_s=s("p",null,[s("code",null,"custom_css"),t(),s("strong",null,"string"),s("br"),t(" CSS rules to override the App\u2019s default styling.")],-1),us=s("p",null,[s("code",null,"storage_default_folder"),t(),s("strong",null,"uuid"),s("br"),t(" Folder for uploaded files. Does not affect existing files.")],-1),gs=s("p",null,[s("code",null,"basemaps"),t(),s("strong",null,"array"),s("br"),t(" Custom tiles to overriding the Mapbox defaults.")],-1),fs=s("p",null,[s("code",null,"mapbox_key"),t(),s("strong",null,"string"),s("br"),s("a",{href:"https://docs.mapbox.com/help/glossary/access-token/",target:"_blank",rel:"noopener noreferrer"},"Mapbox Access Token"),t(".")],-1),js=s("p",null,[s("code",null,"module_bar"),t(),s("strong",null,"array"),s("br"),t(" What modules are enabled/added globally.")],-1),ms=s("div",{class:"right"},[s("pre",null,[s("code",{class:"language-json"},[t(`{
|
|
2
|
-
`),s("span",{class:"hljs-attr"},'"data"'),t(`: {
|
|
3
|
-
`),s("span",{class:"hljs-attr"},'"id"'),t(": "),s("span",{class:"hljs-number"},"1"),t(`,
|
|
4
|
-
`),s("span",{class:"hljs-attr"},'"project_name"'),t(": "),s("span",{class:"hljs-string"},'"Directus"'),t(`,
|
|
5
|
-
`),s("span",{class:"hljs-attr"},'"project_descriptor"'),t(": "),s("span",{class:"hljs-string"},'"Application"'),t(`,
|
|
6
|
-
`),s("span",{class:"hljs-attr"},'"project_url"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
7
|
-
`),s("span",{class:"hljs-attr"},'"project_color"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
8
|
-
`),s("span",{class:"hljs-attr"},'"project_logo"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
9
|
-
`),s("span",{class:"hljs-attr"},'"public_foreground"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
10
|
-
`),s("span",{class:"hljs-attr"},'"public_background"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
11
|
-
`),s("span",{class:"hljs-attr"},'"public_note"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
12
|
-
`),s("span",{class:"hljs-attr"},'"auth_login_attempts"'),t(": "),s("span",{class:"hljs-number"},"25"),t(`,
|
|
13
|
-
`),s("span",{class:"hljs-attr"},'"auth_password_policy"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
14
|
-
`),s("span",{class:"hljs-attr"},'"storage_asset_transform"'),t(": "),s("span",{class:"hljs-string"},'"all"'),t(`,
|
|
15
|
-
`),s("span",{class:"hljs-attr"},'"storage_asset_presets"'),t(`: [
|
|
16
|
-
{ `),s("span",{class:"hljs-attr"},'"key"'),t(": "),s("span",{class:"hljs-string"},'"small"'),t(", "),s("span",{class:"hljs-attr"},'"fit"'),t(": "),s("span",{class:"hljs-string"},'"cover"'),t(", "),s("span",{class:"hljs-attr"},'"width"'),t(": "),s("span",{class:"hljs-number"},"200"),t(", "),s("span",{class:"hljs-attr"},'"height"'),t(": "),s("span",{class:"hljs-number"},"161"),t(", "),s("span",{class:"hljs-attr"},'"quality"'),t(": "),s("span",{class:"hljs-number"},"80"),t(", "),s("span",{class:"hljs-attr"},'"withoutEnlargement"'),t(": "),s("span",{class:"hljs-literal"},"false"),t(` }
|
|
17
|
-
],
|
|
18
|
-
`),s("span",{class:"hljs-attr"},'"custom_css"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
19
|
-
`),s("span",{class:"hljs-attr"},'"storage_default_folder"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
20
|
-
`),s("span",{class:"hljs-attr"},'"basemaps"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
21
|
-
`),s("span",{class:"hljs-attr"},'"mapbox_key"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`,
|
|
22
|
-
`),s("span",{class:"hljs-attr"},'"module_bar"'),t(": "),s("span",{class:"hljs-literal"},"null"),t(`
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`)])])],-1),bs=s("hr",null,null,-1),ys=s("h2",{id:"retrieve-settings"},[t("Retrieve Settings "),s("a",{class:"header-anchor",href:"#retrieve-settings"},"#")],-1),ws={class:"two-up"},vs={class:"left"},qs=s("h3",{id:"query-parameters"},[t("Query Parameters "),s("a",{class:"header-anchor",href:"#query-parameters"},"#")],-1),xs=t("Supports all "),ks=t("global query parameters"),As=t("."),Ss=s("h3",{id:"returns"},[t("Returns "),s("a",{class:"header-anchor",href:"#returns"},"#")],-1),Ts=s("p",null,[t("Returns the "),s("a",{href:"#the-settings-object"},"settings object"),t(".")],-1),Es=s("div",{class:"right"},[s("h3",{id:"rest-api"},[t("REST API "),s("a",{class:"header-anchor",href:"#rest-api"},"#")]),s("pre",null,[s("code",null,`GET /settings
|
|
26
|
-
`)]),s("h3",{id:"graphql"},[t("GraphQL "),s("a",{class:"header-anchor",href:"#graphql"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
27
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Query"),t(` {
|
|
28
|
-
settings: directus_settings
|
|
29
|
-
}
|
|
30
|
-
`)])]),s("h5",{id:"example"},[t("Example "),s("a",{class:"header-anchor",href:"#example"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"query"),t(` {
|
|
31
|
-
settings {
|
|
32
|
-
project_name
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
`)])])],-1),Ps=s("hr",null,null,-1),Rs=s("h2",{id:"update-settings"},[t("Update Settings "),s("a",{class:"header-anchor",href:"#update-settings"},"#")],-1),Cs={class:"two-up"},Bs={class:"left"},Ms=s("h3",{id:"query-parameters-2"},[t("Query Parameters "),s("a",{class:"header-anchor",href:"#query-parameters-2"},"#")],-1),Os=t("Supports all "),Ns=t("global query parameters"),Qs=t("."),Ds=s("h3",{id:"request-body"},[t("Request Body "),s("a",{class:"header-anchor",href:"#request-body"},"#")],-1),Gs=s("p",null,[t("A partial "),s("a",{href:"#the-settings-object"},"settings object"),t(".")],-1),Hs=s("h3",{id:"returns-2"},[t("Returns "),s("a",{class:"header-anchor",href:"#returns-2"},"#")],-1),Is=s("p",null,[t("Returns the "),s("a",{href:"#the-setting-object"},"settings object"),t(".")],-1),Ls=s("div",{class:"right"},[s("h3",{id:"rest-api-2"},[t("REST API "),s("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),s("pre",null,[s("code",null,`PATCH /settings
|
|
36
|
-
`)]),s("h5",{id:"example-2"},[t("Example "),s("a",{class:"header-anchor",href:"#example-2"},"#")]),s("pre",null,[s("code",{class:"language-json"},[s("span",{class:"hljs-comment"},"// PATCH /settings"),t(`
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
`),s("span",{class:"hljs-attr"},'"project_url"'),t(": "),s("span",{class:"hljs-string"},'"https://example.com/"'),t(`
|
|
40
|
-
}
|
|
41
|
-
`)])]),s("h3",{id:"graphql-2"},[t("GraphQL "),s("a",{class:"header-anchor",href:"#graphql-2"},"#")]),s("pre",null,[s("code",null,`POST /graphql/system
|
|
42
|
-
`)]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"type"),s("span",{class:"hljs-type"}," Mutation"),t(` {
|
|
43
|
-
update_settings(data: update_directus_settings_input!): directus_settings
|
|
44
|
-
}
|
|
45
|
-
`)])]),s("h5",{id:"example-3"},[t("Example "),s("a",{class:"header-anchor",href:"#example-3"},"#")]),s("pre",null,[s("code",{class:"language-graphql"},[s("span",{class:"hljs-keyword"},"mutation"),t(` {
|
|
46
|
-
update_settings(data: { project_url: `),s("span",{class:"hljs-string"},'"https://example.com"'),t(` }) {
|
|
47
|
-
project_name
|
|
48
|
-
project_url
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
`)])])],-1),zs="Settings",Js=!1,Ks="page-reference",Xs={name:"settings",setup(Vs,{expose:r}){const a={title:"Settings",modularExtension:!1,pageClass:"page-reference"};return r({frontmatter:a}),(Ws,Fs)=>{const l=o("router-link"),c=o("docs-wrapper");return i(),h(c,{frontmatter:a},{default:e(()=>[s("div",d,[p,_,u,s("div",g,[s("div",f,[s("div",j,[m,b,y,w,v,s("p",null,[q,x,k,A,S,n(l,{to:"/docs/reference/files/"},{default:e(()=>[T]),_:1}),E]),s("p",null,[P,R,C,B,M,n(l,{to:"/docs/reference/files/"},{default:e(()=>[O]),_:1}),N]),s("p",null,[Q,D,G,H,I,n(l,{to:"/docs/reference/files/"},{default:e(()=>[L]),_:1}),V]),W,F,U,s("p",null,[z,J,K,X,Y,n(l,{to:"/docs/reference/files/#requesting-a-thumbnail"},{default:e(()=>[Z]),_:1}),$,ss,ts,es,ls,ns,as]),s("p",null,[os,rs,cs,is,hs,n(l,{to:"/docs/reference/files/#requesting-a-thumbnail"},{default:e(()=>[ds]),_:1}),ps]),_s,us,gs,fs,js])]),ms]),bs,ys,s("div",ws,[s("div",vs,[qs,s("p",null,[xs,n(l,{to:"/docs/reference/query"},{default:e(()=>[ks]),_:1}),As]),Ss,Ts]),Es]),Ps,Rs,s("div",Cs,[s("div",Bs,[Ms,s("p",null,[Os,n(l,{to:"/docs/reference/query"},{default:e(()=>[Ns]),_:1}),Qs]),Ds,Gs,Hs,Is]),Ls])])]),_:1})}}};export{Xs as default,Js as modularExtension,Ks as pageClass,zs as title};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import{a as l,o as i,b as c,w as n,g as e,e as u,B as s}from"./runtime-core.esm-bundler.e6808e6c.js";const h={class:"markdown-body"},d=e("p",null,"Single Sign-On is a mechanism which allows to use external providers to login into systems. For example, you can use your Google or Facebook account to authenticate into systems without the need to create a new registration on those systems.",-1),p=e("h2",{id:"supported-sso-mechanisms"},[s("Supported SSO mechanisms "),e("a",{class:"header-anchor",href:"#supported-sso-mechanisms"},"#")],-1),g=e("p",null,"Directus supports three standard types of SSO mechanisms:",-1),m=e("ul",null,[e("li",null,[e("a",{href:"https://openid.net/specs/openid-connect-core-1_0.html",target:"_blank",rel:"noopener noreferrer"},"OpenID")]),e("li",null,[e("a",{href:"https://www.ietf.org/rfc/rfc6750.txt",target:"_blank",rel:"noopener noreferrer"},"OAuth 2.0")]),e("li",null,[e("a",{href:"https://datatracker.ietf.org/doc/html/rfc4511",target:"_blank",rel:"noopener noreferrer"},"LDAP")])],-1),_=s("Here are the configuration allowed for each one: "),f=s("SSO configuration"),y=e("p",null,"In order to use these mechanisms you need to:",-1),O=e("ol",null,[e("li",null,"Create an application/configuration on your preferred external provider"),e("li",null,"Set the environment variables to configure the external provider"),e("li",null,[s("["),e("em",null,"Optional"),s("] Set the environment variables to configure cookies")])],-1),S=e("h3",{id:"openid"},[s("OpenID "),e("a",{class:"header-anchor",href:"#openid"},"#")],-1),X=e("p",null,"In this section, we provide some guides to help you set up SSO with OpenID.",-1),w=e("h4",{id:"google"},[s("Google "),e("a",{class:"header-anchor",href:"#google"},"#")],-1),E=e("p",null,"To be able to use Google OpenID as your external provider you will need to:",-1),b=e("ol",null,[e("li",null,[e("p",null,[s("Go into "),e("a",{href:"https://console.cloud.google.com/",target:"_blank",rel:"noopener noreferrer"},"Google Cloud Console")])]),e("li",null,[e("p",null,"Select or Create a new project")]),e("li",null,[e("p",null,[s("Go to "),e("a",{href:"https://console.cloud.google.com/apis/credentials/consent",target:"_blank",rel:"noopener noreferrer"},"APIs & Services -> OAuth consent screen"),s(" on side bar")]),e("ol",null,[e("li",null,[s("Select the access you desire "),e("ul",null,[e("li",null,[s("Select "),e("strong",null,"Internal"),s(" if you only want people within your organization to be able to access")]),e("li",null,[s("Select "),e("strong",null,"External"),s(" to allow everyone with a Google account")])])]),e("li",null,[s("Fill the fields according to your preferences "),e("ul",null,[e("li",null,[s("The "),e("strong",null,"Authorized domains"),s(" add an extra layer of security, but it is not required. In case you fill it, should be the domain where your Directus instance is")])])]),e("li",null,[s("On Scopes, you need to choose "),e("code",null,".../auth/userinfo.email"),s(", "),e("code",null,".../auth/userinfo.profile"),s(" and "),e("code",null,"openid")])])]),e("li",null,[e("p",null,[s("On side bar, go to "),e("a",{href:"https://console.cloud.google.com/apis/credentials",target:"_blank",rel:"noopener noreferrer"},"Credentials")])]),e("li",null,[e("p",null,[s("Click on "),e("a",{href:"https://console.cloud.google.com/apis/credentials/oauthclient",target:"_blank",rel:"noopener noreferrer"},"Create Credentials -> OAuth Client ID")]),e("ol",null,[e("li",null,[s("Choose "),e("code",null,"Web Application"),s(" on "),e("strong",null,"Application Type")]),e("li",null,[s("The "),e("strong",null,"Authorized JavaScript origins"),s(" adds an extra layer of security, but it is not required. In case you fill it, should be the address of your Directus instance. For example, "),e("code",null,"https://directus.myserver.com")]),e("li",null,[s("On "),e("strong",null,"Authorized redirect URIs"),s(" put your Directus instance address plus "),e("code",null,"/auth/login/google/callback"),s(". For example, you should put "),e("code",null,"https://directus.myserver.com/auth/login/google/callback"),s(" where "),e("code",null,"https://directus.myserver.com"),s(" should be the address of your Directus instance. If you are testing locally you should add "),e("code",null,"http://localhost:8055/auth/login/google/callback"),s(" too")])])]),e("li",null,[e("p",null,[s("On click "),e("strong",null,"Create"),s(", a modal will appear with "),e("strong",null,"Client ID"),s(" and "),e("strong",null,"Client Secret"),s(". Save both somewhere to use later.")])]),e("li",null,[e("p",null,[s("Now on Directus side, you need to add the following configuration to your "),e("code",null,".env"),s(" file located on root folder of your project:")])])],-1),v=e("pre",null,[e("code",{class:"language-sh"},[s("AUTH_PROVIDERS="),e("span",{class:"hljs-string"},'"google"'),s(`
|
|
2
|
-
|
|
3
|
-
AUTH_GOOGLE_DRIVER=`),e("span",{class:"hljs-string"},'"openid"'),s(`
|
|
4
|
-
AUTH_GOOGLE_CLIENT_ID=`),e("span",{class:"hljs-string"},'"XXXX"'),s(),e("span",{class:"hljs-comment"},"# Replace XXXX with the Client ID from Step 6"),s(`
|
|
5
|
-
AUTH_GOOGLE_CLIENT_SECRET=`),e("span",{class:"hljs-string"},'"XXXX"'),s(),e("span",{class:"hljs-comment"},"# Replace XXXX with the Client Secret from Step 6"),s(`
|
|
6
|
-
AUTH_GOOGLE_ISSUER_URL=`),e("span",{class:"hljs-string"},'"https://accounts.google.com"'),s(`
|
|
7
|
-
AUTH_GOOGLE_IDENTIFIER_KEY=`),e("span",{class:"hljs-string"},'"email"'),s(`
|
|
8
|
-
AUTH_GOOGLE_ICON=`),e("span",{class:"hljs-string"},'"google"'),s(`
|
|
9
|
-
AUTH_GOOGLE_ALLOW_PUBLIC_REGISTRATION=`),e("span",{class:"hljs-string"},'"true"'),s(),e("span",{class:"hljs-comment"},'# This allows users to be automatically created on logins. Use "false" if you want to create users manually'),s(`
|
|
10
|
-
AUTH_GOOGLE_DEFAULT_ROLE_ID=`),e("span",{class:"hljs-string"},'"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"'),s(),e("span",{class:"hljs-comment"},"# Replace this with the Directus Role ID you would want for new users. If this is not properly configured, new users will not have access to Directus"),s(`
|
|
11
|
-
`)])],-1),I=e("ol",{start:"8"},[e("li",null,[s("Now you can see a nice functional "),e("code",null,"Login with Google"),s(" button on Directus login page.")])],-1),j=e("h2",{id:"seamless-sso"},[s("Seamless SSO "),e("a",{class:"header-anchor",href:"#seamless-sso"},"#")],-1),k=e("p",null,"While sometimes you want your users to directly have access to the Directus Application, in other cases you may need to fetch private data from Directus in your client using external providers. In this cases, it is needed a special configuration to work across domains, but is simple as:",-1),D=e("ol",null,[e("li",null,[s("Setup an external provider. You have some examples on "),e("a",{href:"#supported-sso-mechanisms"},"Supported SSO mechanisms")]),e("li",null,[s("Allow cookie to be accessible across domains. Put the following configuration on "),e("code",null,".env"),s(":")])],-1),T=e("pre",null,[e("code",{class:"language-sh"},[s("REFRESH_TOKEN_COOKIE_DOMAIN="),e("span",{class:"hljs-string"},'"XXXX"'),s(),e("span",{class:"hljs-comment"},'# Replace XXXX with the domain of your Directus instance. For example "directus.myserver.com"'),s(`
|
|
12
|
-
REFRESH_TOKEN_COOKIE_SECURE=`),e("span",{class:"hljs-string"},'"true"'),s(`
|
|
13
|
-
REFRESH_TOKEN_COOKIE_SAME_SITE=`),e("span",{class:"hljs-string"},'"None"'),s(`
|
|
14
|
-
`)])],-1),A=e("ol",{start:"2"},[e("li",null,"On your client, your login button should be something like")],-1),C=e("pre",null,[e("code",{class:"language-html"},[e("span",{class:"hljs-tag"},[s("<"),e("span",{class:"hljs-name"},"a"),s(),e("span",{class:"hljs-attr"},"href"),s("="),e("span",{class:"hljs-string"},'"https://directus.myserver.com/auth/login/google?redirect=https://client.myserver.com/login"'),s(">")]),s("Login"),e("span",{class:"hljs-tag"},[s("</"),e("span",{class:"hljs-name"},"a"),s(">")]),s(`
|
|
15
|
-
`)])],-1),R=e("ul",null,[e("li",null,[s("Where "),e("code",null,"https://directus.myserver.com"),s(" should be the address of your Directus instance")]),e("li",null,[s("While "),e("code",null,"https://client.myserver.com/login"),s(" should be the address of your client application. The "),e("code",null,"/login"),s(" is not necessary, but helps to separate concerns")])],-1),G=e("ol",{start:"3"},[e("li",null,[e("p",null,[s("On your login page, following the example should be "),e("code",null,"https://client.myserver.com/login"),s(" you need to call the refresh endpoint either via REST API or via SDK in order to retrieve an "),e("code",null,"access_token")]),e("ul",null,[e("li",null,[e("p",null,"via REST API / fetch"),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"await"),s(" fetch("),e("span",{class:"hljs-string"},"'https://directus.myserver.com/auth/refresh'"),s(`, {
|
|
16
|
-
`),e("span",{class:"hljs-attr"},"method"),s(": "),e("span",{class:"hljs-string"},"'POST'"),s(`,
|
|
17
|
-
`),e("span",{class:"hljs-attr"},"credentials"),s(": "),e("span",{class:"hljs-string"},"'include'"),s(", "),e("span",{class:"hljs-comment"},"// this is required in order to send the refresh token cookie"),s(`
|
|
18
|
-
});
|
|
19
|
-
`)])])]),e("li",null,[e("p",null,"via SDK"),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"const"),s(" sdk = "),e("span",{class:"hljs-keyword"},"new"),s(" Directus("),e("span",{class:"hljs-string"},"'https://directus.myserver.com'"),s(`);
|
|
20
|
-
|
|
21
|
-
`),e("span",{class:"hljs-keyword"},"await"),s(` sdk.auth.refresh();
|
|
22
|
-
`)])])])])])],-1),H="Single Sign-On (SSO)",F=!1,K={name:"sso",setup(x,{expose:t}){const o={title:"Single Sign-On (SSO)",modularExtension:!1};return t({frontmatter:o}),(L,U)=>{const r=l("router-link"),a=l("docs-wrapper");return i(),c(a,{frontmatter:o},{default:n(()=>[e("div",h,[d,p,g,m,e("p",null,[_,u(r,{to:"/docs/self-hosted/config-options/#sso-oauth2-and-openid"},{default:n(()=>[f]),_:1})]),y,O,S,X,w,E,b,v,I,j,k,D,T,A,C,R,G])]),_:1})}}};export{K as default,F as modularExtension,H as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as i,o as l,b as c,w as o,g as e,e as r,B as t}from"./runtime-core.esm-bundler.e6808e6c.js";const d={class:"markdown-body"},h=e("blockquote",null,[e("p",null,"Directus is offered completely free and open-source for anyone wishing to self-host the platform. If you have questions along the way, there are many resources, both free and paid, to help you get up-and-running smoothly.")],-1),p=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#troubleshooting-steps"},"Troubleshooting Steps")]),e("li",null,[e("a",{href:"#support-tiers"},"Support Tiers")]),e("li",null,[e("a",{href:"#sponsored-work"},"Sponsored Work")]),e("li",null,[e("a",{href:"#frequently-asked-questions"},"Frequently Asked Questions")])])])],-1),f=e("h2",{id:"troubleshooting-steps"},[t("Troubleshooting Steps "),e("a",{class:"header-anchor",href:"#troubleshooting-steps"},"#")],-1),m=t("If you\u2019re experiencing issues or think you have found a problem in Directus, be sure to follow these steps before "),_=t("Reporting a Bug"),y=t(":"),g=t("Ensure your server and database meet the "),b=t("minimum requirements"),w=t("."),k=e("li",null,[t("Ensure you\u2019re on the "),e("a",{href:"https://github.com/directus/directus/releases/latest",target:"_blank",rel:"noopener noreferrer"},"latest version"),t(" of Directus.")],-1),v=e("li",null,[t("Stop "),e("code",null,"CTRL+C"),t(" and restart the server "),e("code",null,"npx directus start"),t(".")],-1),x=e("li",null,[t("Run the database migration script: "),e("code",null,"directus database migrate:latest"),e("br"),e("em",null,"Note: backup your database first.")],-1),q=e("li",null,"Disable any data-caching within your project.",-1),C=e("li",null,[t("Test any app issues with both browser extensions and caching disabled "),e("em",null,"(i.e. Incognito Mode)"),t(".")],-1),S=e("li",null,"Confirm the issue is not related to your own custom code.",-1),D=e("li",null,[t("Check for "),e("a",{href:"https://github.com/directus/directus/issues?q=is%3Aissue",target:"_blank",rel:"noopener noreferrer"},"existing Issues"),t(" (and "),e("a",{href:"https://github.com/directus/directus/discussions",target:"_blank",rel:"noopener noreferrer"},"Discussions"),t(") that match your problem.")],-1),F=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Source Contributors"),e("p",null,[t("If you have installed from source, then you should also remove all dependencies by running "),e("code",null,"npx lerna clean -y"),t(" and reinstall them with "),e("code",null,"npm install")])],-1),I=t("If you\u2019re still experiencing a problem after completing the above steps, you can chat through things on our "),T=e("a",{href:"#community-support"},"community support",-1),B=t(" or "),E=t("report a bug"),j=t("."),W=e("h2",{id:"support-tiers"},[t("Support Tiers "),e("a",{class:"header-anchor",href:"#support-tiers"},"#")],-1),N=e("h3",{id:"community-support"},[t("Community Support "),e("a",{class:"header-anchor",href:"#community-support"},"#")],-1),O=e("p",null,[e("a",{href:"https://github.com/directus/directus/discussions",target:"_blank",rel:"noopener noreferrer"},"GitHub Discussions"),t(" is a great first place to reach out for help. Our community and core developers often check this platform and answer posts. It has the added benefit of being an archival resource for others developers with similar questions.")],-1),R=e("p",null,[t("Our "),e("a",{href:"https://directus.chat",target:"_blank",rel:"noopener noreferrer"},"Discord Community"),t(" is another great way to get assistance. Please keep all questions on the "),e("code",null,"#help"),t(" channel, be considerate, and remember that you are getting free help from the community for a free product.")],-1),z=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"No Guaranteed Response Time"),e("p",null,"While the Directus Core Team plays an active and engaged role in community discussions, there is no guaranteed response time for Community Support.")],-1),M=e("h3",{id:"basic-and-premium-support"},[t("Basic and Premium Support "),e("a",{class:"header-anchor",href:"#basic-and-premium-support"},"#")],-1),P=e("p",null,"Basic and Premium Support offer direct communication with the Directus Core Team. Basic support is included on all Enterprise Projects, and Premium Support adds 24/7 response times for critical software issues only.",-1),A=t("Cloud customers and Self-Hosted users interested in learning more about our monthly retainer agreements should contact us at "),H=t("support@directus.io"),Q=t("."),V=e("h2",{id:"sponsored-work"},[t("Sponsored Work "),e("a",{class:"header-anchor",href:"#sponsored-work"},"#")],-1),G=e("h3",{id:"commissioned-features"},[t("Commissioned Features "),e("a",{class:"header-anchor",href:"#commissioned-features"},"#")],-1),L=t("If you need a specific feature added to Directus faster than the normal development timeline, "),Y=e("a",{href:"https://directus.io/contact/",target:"_blank",rel:"noopener noreferrer"},"reach out to us",-1),J=t(" for a quote. Our parent agency will often help subsidize the cost of developing new features if they pass our "),K=t("80/20 Rule"),U=t(" and can be merged into the core codebase. Other custom/proprietary development will be built bespoke within our robust extension system."),X=e("h3",{id:"expedited-fixes"},[t("Expedited Fixes "),e("a",{class:"header-anchor",href:"#expedited-fixes"},"#")],-1),Z=e("p",null,[t("We triage all reported bugs based on priority and how long the fix is estimated to take. If you need a specific issue resolved sooner, "),e("a",{href:"https://directus.io/contact/",target:"_blank",rel:"noopener noreferrer"},"reach out to us"),t(" for a quote.")],-1),$=e("h2",{id:"frequently-asked-questions"},[t("Frequently Asked Questions "),e("a",{class:"header-anchor",href:"#frequently-asked-questions"},"#")],-1),ee=e("h3",{id:"does-directus-support-mongo%2Fnosql%3F"},[t("Does Directus support Mongo/NoSQL? "),e("a",{class:"header-anchor",href:"#does-directus-support-mongo%2Fnosql%3F"},"#")],-1),te=e("p",null,[t("Not currently. Directus has been built specifically for wrapping "),e("em",null,"relational"),t(" databases. While we could force Mongo to use tables, columns, and rows via Mongoose object modeling, that approach of \u201Cfaking\u201D a relational structure in a non-structured environment like Mongo doesn\u2019t make a lot of sense. We do realize many users are interested in this feature, and will continue to explore its possibility.")],-1),oe=e("h3",{id:"why-haven%E2%80%99t-you-added-this-feature%2C-or-fixed-that-issue-yet%3F"},[t("Why haven\u2019t you added this feature, or fixed that issue yet? "),e("a",{class:"header-anchor",href:"#why-haven%E2%80%99t-you-added-this-feature%2C-or-fixed-that-issue-yet%3F"},"#")],-1),se=e("p",null,"Directus is primarily a free and open-source project, maintained by a small core team and community contributors who donate their time and resources.",-1),re=t("Our platform is feature-rich, however we strictly adhere to our "),ne=t("80/20 Rule"),ie=t(" to avoid a messy/bloated codebase. Directus is also quite stable, however new issues still arise, some of which may be triaged with a lower prioritization."),ae=e("p",null,[t("If you need, you can contact us about "),e("a",{href:"#expedited-fixes"},"sponsoring expedited fixes"),t(" or "),e("a",{href:"#commissioned-features"},"commissioning new features"),t(". You can also "),e("a",{href:"https://github.com/directus/directus/pulls",target:"_blank",rel:"noopener noreferrer"},"submit a pull request"),t(" \u2014 after all, it is open-source!")],-1),ue=e("h3",{id:"can-you-give-an-eta-for-this-feature%2Ffix%3F"},[t("Can you give an ETA for this feature/fix? "),e("a",{class:"header-anchor",href:"#can-you-give-an-eta-for-this-feature%2Ffix%3F"},"#")],-1),le=e("p",null,"If it is sponsored work, then yes, delivery dates are part of our statement of work agreements. Otherwise, most likely not. This is open-source software, work is prioritized internally, and all timelines are subject to change.",-1),ce=e("h3",{id:"but-this-is-an-emergency%2C-my-very-important-project-requires-it-now!"},[t("But this is an emergency, my very important project requires it now! "),e("a",{class:"header-anchor",href:"#but-this-is-an-emergency%2C-my-very-important-project-requires-it-now!"},"#")],-1),de=e("p",null,[t("We understand, and are here to help. If you need something prioritized, you can reach out to us to discuss "),e("a",{href:"#basic-and-premium-support"},"premium support"),t(", "),e("a",{href:"#expedited-fixes"},"sponsoring expedited fixes"),t(" or "),e("a",{href:"#commissioned-features"},"commissioning new features"),t(".")],-1),_e="Help & Support",ye=!1,ge={name:"support",setup(he,{expose:a}){const n={title:"Help & Support",modularExtension:!1};return a({frontmatter:n}),(pe,fe)=>{const s=i("router-link"),u=i("docs-wrapper");return l(),c(u,{frontmatter:n},{default:o(()=>[e("div",d,[h,p,f,e("p",null,[m,r(s,{to:"/docs/contributing/introduction/#bug-reporting"},{default:o(()=>[_]),_:1}),y]),e("ol",null,[e("li",null,[g,r(s,{to:"/docs/self-hosted/installation/cli/#_1-confirm-minimum-requirements"},{default:o(()=>[b]),_:1}),w]),k,v,x,q,C,S,D]),F,e("p",null,[I,T,B,r(s,{to:"/docs/contributing/introduction/#bug-reporting"},{default:o(()=>[E]),_:1}),j]),W,N,O,R,z,M,P,e("p",null,[A,r(s,{to:"/docsmailto:support@directus.io"},{default:o(()=>[H]),_:1}),Q]),V,G,e("p",null,[L,Y,J,r(s,{to:"/docs/contributing/introduction/#feature-requests"},{default:o(()=>[K]),_:1}),U]),X,Z,$,ee,te,oe,se,e("p",null,[re,r(s,{to:"/docs/contributing/introduction/#feature-requests"},{default:o(()=>[ne]),_:1}),ie]),ae,ue,le,ce,de])]),_:1})}}};export{ge as default,ye as modularExtension,_e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as s,o as d,b as c,w as o,g as e,e as n,B as t}from"./runtime-core.esm-bundler.e6808e6c.js";const h={class:"markdown-body"},u=e("blockquote",null,[e("p",null,"A Team is an organizational system that groups Accounts together as Team Members and provides consolidated billing on its nested Projects.")],-1),m=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#create-a-team"},"Create a Team")]),e("li",null,[e("a",{href:"#update-team-settings"},"Update Team Settings")]),e("li",null,[e("a",{href:"#view-team-activity"},"View Team Activity")]),e("li",null,[e("a",{href:"#view-billing-details"},"View Billing Details")]),e("li",null,[e("a",{href:"#manage-billing"},"Manage Billing")]),e("li",null,[e("a",{href:"#invite-team-members"},"Invite Team Members")]),e("li",null,[e("a",{href:"#manage-team-members"},"Manage Team Members")]),e("li",null,[e("a",{href:"#destroy-a-team"},"Destroy a Team")])])])],-1),p=e("p",null,"Teams within the Cloud Dashboard allow individuals to separate or consolidate Projects and payment methods, as well as manage Projects independently or with other Team Members.",-1),g=e("p",null,"For example, a company can use Teams to organize Projects by department, each with consolidated billing and scoped access. Similarly, agencies or freelancers with multiple customers can create a Team per client to limit their access and isolate billing. Teams are free, so create as many as you need to appropriately organize Team Members, Projects and payment methods.",-1),_=t("See the "),b=t("Overview"),y=t(" to learn how Accounts, Teams and Projects interrelate."),v=e("h2",{id:"create-a-team"},[t("Create a Team "),e("a",{class:"header-anchor",href:"#create-a-team"},"#")],-1),T=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/create-a-team-20220329A.webp",alt:"Create Team"})],-1),f=e("p",null,"To create a Team:",-1),w=e("ol",null,[e("li",null,[t("Open the Team Menu in the Dashboard Header and click "),e("strong",null,[t("\u201CCreate a Team "),e("span",{mi:"",icon:"",prmry:""},"add"),t("\u201D")]),t("."),e("br"),t(" The Create Team page will open.")]),e("li",null,[t("Enter a Team Name and Team Slug, then click "),e("strong",null,"\u201CSave\u201D"),t(".")])],-1),P=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Team Name and Team Slug"),e("p",null,[t("The Team Name is a text name assigned to a Team, used in the Cloud Dashboard. The Team slug lies within the full URL "),e("code",null,"https://directus.cloud/TEAM-SLUG/projects"),t(". These are purely organizational, allowing you to easily remember the Team and link to specific Cloud Dashboards. They do not impact Cloud Projects or billing and can be "),e("a",{href:"#update-team-settings"},"updated at any time"),t(".")])],-1),A=e("h2",{id:"update-team-settings"},[t("Update Team Settings "),e("a",{class:"header-anchor",href:"#update-team-settings"},"#")],-1),N=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/managing-a-team-20220225A.webp",alt:"Managing a Team"})],-1),j=e("p",null,"To update Team Settings:",-1),M=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CSettings\u201D"),t(" to enter the Team Settings page.")]),e("li",null,[t("Toggle "),e("span",{mi:"",icon:"",prmry:""},"edit"),t(" to allow edits.")]),e("li",null,"Edit Team Name and Team Slug as desired."),e("li",null,[t("Click the "),e("strong",null,"\u201CSave\u201D"),t(" button.")])],-1),S=e("h2",{id:"view-team-activity"},[t("View Team Activity "),e("a",{class:"header-anchor",href:"#view-team-activity"},"#")],-1),k=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/view-team-activity-20220322A.webp",alt:"View Team Activity"})],-1),C=e("p",null,"The Team Activity Page displays billing information changes, created and destroyed Projects, Team Members added or removed, Team Name and Team Slug changes, and any other major Team-oriented activities. To view Team Activity:",-1),x=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CActivity\u201D"),t(".")])],-1),D=e("h2",{id:"view-billing-details"},[t("View Billing Details "),e("a",{class:"header-anchor",href:"#view-billing-details"},"#")],-1),B=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/view-billing-details-20220322A.webp",alt:"View Billing Details"})],-1),$=e("p",null,"Follow these steps to see billing details such as credit available to Team Projects, total active subscriptions and invoice receipts:",-1),I=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CBilling\u201D"),t(" to enter the Billing Details Page.")])],-1),V=e("h2",{id:"manage-billing"},[t("Manage Billing "),e("a",{class:"header-anchor",href:"#manage-billing"},"#")],-1),O=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/manage-billing-20220322A.webp",alt:"Manage Billing"})],-1),z=e("p",null,"Since our Community tier is completely free, and our Enterprise tier pricing is individually tailored based on customer needs, this section will focus on our pay-as-you-go Standard tier. Follow the steps below to change a default payment method, add or remove additional payment methods or change other billing details:",-1),H=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CBilling\u201D"),t(" to enter the Billing Details page.")]),e("li",null,[t("Click "),e("strong",null,"\u201CManage Billing\u201D"),t(" to enter the Stripe payments gateway.")]),e("li",null,"Adjust payment methods and details as needed."),e("li",null,[t("Click "),e("strong",null,"\u201CReturn to Directus Cloud\u201D"),t(".")])],-1),E=e("h3",{id:"team-billing"},[t("Team Billing "),e("a",{class:"header-anchor",href:"#team-billing"},"#")],-1),G=e("p",null,[t("Teams are free to create, and they give Team Members access to the same Projects, Project invoices and payment methods. Each Team has its own separate billing, and each Project within a Team is "),e("a",{href:"#how-bills-are-calculated"},"calculated"),t(" and "),e("a",{href:"#billing-cycles"},"invoiced separately every month"),t(".")],-1),F=e("p",null,"Team Members are SuperAdmins. As such, they have full access to manage billing information and payment methods, including information provided by other Team Members. Team Members should be highly trusted individuals.",-1),U=e("p",null,"All bills will first be invoiced to the default payment method. You may notice that it is possible to add additional payment methods, and it may be a good idea to do so, as keeping multiple payment methods on file provides a fail-safe to help make sure your Project stays running. In the event that there is an issue processing the default payment method, the other payment methods on file will be attempted. If the bill is not paid, the Nodes will be paused, halting web-traffic, until a successful payment is made.",-1),R=e("div",{class:"warning hint"},[e("p",null,[t("If the paused Project is never repaid, it will eventually be deleted along with all of its data and assets. For details on unpaid Projects and refunds, see "),e("a",{href:"https://directus.io/cloud-policies/",target:"_blank",rel:"noopener noreferrer"},"Cloud Policies")])],-1),Y=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Team Metered Usage"),e("p",null,[t("You may notice credit on top of the "),e("a",{href:"#view-billing-details"},"Billing Page"),t(". In the "),e("em",null,"rare event"),t(" your Team receives credit from the Directus Team, this credit balance will decrease the amount due on the next invoice(s) until all credit is used up. Then the default payment method will be used.")])],-1),L=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Stripe Payment"),e("p",null,"To handle billing, Directus Cloud uses Stripe, a secure, industry-leading, dynamic international billing service.")],-1),q=e("h3",{id:"billing-cycles"},[t("Billing Cycles "),e("a",{class:"header-anchor",href:"#billing-cycles"},"#")],-1),K=e("p",null,"Bills are invoiced on a calendar monthly basis, so each new billing period begins after exactly one month. When a Project is destroyed, the bill is processed immediately. As mentioned in the previous section, bills are invoiced per-Project; so if a Team has 4 Standard Projects, it will be charged 4 times each month.",-1),W=e("h3",{id:"how-bills-are-calculated"},[t("How Bills Are Calculated "),e("a",{class:"header-anchor",href:"#how-bills-are-calculated"},"#")],-1),J=t("Project billing is calculated based on the total number of hours that Active and Standby Nodes are used during the billing period. Once the "),Q=t("Node Type"),X=t(" is selected, the associated hourly rate will apply to both Active and Standby Nodes."),Z=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Node Pricing"),e("p",null,[e("strong",null,"General Purpose:"),t(" $0.03424657534 / hour"),e("br"),e("strong",null,"Performance Tier:"),t(" $0.06849315068 / hour")])],-1),ee=e("p",null,[t("This means the monthly prices given for Active Nodes, "),e("em",null,"$25/month for General Purpose and $50/month for Performance tier"),t(", are actually estimates based on the cost per hour times the average length of a month (730 hours). So, the pricing shown for one Active General Purpose Node is "),e("code",null,"$0.03424657534 x 730hrs = $25"),t(", however the actual bill will vary slightly each month.")],-1),te=e("p",null,[t("Keep in mind that a Standard Project\u2019s Nodes can be reconfigured at any time. You can upgrade and downgrade Node Types add and remove Nodes, or destroy your Project as you please. In the end, "),e("em",null,"you simply pay for the actual Node-hours used by your Project"),t(".")],-1),oe=e("p",null,"The following four examples demonstrate this billing system:",-1),ae=e("p",null,[e("strong",null,"Hourly Pricing"),e("br"),t(" A Project is configured to use General Purpose Nodes, with one Active Node and zero Standby Nodes. The Project runs for 3 days and 3.5 hours (75.5 hours total, rounded to 76 hours) and is then destroyed, costing "),e("code",null,"1 Node x $0.03424657534/hr x 76 hrs = $2.60"),t(".")],-1),ne=e("p",null,[t("The bill will be "),e("code",null,"$2.60"),t(" plus Tax/VAT, charged at Project destruction.")],-1),ie=e("p",null,[e("strong",null,"Active Nodes"),e("br"),t(" A Project is configured to use Performance Tier Nodes, with two Active Nodes and zero Standby Nodes. The Project runs the full month (730 hours). For this billing cycle, the two Active Nodes will cost "),e("code",null,"2 Nodes x $0.06849315068/hr x 730 hrs = $100"),t(".")],-1),se=e("p",null,[t("The monthly bill will be "),e("code",null,"$100"),t(" plus Tax/VAT.")],-1),le=e("p",null,[e("strong",null,"Overages on Standby Nodes"),e("br"),t(" A Project is configured to use General Purpose Nodes, with three Active Nodes and two Standby Nodes. The Project runs the full month (730 hours). There are two traffic spikes. The first spike is smaller and only activates one Standby Node for 6.5 hours. The second spike is larger and activates the first Node from 4pm to 12am (eight hours), and the second Node from 6pm to 11pm (five hours), for a total of "),e("code",null,"8 + 5 = 13"),t(" hours. Between both spikes, Standby Nodes run for a total of 19.5 hours (rounds to 20 hrs). Active Nodes will cost "),e("code",null,"3 Nodes x $0.03424657534/hr x 730 hrs = $75.00"),t(" plus Standby Node overages "),e("code",null,"20 Node-hrs x $0.03424657534/hr = $0.68"),t(".")],-1),re=e("p",null,[t("The monthly bill will be "),e("code",null,"$75.68"),t(" plus VAT/Tax.")],-1),de=e("p",null,[e("strong",null,"Pro-rated Changes"),e("br"),t(" A Project begins the billing cycle configured to use General Purpose Nodes, one Active and zero Standby. A massive traffic spike is expected from marketing activities this month and 200 hours into the month, the Project is reconfigured. The Node Type is now Performance Tier, using two Active Nodes and five Standby Nodes. In the end, the marketing event was a failure, and traffic was just slightly above average. The five Standby Nodes were not needed and never activated. The first 200 hours cost "),e("code",null,"(1 General Purpose Node x $0.03424657534/hr x 200hrs) = $6.85"),t(". The other 530 hours cost "),e("code",null,"(2 Performance Nodes x $0.06849315068/hr x 530hrs) = 72.60"),t(".")],-1),ce=e("p",null,[t("The monthly bill will be "),e("code",null,"$79.45"),t(" plus VAT/Tax.")],-1),he=e("h3",{id:"optimize-node-configuration"},[t("Optimize Node Configuration "),e("a",{class:"header-anchor",href:"#optimize-node-configuration"},"#")],-1),ue=t("Remember: "),me=e("em",null,"you are never locked-in to a specific Node configuration",-1),pe=t(". As your needs change for a Project, you can reconfigure the Node Type as well as the number of Active and Standby Nodes at any time. To that end, you may want to monitor overall system traffic to make informed decisions on Node reconfiguration. The "),ge=t("Project Monitor Page"),_e=t(" provides performance analytics, which can be used to help identify optimal Node configurations for your Project."),be=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Standby Nodes"),e("p",null,"For production-ready Projects of any kind, it is probably a good idea to have one or more Standby Nodes. These do not activate, and you do not pay for their usage until they are needed. If you have no Standby Nodes, you many not have the processing power to handle traffic spikes, which can crash your Nodes!")],-1),ye=e("h2",{id:"invite-team-members"},[t("Invite Team Members "),e("a",{class:"header-anchor",href:"#invite-team-members"},"#")],-1),ve=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/inviting-a-team-member-20220225A.webp",alt:"Inviting a Team Member"})],-1),Te=e("p",null,"All Team Members can invite new Members via email. Each invitee will be emailed a link to accept the invitation and join the Team. To invite Team Members:",-1),fe=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CMembers\u201D"),t(" to enter the Members Page.")]),e("li",null,"Scroll down to the Invite New Members section."),e("li",null,"Enter one or more email(s), comma separated."),e("li",null,[t("Click "),e("strong",null,"\u201CSend Invites.\u201D")])],-1),we={class:"tip hint"},Pe=t("Clicking the emailed invitation link does not automatically create an Account for you. Invitees will need to "),Ae=t("create an Account"),Ne=t(" before accepting an invitation to join a Team."),je=e("h2",{id:"manage-team-members"},[t("Manage Team Members "),e("a",{class:"header-anchor",href:"#manage-team-members"},"#")],-1),Me=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/leaving-a-team-20220225A.webp",alt:"Removing a Team member"})],-1),Se=e("p",null,"All Team Members have the ability to remove other Members or invites from a Team. To remove Members or leave a Team yourself:",-1),ke=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CMembers\u201D"),t(" to enter the Members Page.")]),e("li",null,[t("Click the "),e("span",{mi:"",icon:""},"exit_to_app"),t(" or "),e("span",{mi:"",icon:""},"close"),t(" button on the desired Member.")]),e("li",null,[t("Click "),e("strong",null,"\u201CConfirm\u201D"),t(".")])],-1),Ce=e("div",{class:"warning hint"},[e("p",null,"If an Account leaves or is removed from a Team, it will be fully \u201Clocked out\u201D of the Team until re-invited by another Member.")],-1),xe=e("h2",{id:"destroy-a-team"},[t("Destroy a Team "),e("a",{class:"header-anchor",href:"#destroy-a-team"},"#")],-1),De=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/cloud/teams/teams-20220322A/destroy-a-team-20220225A.webp",alt:"Destroying a Team"})],-1),Be=e("p",null,"To destroy a Team:",-1),$e=e("ol",null,[e("li",null,"Open the Team Menu in the Dashboard Header and select the desired Team."),e("li",null,[t("Click "),e("strong",null,"\u201CSettings\u201D"),t(" to enter the Team Settings Page.")]),e("li",null,"Scroll down to the \u201CDestroy this Team\u201D section."),e("li",null,[t("Toggle "),e("span",{mi:"",icon:"",dngr:""},"local_fire_department"),t(" and an input box will appear.")]),e("li",null,"Type the Team Name into the input box."),e("li",null,[t("Click "),e("strong",null,"\u201CDestroy Team\u201D"),t(".")])],-1),Ie=e("div",{class:"danger hint"},[e("p",null,"Destroying a Team completely removes all its data from Directus Cloud. This action is permanent and irreversible. Proceed with caution!")],-1),Ve=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Teams with Active Projects"),e("p",null,"To delete a Team, you must first delete any active Projects within it.")],-1),Ge="Cloud Teams",Fe=!1,Ue={name:"teams",setup(Oe,{expose:l}){const i={title:"Cloud Teams",modularExtension:!1};return l({frontmatter:i}),(ze,He)=>{const a=s("router-link"),r=s("docs-wrapper");return d(),c(r,{frontmatter:i},{default:o(()=>[e("div",h,[u,m,p,g,e("p",null,[_,n(a,{to:"/docs/cloud/overview"},{default:o(()=>[b]),_:1}),y]),v,T,f,w,P,A,N,j,M,S,k,C,x,D,B,$,I,V,O,z,H,E,G,F,U,R,Y,L,q,K,W,e("p",null,[J,n(a,{to:"/docs/cloud/glossary/#nodes"},{default:o(()=>[Q]),_:1}),X]),Z,ee,te,oe,ae,ne,ie,se,le,re,de,ce,he,e("p",null,[ue,me,pe,n(a,{to:"/docs/cloud/projects/#monitor-a-project"},{default:o(()=>[ge]),_:1}),_e]),be,ye,ve,Te,fe,e("div",we,[e("p",null,[Pe,n(a,{to:"/docs/cloud/accounts/#create-account-and-login"},{default:o(()=>[Ae]),_:1}),Ne])]),je,Me,Se,ke,Ce,xe,De,Be,$e,Ie,Ve])]),_:1})}}};export{Ue as default,Fe as modularExtension,Ge as title};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as n,o as c,b as h,w as s,g as e,e as r,B as t}from"./runtime-core.esm-bundler.e6808e6c.js";const d={class:"markdown-body"},u=e("strong",null,"Form Follows Function",-1),p=t(" is the guiding design principle of Directus. The minimal UI allows the platform to be easily tailored to your brand. "),m=t("Learn more about the App"),g=t("."),_=e("h2",{id:"app-themes"},[t("App Themes "),e("a",{class:"header-anchor",href:"#app-themes"},"#")],-1),y=e("p",null,"The Directus App has been developed with customization and extensibility in mind. Colors and styles referenced within the codebase all use CSS variables, and therefore it is easy to make comprehensive changes to the App styling.",-1),b=e("p",null,"There are two themes included by default: Light and Dark. You can duplicate these files to create your own themes \u2014 with no limit to customization. Below are several code resources for key SCSS files.",-1),f=e("ul",null,[e("li",null,[e("strong",null,"Themes"),t(" \u2014 See the "),e("a",{href:"https://github.com/directus/directus/blob/main/app/src/styles/themes/_light.scss",target:"_blank",rel:"noopener noreferrer"},"Light Theme"),t(" or "),e("a",{href:"https://github.com/directus/directus/blob/main/app/src/styles/themes/_dark.scss",target:"_blank",rel:"noopener noreferrer"},"Dark Theme")]),e("li",null,[e("strong",null,"Typography"),t(" \u2014 See the "),e("a",{href:"https://github.com/directus/directus/blob/main/app/src/styles/_type-styles.scss",target:"_blank",rel:"noopener noreferrer"},"Fonts"),t(" and "),e("a",{href:"https://github.com/directus/directus/blob/main/app/src/styles/mixins/type-styles.scss",target:"_blank",rel:"noopener noreferrer"},"Type Styles")]),e("li",null,[e("strong",null,"Variables"),t(" \u2014 See the "),e("a",{href:"https://github.com/directus/directus/blob/main/app/src/styles/_variables.scss",target:"_blank",rel:"noopener noreferrer"},"Global Variables")])],-1),S=e("h2",{id:"project-styling"},[t("Project Styling "),e("a",{class:"header-anchor",href:"#project-styling"},"#")],-1),v=t("See "),w=t("Adjusting Project Settings"),k=e("h2",{id:"custom-css"},[t("Custom CSS "),e("a",{class:"header-anchor",href:"#custom-css"},"#")],-1),C=e("p",null,"You can also override any core CSS directly within the App through Project Settings. This makes it easy to edit the CSS variables listed in the themes above.",-1),T=e("ol",null,[e("li",null,[t("Navigate to "),e("strong",null,"Settings Module > Project Settings")]),e("li",null,[t("Scroll to the "),e("strong",null,"Custom CSS"),t(" field")]),e("li",null,[t("Enter any "),e("strong",null,"valid CSS")]),e("li",null,[t("Click the "),e("strong",null,"Save"),t(" action button in the header")])],-1),A=e("h3",{id:"example"},[t("Example "),e("a",{class:"header-anchor",href:"#example"},"#")],-1),j=e("p",null,[t("Since App styles are inserted/removed whenever a component is rendered, you\u2019ll need to be aware of CSS priority. Using "),e("code",null,":root"),t(" or "),e("code",null,"body"),t(" likely isn\u2019t scoped enough, you\u2019ll need to define a more specific scope, such as "),e("code",null,"#app"),t(", or use "),e("code",null,"!important"),t(".")],-1),x=e("pre",null,[e("code",{class:"language-css"},[e("span",{class:"hljs-selector-tag"},"body"),t(` {
|
|
2
|
-
--family-sans-serif: `),e("span",{class:"hljs-string"},"'Comic Sans MS'"),t(`;
|
|
3
|
-
--primary: MediumSlateBlue `),e("span",{class:"hljs-meta"},"!important"),t(`;
|
|
4
|
-
}
|
|
5
|
-
`)])],-1),B=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Action Styling"),e("p",null,[t("The "),e("code",null,"--primary"),t(" variable (and its shades) control call-to-actions and all other elements within the App using the \u201CDirectus Green\u201D. While it may be tempting to override this variable with your brand\u2019s color, please first review the following warnings:")]),e("ul",null,[e("li",null,"Avoid using yellow, orange, or red hues that give a sense of \u201Cdanger\u201D"),e("li",null,"Avoid low-contrast colors like yellows, grays, etc, that might not be easily visible"),e("li",null,"Avoid low-saturation colors like black, which might not properly highlight CTAs")])],-1),N="Themes & Styling",P=!1,L={name:"themes",setup(D,{expose:i}){const o={title:"Themes & Styling",modularExtension:!1};return i({frontmatter:o}),(V,E)=>{const l=n("router-link"),a=n("docs-wrapper");return c(),h(a,{frontmatter:o},{default:s(()=>[e("div",d,[e("blockquote",null,[e("p",null,[u,p,r(l,{to:"/docs/app/overview/"},{default:s(()=>[m]),_:1}),g])]),_,y,b,f,S,e("p",null,[v,r(l,{to:"/docs/configuration/project-settings/"},{default:s(()=>[w]),_:1})]),k,C,T,A,j,x,B])]),_:1})}}};export{L as default,P as modularExtension,N as title};
|