From 97e80e54e8dc23b47f07f7ddc310dba429f13953 Mon Sep 17 00:00:00 2001 From: Paul Cleary Date: Fri, 23 Oct 2020 08:22:26 -0400 Subject: [PATCH] Update microsite, move to mdoc (#1023) We used to rely on `tut` for docs, however it is deprecated to be replaced with mdoc. Moved to an `mdoc` folder structure and updated all of the links (what a pain). --- build.sbt | 12 +- modules/docs/src/main/{tut => mdoc}/CNAME | 0 modules/docs/src/main/{tut => mdoc}/README.md | 6 +- .../{tut => mdoc}/api/approve-batchchange.md | 10 +- .../main/{tut => mdoc}/api/auth-mechanism.md | 0 .../{tut => mdoc}/api/batchchange-errors.md | 14 +- .../{tut => mdoc}/api/batchchange-model.md | 26 +- .../{tut => mdoc}/api/cancel-batchchange.md | 4 +- .../{tut => mdoc}/api/create-batchchange.md | 17 +- .../main/{tut => mdoc}/api/create-group.md | 0 .../{tut => mdoc}/api/create-recordset.md | 4 +- .../src/main/{tut => mdoc}/api/create-zone.md | 4 +- .../main/{tut => mdoc}/api/delete-group.md | 0 .../{tut => mdoc}/api/delete-recordset.md | 0 .../src/main/{tut => mdoc}/api/delete-zone.md | 2 +- .../main/{tut => mdoc}/api/get-batchchange.md | 6 +- .../src/main/{tut => mdoc}/api/get-group.md | 0 .../{tut => mdoc}/api/get-recordset-change.md | 0 .../main/{tut => mdoc}/api/get-recordset.md | 2 +- .../main/{tut => mdoc}/api/get-zone-by-id.md | 2 +- .../{tut => mdoc}/api/get-zone-by-name.md | 2 +- modules/docs/src/main/mdoc/api/index.md | 13 + .../{tut => mdoc}/api/list-batchchanges.md | 2 +- .../{tut => mdoc}/api/list-group-activity.md | 4 +- .../{tut => mdoc}/api/list-group-admins.md | 2 +- .../{tut => mdoc}/api/list-group-members.md | 2 +- .../src/main/{tut => mdoc}/api/list-groups.md | 2 +- .../api/list-recordset-changes.md | 0 .../api/list-recordsets-by-zone.md | 4 +- .../api/list-recordsets-global.md | 4 +- .../{tut => mdoc}/api/list-zone-changes.md | 0 .../src/main/{tut => mdoc}/api/list-zones.md | 2 +- .../{tut => mdoc}/api/membership-model.md | 4 +- .../main/{tut => mdoc}/api/recordset-model.md | 2 +- .../{tut => mdoc}/api/reject-batchchange.md | 6 +- .../src/main/{tut => mdoc}/api/sync-zone.md | 2 +- .../main/{tut => mdoc}/api/update-group.md | 0 .../{tut => mdoc}/api/update-recordset.md | 4 +- .../src/main/{tut => mdoc}/api/update-zone.md | 4 +- .../src/main/{tut => mdoc}/api/zone-model.md | 4 +- modules/docs/src/main/{tut => mdoc}/faq.md | 2 +- .../src/main/{tut => mdoc}/getting-help.md | 0 modules/docs/src/main/{tut => mdoc}/index.md | 2 +- .../main/{tut => mdoc}/operator/config-api.md | 13 +- .../{tut => mdoc}/operator/config-portal.md | 10 +- modules/docs/src/main/mdoc/operator/index.md | 13 + .../src/main/{tut => mdoc}/operator/pre.md | 12 +- .../main/{tut => mdoc}/operator/setup-api.md | 10 +- .../{tut => mdoc}/operator/setup-dynamodb.md | 6 +- .../main/{tut => mdoc}/operator/setup-ldap.md | 4 +- .../{tut => mdoc}/operator/setup-mysql.md | 2 +- .../{tut => mdoc}/operator/setup-portal.md | 10 +- .../main/{tut => mdoc}/operator/setup-sqs.md | 2 +- .../src/main/{tut => mdoc}/permissions.md | 0 .../src/main/{tut => mdoc}/portal/access.md | 0 .../{tut => mdoc}/portal/batch-changes.md | 0 .../{tut => mdoc}/portal/connect-to-zone.md | 8 +- .../main/{tut => mdoc}/portal/connections.md | 2 +- .../{tut => mdoc}/portal/create-a-group.md | 0 .../main/{tut => mdoc}/portal/credentials.md | 2 +- .../main/{tut => mdoc}/portal/dns-changes.md | 2 +- .../src/main/{tut => mdoc}/portal/groups.md | 6 +- .../src/main/{tut => mdoc}/portal/index.md | 10 +- .../{tut => mdoc}/portal/manage-access.md | 4 +- .../{tut => mdoc}/portal/manage-membership.md | 0 .../{tut => mdoc}/portal/manage-records.md | 2 +- .../portal/manual-review-scheduling.md | 2 +- .../{tut => mdoc}/portal/recordset-search.md | 0 .../main/{tut => mdoc}/portal/search-zones.md | 0 .../src/main/{tut => mdoc}/portal/zones.md | 12 +- modules/docs/src/main/{tut => mdoc}/tools.md | 0 .../main/resources/microsite/css/custom.css | 17 ++ .../main/resources/microsite/data/menu.yml | 235 ------------------ .../microsite}/img/favicon.png | Bin .../microsite}/img/favicon114x114.png | Bin .../microsite}/img/favicon120x120.png | Bin .../microsite}/img/favicon128x128.png | Bin .../microsite}/img/favicon144x144.png | Bin .../microsite}/img/favicon150x150.png | Bin .../microsite}/img/favicon152x152.png | Bin .../microsite}/img/favicon16x16.png | Bin .../microsite}/img/favicon196x196.png | Bin .../microsite}/img/favicon24x24.png | Bin .../microsite}/img/favicon310x150.png | Bin .../microsite}/img/favicon310x310.png | Bin .../microsite}/img/favicon32x32.png | Bin .../microsite}/img/favicon48x48.png | Bin .../microsite}/img/favicon57x57.png | Bin .../microsite}/img/favicon60x60.png | Bin .../microsite}/img/favicon64x64.png | Bin .../microsite}/img/favicon70x70.png | Bin .../microsite}/img/favicon72x72.png | Bin .../microsite}/img/favicon76x76.png | Bin .../microsite}/img/favicon96x96.png | Bin .../microsite}/img/jumbotron_pattern.png | Bin .../microsite}/img/jumbotron_pattern2x.png | Bin .../microsite/img/light_navbar_brand.png} | Bin .../microsite}/img/navbar_brand.png | Bin .../microsite/img/navbar_brand2x.png | Bin 0 -> 17629 bytes .../microsite/img/navbar_brand36x36.png | Bin 0 -> 18549 bytes .../img/portal/change-history-annotated.png | Bin .../microsite}/img/portal/connect-to-zone.png | Bin .../microsite}/img/portal/create-acl-rule.png | Bin .../microsite}/img/portal/create-group.png | Bin .../img/portal/credentials_annotated.png | Bin .../dns-change-approval-with-errors.png | Bin .../dns-change-cancel-prompt-annotated.png | Bin .../img/portal/dns-change-cancel-prompt.png | Bin .../img/portal/dns-change-cancelled.png | Bin .../img/portal/dns-change-list-annotated.png | Bin .../microsite}/img/portal/dns-change-list.png | Bin .../img/portal/dns-change-main-annotated.png | Bin .../microsite}/img/portal/dns-change-main.png | Bin .../img/portal/dns-change-new-annotated.png | Bin .../microsite}/img/portal/dns-change-new.png | Bin .../portal/dns-change-non-fatal-errors.png | Bin ...-change-open-requests-filter-annotated.png | Bin .../dns-change-open-requests-filter.png | Bin .../img/portal/dns-change-review.png | Bin .../img/portal/dns-change-reviewed.png | Bin .../portal/dns-change-schedule-annotated.png | Bin .../img/portal/dns-change-summary.png | Bin .../img/portal/dns-changes-admin-view.png | Bin .../img/portal/group-membership.png | Bin .../img/portal/groups-listed-all.png | Bin .../microsite}/img/portal/groups-listed.png | Bin .../microsite}/img/portal/groups-main-all.png | Bin .../microsite}/img/portal/groups-main.png | Bin .../microsite}/img/portal/login.png | Bin .../img/portal/logout-annotated.png | Bin .../microsite}/img/portal/main-annotated.png | Bin .../microsite}/img/portal/main.png | Bin .../img/portal/manage-records-annotated.png | Bin .../img/portal/manage-records-sort.png | Bin .../microsite}/img/portal/manage-zone.png | Bin .../img/portal/recordset-search-filters.png | Bin .../img/portal/recordset-search-info.png | Bin .../img/portal/recordset-search-main.png | Bin .../portal/recordset-search-name-filter.png | Bin .../img/portal/search-zones-all-zones.png | Bin .../img/portal/search-zones-my-zones.png | Bin .../img/portal/sync-zones-annotated.png | Bin .../microsite}/img/portal/zone-list.png | Bin .../microsite}/img/portal/zone-main.png | Bin .../img/portal/zone-records-annotated.png | Bin .../microsite}/img/portal/zones-all-zones.png | Bin .../microsite}/img/portal/zones-my-zones.png | Bin .../microsite}/img/poster.png | Bin .../img/sample-email-nofitication.png | Bin .../microsite}/img/sidebar_brand.png | Bin .../microsite}/img/sidebar_brand2x.png | Bin .../microsite/img/sidebar_brand36x36.png | Bin 0 -> 13157 bytes .../img/vinyldns-fulllogoDARK-300.png | Bin modules/docs/src/main/tut/api/index.md | 13 - modules/docs/src/main/tut/operator/index.md | 13 - project/plugins.sbt | 6 +- 156 files changed, 198 insertions(+), 394 deletions(-) rename modules/docs/src/main/{tut => mdoc}/CNAME (100%) rename modules/docs/src/main/{tut => mdoc}/README.md (88%) rename modules/docs/src/main/{tut => mdoc}/api/approve-batchchange.md (89%) rename modules/docs/src/main/{tut => mdoc}/api/auth-mechanism.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/batchchange-errors.md (95%) rename modules/docs/src/main/{tut => mdoc}/api/batchchange-model.md (86%) rename modules/docs/src/main/{tut => mdoc}/api/cancel-batchchange.md (84%) rename modules/docs/src/main/{tut => mdoc}/api/create-batchchange.md (88%) rename modules/docs/src/main/{tut => mdoc}/api/create-group.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/create-recordset.md (96%) rename modules/docs/src/main/{tut => mdoc}/api/create-zone.md (95%) rename modules/docs/src/main/{tut => mdoc}/api/delete-group.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/delete-recordset.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/delete-zone.md (96%) rename modules/docs/src/main/{tut => mdoc}/api/get-batchchange.md (92%) rename modules/docs/src/main/{tut => mdoc}/api/get-group.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/get-recordset-change.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/get-recordset.md (96%) rename modules/docs/src/main/{tut => mdoc}/api/get-zone-by-id.md (95%) rename modules/docs/src/main/{tut => mdoc}/api/get-zone-by-name.md (95%) create mode 100755 modules/docs/src/main/mdoc/api/index.md rename modules/docs/src/main/{tut => mdoc}/api/list-batchchanges.md (99%) rename modules/docs/src/main/{tut => mdoc}/api/list-group-activity.md (96%) rename modules/docs/src/main/{tut => mdoc}/api/list-group-admins.md (93%) rename modules/docs/src/main/{tut => mdoc}/api/list-group-members.md (94%) rename modules/docs/src/main/{tut => mdoc}/api/list-groups.md (97%) rename modules/docs/src/main/{tut => mdoc}/api/list-recordset-changes.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/list-recordsets-by-zone.md (94%) rename modules/docs/src/main/{tut => mdoc}/api/list-recordsets-global.md (94%) rename modules/docs/src/main/{tut => mdoc}/api/list-zone-changes.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/list-zones.md (97%) rename modules/docs/src/main/{tut => mdoc}/api/membership-model.md (95%) rename modules/docs/src/main/{tut => mdoc}/api/recordset-model.md (98%) rename modules/docs/src/main/{tut => mdoc}/api/reject-batchchange.md (92%) rename modules/docs/src/main/{tut => mdoc}/api/sync-zone.md (97%) rename modules/docs/src/main/{tut => mdoc}/api/update-group.md (100%) rename modules/docs/src/main/{tut => mdoc}/api/update-recordset.md (98%) rename modules/docs/src/main/{tut => mdoc}/api/update-zone.md (96%) rename modules/docs/src/main/{tut => mdoc}/api/zone-model.md (96%) rename modules/docs/src/main/{tut => mdoc}/faq.md (98%) rename modules/docs/src/main/{tut => mdoc}/getting-help.md (100%) rename modules/docs/src/main/{tut => mdoc}/index.md (95%) rename modules/docs/src/main/{tut => mdoc}/operator/config-api.md (98%) rename modules/docs/src/main/{tut => mdoc}/operator/config-portal.md (96%) create mode 100644 modules/docs/src/main/mdoc/operator/index.md rename modules/docs/src/main/{tut => mdoc}/operator/pre.md (93%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-api.md (89%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-dynamodb.md (97%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-ldap.md (91%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-mysql.md (93%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-portal.md (89%) rename modules/docs/src/main/{tut => mdoc}/operator/setup-sqs.md (97%) rename modules/docs/src/main/{tut => mdoc}/permissions.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/access.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/batch-changes.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/connect-to-zone.md (76%) rename modules/docs/src/main/{tut => mdoc}/portal/connections.md (94%) rename modules/docs/src/main/{tut => mdoc}/portal/create-a-group.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/credentials.md (84%) rename modules/docs/src/main/{tut => mdoc}/portal/dns-changes.md (98%) rename modules/docs/src/main/{tut => mdoc}/portal/groups.md (64%) rename modules/docs/src/main/{tut => mdoc}/portal/index.md (85%) rename modules/docs/src/main/{tut => mdoc}/portal/manage-access.md (94%) rename modules/docs/src/main/{tut => mdoc}/portal/manage-membership.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/manage-records.md (98%) rename modules/docs/src/main/{tut => mdoc}/portal/manual-review-scheduling.md (96%) rename modules/docs/src/main/{tut => mdoc}/portal/recordset-search.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/search-zones.md (100%) rename modules/docs/src/main/{tut => mdoc}/portal/zones.md (74%) rename modules/docs/src/main/{tut => mdoc}/tools.md (100%) delete mode 100644 modules/docs/src/main/resources/microsite/data/menu.yml rename modules/docs/src/main/{tut => resources/microsite}/img/favicon.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon114x114.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon120x120.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon128x128.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon144x144.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon150x150.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon152x152.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon16x16.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon196x196.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon24x24.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon310x150.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon310x310.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon32x32.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon48x48.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon57x57.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon60x60.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon64x64.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon70x70.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon72x72.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon76x76.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/favicon96x96.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/jumbotron_pattern.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/jumbotron_pattern2x.png (100%) rename modules/docs/src/main/{tut/img/navbar_brand2x.png => resources/microsite/img/light_navbar_brand.png} (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/navbar_brand.png (100%) create mode 100644 modules/docs/src/main/resources/microsite/img/navbar_brand2x.png create mode 100644 modules/docs/src/main/resources/microsite/img/navbar_brand36x36.png rename modules/docs/src/main/{tut => resources/microsite}/img/portal/change-history-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/connect-to-zone.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/create-acl-rule.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/create-group.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/credentials_annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-approval-with-errors.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-cancel-prompt-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-cancel-prompt.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-cancelled.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-list-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-list.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-main-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-main.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-new-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-new.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-non-fatal-errors.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-open-requests-filter-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-open-requests-filter.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-review.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-reviewed.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-schedule-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-change-summary.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/dns-changes-admin-view.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/group-membership.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/groups-listed-all.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/groups-listed.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/groups-main-all.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/groups-main.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/login.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/logout-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/main-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/main.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/manage-records-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/manage-records-sort.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/manage-zone.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/recordset-search-filters.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/recordset-search-info.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/recordset-search-main.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/recordset-search-name-filter.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/search-zones-all-zones.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/search-zones-my-zones.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/sync-zones-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/zone-list.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/zone-main.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/zone-records-annotated.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/zones-all-zones.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/portal/zones-my-zones.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/poster.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/sample-email-nofitication.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/sidebar_brand.png (100%) rename modules/docs/src/main/{tut => resources/microsite}/img/sidebar_brand2x.png (100%) create mode 100644 modules/docs/src/main/resources/microsite/img/sidebar_brand36x36.png rename modules/docs/src/main/{tut => resources/microsite}/img/vinyldns-fulllogoDARK-300.png (100%) delete mode 100755 modules/docs/src/main/tut/api/index.md delete mode 100644 modules/docs/src/main/tut/operator/index.md diff --git a/build.sbt b/build.sbt index 61969adbb..b7cc3d382 100644 --- a/build.sbt +++ b/build.sbt @@ -378,8 +378,8 @@ lazy val docSettings = Seq( micrositeHomepage := "http://vinyldns.io", micrositeDocumentationUrl := "/api", micrositeGitterChannelUrl := "vinyldns/Lobby", + micrositeTwitterCreator := "@vinyldns", micrositeDocumentationLabelDescription := "API Documentation", - micrositeShareOnSocial := false, micrositeExtraMdFiles := Map( file("CONTRIBUTING.md") -> ExtraMdFileConfig( "contributing.md", @@ -390,13 +390,17 @@ lazy val docSettings = Seq( micrositePushSiteWith := GitHub4s, micrositeGithubToken := sys.env.get("SBT_MICROSITES_PUBLISH_TOKEN"), ghpagesNoJekyll := false, - fork in tut := true, - micrositeEditButton := Some(MicrositeEditButton("Improve this page", "/edit/master/modules/docs/src/main/tut/{{ page.path }}")), + fork in mdoc := true, + mdocIn := (sourceDirectory in Compile).value / "mdoc", + micrositeCssDirectory := (resourceDirectory in Compile).value / "microsite" / "css", + micrositeCompilingDocsTool := WithMdoc, + micrositeFavicons := Seq(MicrositeFavicon("favicon16x16.png", "16x16"), MicrositeFavicon("favicon32x32.png", "32x32")), + micrositeEditButton := Some(MicrositeEditButton("Improve this page", "/edit/master/modules/docs/src/main/mdoc/{{ page.path }}")), includeFilter in makeSite := "*.html" | "*.css" | "*.png" | "*.jpg" | "*.jpeg" | "*.gif" | "*.js" | "*.swf" | "*.md" | "*.webm" | "*.ico" | "CNAME" | "*.yml" | "*.svg" | "*.json" | "*.csv" ) lazy val docs = (project in file("modules/docs")) - .enablePlugins(MicrositesPlugin) + .enablePlugins(MicrositesPlugin, MdocPlugin) .settings(docSettings) // release stages diff --git a/modules/docs/src/main/tut/CNAME b/modules/docs/src/main/mdoc/CNAME similarity index 100% rename from modules/docs/src/main/tut/CNAME rename to modules/docs/src/main/mdoc/CNAME diff --git a/modules/docs/src/main/tut/README.md b/modules/docs/src/main/mdoc/README.md similarity index 88% rename from modules/docs/src/main/tut/README.md rename to modules/docs/src/main/mdoc/README.md index 444c45945..35c424539 100644 --- a/modules/docs/src/main/tut/README.md +++ b/modules/docs/src/main/mdoc/README.md @@ -8,10 +8,10 @@ The VinylDNS documentation is published to the `gh-pages` branch after each succ ## Documentation Structure - The documentation site is built with the [sbt-microsites](https://47deg.github.io/sbt-microsites/) plugin. - The [docs module](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main) contains most content for the documentation site: - - The text content is in the [tut](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main/tut/) directory + - The text content is in the [docs](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/docs/) directory - The primary menu is built through setting a position value in the linked file ([example](https://github.com/vinyldns/vinyldns/blob/master/modules/docs/src/main/tut/index.md)) or in [build.sbt](https://github.com/vinyldns/vinyldns/blob/master/build.sbt) if the target link is not a file in the docs module. - - The sidebar menu is maintained in the [menu.yml](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main/resources/microsite/data/menu.yml) - - Images are stored in the [img](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main/tut/img/) directory. + - The sidebar menu is maintained in the [menu.yml](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/docs/menu.yml) + - Images are stored in the [img](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main/resources/microsite/img/) directory. - Custom CSS is stored in the [custom.css](https://github.com/vinyldns/vinyldns/tree/master/modules/docs/src/main/resources/microsite/css/custom.css) file. - The [Contributing Guide](https://www.vinyldns.io/contributing.html) is the [CONTRIBUTING.md](https://github.com/vinyldns/vinyldns/blob/master/CONTRIBUTING.md) file at the root of the VinylDNS project. - The sbt-microsite configuration is in the docSettings section of the [build.sbt](https://github.com/vinyldns/vinyldns/blob/master/build.sbt) in the root of the VinylDNS project. diff --git a/modules/docs/src/main/tut/api/approve-batchchange.md b/modules/docs/src/main/mdoc/api/approve-batchchange.md similarity index 89% rename from modules/docs/src/main/tut/api/approve-batchchange.md rename to modules/docs/src/main/mdoc/api/approve-batchchange.md index aa6d375a1..273e3ae74 100644 --- a/modules/docs/src/main/tut/api/approve-batchchange.md +++ b/modules/docs/src/main/mdoc/api/approve-batchchange.md @@ -9,9 +9,9 @@ section: "api" Manually approves a batch change in pending review status given the batch change ID, resulting in revalidation and submission for backend processing. Only system administrators (ie. support or super user) can manually review a batch change. In the event that a batch change is approved and still encounters non-fatal errors, it will remain in manual -review state until a successful approval (**202** Accepted) or [rejection](../api/reject-batchchange) (**200** OK). +review state until a successful approval (**202** Accepted) or [rejection](reject-batchchange.html) (**200** OK). -Note: If [manual review is disabled](../../operator/config-api#manual-review) in the VinylDNS instance, +Note: If [manual review is disabled](../operator/config-api.html#manual-review) in the VinylDNS instance, users trying to access this endpoint will encounter a **404 Not Found** response since it will not exist. @@ -45,7 +45,7 @@ Code | description | 403 | **Forbidden** User is not a system administrator (ie. support or super user) or is attempting to approve a scheduled batch prior to its scheduled due date. | 404 | **NotFound** Batch change does not exist. -Since we re-run validations upon successful approval, the [create batch error codes](../api/create-batchchange#http-response-types) still hold, so it is possible to see them as well. +Since we re-run validations upon successful approval, the [create batch error codes](create-batchchange.html#http-response-types) still hold, so it is possible to see them as well. #### HTTP RESPONSE ATTRIBUTES @@ -56,8 +56,8 @@ userId | string | The unique identifier of the user that created the userName | string | The username of the user that created the batch change. | comments | string | Conditional: comments about the batch change, if provided. | createdTimestamp | date-time | The timestamp (UTC) when the batch change was created. | -changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](../api/batchchange-model#singleaddchange-attributes) or a [SingleDeleteRRSetChange](../api/batchchange-model#singledeleterrsetchange-). | -status | BatchChangeStatus | [Status of the batch change](../api/batchchange-model#batchchange-attributes). | +changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](batchchange-model.html#singleaddchange-attributes) or a [SingleDeleteRRSetChange](batchchange-model.html#singledeleterrsetchange-attributes). | +status | BatchChangeStatus | [Status of the batch change](batchchange-model.html#batchchange-attributes). | id | string | The unique identifier for this batch change. | ownerGroupId | string | Conditional: Record ownership assignment, if provided. | approvalStatus | BatchChangeApprovalStatus | Whether the batch change is currently awaiting manual review. Will be **ManuallyApproved** status when approving. | diff --git a/modules/docs/src/main/tut/api/auth-mechanism.md b/modules/docs/src/main/mdoc/api/auth-mechanism.md similarity index 100% rename from modules/docs/src/main/tut/api/auth-mechanism.md rename to modules/docs/src/main/mdoc/api/auth-mechanism.md diff --git a/modules/docs/src/main/tut/api/batchchange-errors.md b/modules/docs/src/main/mdoc/api/batchchange-errors.md similarity index 95% rename from modules/docs/src/main/tut/api/batchchange-errors.md rename to modules/docs/src/main/mdoc/api/batchchange-errors.md index 46f8aa64b..8935b07f7 100644 --- a/modules/docs/src/main/tut/api/batchchange-errors.md +++ b/modules/docs/src/main/mdoc/api/batchchange-errors.md @@ -77,7 +77,7 @@ in the DNS backend. #### Single Change Errors Single change errors can be further classified as *non-fatal* or *fatal* errors. The presence of one or more fatal errors will result in an immediate failure (ie. hard stop) and no changes in the batch will be accepted. The behavior of non-fatal errors depends -on whether [manual review is configured on](../../operator/config-api#additional-configuration-settings): if manual review +on whether [manual review is configured on](../operator/config-api.html#additional-configuration-settings): if manual review is disabled, non-fatal errors are treated as fatal errors; if manual review is enabled, batches with only non-fatal errors will enter a pending review state. @@ -102,10 +102,14 @@ Note: if a user submits a batch change with `allowManualReview` set to false, th the VinylDNS instance is configured to have manual review disabled. ##### Non-Fatal Errors +[non-fatal-errors]: #non-fatal-errors + - [Zone Discovery Failed](#ZoneDiscoveryFailed) - [Record Requires Manual Review](#RecordRequiresManualReview) ##### Fatal Errors +[fatal-errors]: #fatal-errors + - [Invalid Domain Name](#InvalidDomainName) - [Invalid Length](#InvalidLength) - [Invalid Record Type](#InvalidRecordType) @@ -157,7 +161,7 @@ Record set with name requires manual review. ##### Details: -Based on a [configurable list](../operator/config-api#manual-review-domains), VinylDNS will determine if the given inputName requires manual review before it can be processed. +Based on a [configurable list](../operator/config-api.html#manual-review-domains), VinylDNS will determine if the given inputName requires manual review before it can be processed. ### Fatal Errors #### Invalid Domain Name @@ -333,7 +337,7 @@ Record "" Does Not Exist: cannot delete a record that does not exist. ##### Details: A record with the given name could not be found in VinylDNS. -If the record exists in DNS, then you should [sync the zone](../api/sync-zone) for that record to bring VinylDNS up to date with what is in the DNS backend. +If the record exists in DNS, then you should [sync the zone](sync-zone.html) for that record to bring VinylDNS up to date with what is in the DNS backend. #### CNAME Conflict @@ -480,7 +484,7 @@ If there are issues with the batch change input data provided in the batch chang Code | description | ------------ | :---------- | -404 | **Not Found** - batch change not found for specified ID in [get batch change](../api/get-batchchange) request. | +404 | **Not Found** - batch change not found for specified ID in [get batch change](get-batchchange.html) request. | ##### ERROR MESSAGE: @@ -490,7 +494,7 @@ Batch change with id cannot be found ##### DETAILS: -The batch ID specified in the [get batch change](../api/get-batchchange) request does not exist. +The batch ID specified in the [get batch change](get-batchchange.html) request does not exist. #### MALFORMED JSON ERRORS diff --git a/modules/docs/src/main/tut/api/batchchange-model.md b/modules/docs/src/main/mdoc/api/batchchange-model.md similarity index 86% rename from modules/docs/src/main/tut/api/batchchange-model.md rename to modules/docs/src/main/mdoc/api/batchchange-model.md index 48cf24203..1d902195d 100644 --- a/modules/docs/src/main/tut/api/batchchange-model.md +++ b/modules/docs/src/main/mdoc/api/batchchange-model.md @@ -14,22 +14,23 @@ section: "api" - [Batch Change Example](#batchchange-example) #### BATCH CHANGE INFORMATION +[batchchange-info]: #batchchange-info -Batch change is an alternative to submitting individual [RecordSet](../api/recordset-model) changes and provides the following: +Batch change is an alternative to submitting individual [RecordSet](recordset-model.html) changes and provides the following: - The ability to accept multiple changes in a single API call. - The ability to include records of multiple record types across multiple zones. - Input names are entered as fully-qualified domain names (or IP addresses for **PTR** records), so users don't have to think in record/zone context. -- All record validations are processed simultaneously. [Fatal errors](../api/batchchange-errors#fatal-errors) for any +- All record validations are processed simultaneously. [Fatal errors](batchchange-errors.html#fatal-errors) for any change in the batch will result in a **400** response and none will be applied. -- Support for [manual review](../../operator/config-api#additional-configuration-settings) if enabled in your VinylDNS instance. +- Support for [manual review](../operator/config-api.html#additional-configuration-settings) if enabled in your VinylDNS instance. Batch change will remain in limbo until a system administrator (ie. support or super user) either rejects it resulting in an immediate failure or approves it resulting in revalidation and submission for processing. -- Support for [notifications](../../operator/config-api#additional-configuration-settings) when a batch change is rejected or implemented. +- Support for [notifications](../operator/config-api.html#additional-configuration-settings) when a batch change is rejected or implemented. A batch change consists of multiple single changes which can be a combination of [SingleAddChanges](#singleaddchange-attributes) and [SingleDeleteRRSetChanges](#singledeleterrsetchange-attributes). -**Note:** In the portal batch change is referred to as [DNS Change](../portal/dns-changes). +**Note:** In the portal batch change is referred to as [DNS Change](../portal/dns-changes.html). To update an existing record, you must delete the record first and add the record again with the updated changes. @@ -41,6 +42,7 @@ Batch changes are also susceptible to the following restrictions: #### BATCH CHANGE ATTRIBUTES +[batchchange-attributes]: #batchchange-attributes name | type | description | ------------ | :---------- | :---------- | @@ -49,7 +51,7 @@ userName | string | The username of the user that created the batch ch comments | string | Optional comments about the batch change. | createdTimestamp | date-time | The timestamp (UTC) when the batch change was created. | changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](#singleaddchange-attributes) or a [SingleDeleteRRSetChange](#singledeleterrsetchange-attributes). | -status | BatchChangeStatus | - **PendingProcessing** - at least one change in batch has not finished processing
- **Complete** - all changes have been processed successfully
- **Failed** - all changes failed during processing
- **PartialFailure** - some changes have failed and the rest were successful
- **PendingReview** - one or more changes requires manual [approval](../api/approve-batchchange)/[rejection](../api/reject-batchchange) by a system administrator (ie. super or support user) to proceed
- **Rejected** - the batch change was rejected by a system administrator (ie. super or support user) and no changes were applied
- **Scheduled** - the batch change is scheduled for a later date at which time it needs to be approved to proceed.
- **Cancelled** - the PendingReview batch change was cancelled by its creator before review.| +status | BatchChangeStatus | - **PendingProcessing** - at least one change in batch has not finished processing
- **Complete** - all changes have been processed successfully
- **Failed** - all changes failed during processing
- **PartialFailure** - some changes have failed and the rest were successful
- **PendingReview** - one or more changes requires manual [approval](approve-batchchange.html)/[rejection](reject-batchchange.html) by a system administrator (ie. super or support user) to proceed
- **Rejected** - the batch change was rejected by a system administrator (ie. super or support user) and no changes were applied
- **Scheduled** - the batch change is scheduled for a later date at which time it needs to be approved to proceed.
- **Cancelled** - the PendingReview batch change was cancelled by its creator before review.| id | string | The unique identifier for this batch change. | ownerGroupId | string | Record ownership assignment. Required if any records in the batch change are in shared zones and are new or unowned. | approvalStatus | BatchChangeApprovalStatus | Whether the batch change is currently awaiting manual review. Can be one of **AutoApproved**, **PendingReview**, **ManuallyApproved**, **Rejected**, or **Cancelled**. | @@ -61,10 +63,12 @@ scheduledTime | date-time | Optional requested date and time to process the b cancelledTimestamp | date-time | Optional date and time a batch change was cancelled by its creator. | #### SINGLE CHANGE ATTRIBUTES
+[singlechange-attributes]: #singlechange-attributes -A successful batch change response consists of a corresponding [SingleAddChange](#singleaddchange-attributes) or [SingleDeleteRRSetChange](#singledeleterrsetchange-attributes) for each batch change input. See the [batch change create](../api/create-batchchange) page for details on constructing a batch change request. +A successful batch change response consists of a corresponding [SingleAddChange](#singleaddchange-attributes) or [SingleDeleteRRSetChange](#singledeleterrsetchange-attributes) for each batch change input. See the [batch change create](create-batchchange.html) page for details on constructing a batch change request. #### SingleAddChange +[singleaddchange-attributes]: #singleaddchange-attributes name | type | description | ------------ | :------------ | :---------- | @@ -72,7 +76,7 @@ changeType | ChangeInputType | Type of change input. Can either be an **Add** inputName | string | The fully-qualified domain name of the record which was provided in the create batch request. | type | RecordType | Type of DNS record, supported records for batch changes are currently: **A**, **AAAA**, **CNAME**, and **PTR**. | ttl | long | The time-to-live in seconds. | -record | [RecordData](../api/recordset-model#record-data) | The data added for this record, which varies by record type. | +record | [RecordData](recordset-model.html#record-data) | The data added for this record, which varies by record type. | status | SingleChangeStatus | Status for this change. Can be one of: **Pending**, **Complete**, **Failed**, **NeedsReview** or **Rejected**. | recordName | string | The name of the record. Record names for the apex will be match the zone name (including terminating dot). | zoneName | string | The name of the zone. | @@ -84,13 +88,14 @@ validationErrors | Array of BatchChangeError | Array containing any validation e id | string | The unique identifier for this change. | #### SingleDeleteRRSetChange +[singledeleterrsetchange-attributes]: #singledeleterrsetchange-attributes name | type | description | ------------ | :------------ | :---------- | changeType | ChangeInputType | Type of change input. Can either be an **Add** or **DeleteRecordSet**. [See more details](#changetype-values) about behavior of `changeType` interaction. | inputName | string | The fully-qualified domain name of the record which was provided in the create batch request. | type | RecordType | Type of DNS record, supported records for batch changes are currently: **A**, **AAAA**, **CNAME**, and **PTR**. | -record | [RecordData](../api/recordset-model#record-data) | Optional. The data deleted for this record, which varies by record type. If not provided, the entire DNS recordset was deleted. | +record | [RecordData](recordset-model.html#record-data) | Optional. The data deleted for this record, which varies by record type. If not provided, the entire DNS recordset was deleted. | status | SingleChangeStatus | Status for this change. Can be one of: **Pending**, **Complete**, **Failed**, **NeedsReview** or **Rejected**. | recordName | string | The name of the record. Record names for the apex will be match the zone name (including terminating dot). | zoneName | string | The name of the zone. | @@ -103,6 +108,8 @@ id | string | The unique identifier for this change. | #### ChangeType Values +[changetype-values]: #changetype-values + There are two valid `changeType`s for a `SingleChange`: **Add** and **DeleteRecordSet** `changeType`s can be used independently or combined to achieve the desired behavior described below. @@ -113,6 +120,7 @@ There are two valid `changeType`s for a `SingleChange`: **Add** and **DeleteReco - Update an existing record set: 1. **DeleteRecordSet** specifying existing record data (single entry delete) or not specifying record data (full delete) *and* 2. **Add** with record data #### BATCH CHANGE EXAMPLE +[batchchange-example]: #batchchange-example Successful batch change response example with a [SingleAddChange](#singleaddchange-attributes) and a [SingleDeleteRRSetChange](#singledeleterrsetchange-attributes). diff --git a/modules/docs/src/main/tut/api/cancel-batchchange.md b/modules/docs/src/main/mdoc/api/cancel-batchchange.md similarity index 84% rename from modules/docs/src/main/tut/api/cancel-batchchange.md rename to modules/docs/src/main/mdoc/api/cancel-batchchange.md index 9b65f4c3b..ac3834014 100644 --- a/modules/docs/src/main/tut/api/cancel-batchchange.md +++ b/modules/docs/src/main/mdoc/api/cancel-batchchange.md @@ -8,7 +8,7 @@ section: "api" Cancels a batch change that is PendingReview. Only the user who created the batch change can cancel it. -Note: If [manual review is disabled](../../operator/config-api#manual-review) in the VinylDNS instance, +Note: If [manual review is disabled](../operator/config-api.html#manual-review) in the VinylDNS instance, users trying to access this endpoint will encounter a **404 Not Found** response since it will not exist. #### HTTP REQUEST @@ -34,4 +34,4 @@ Code | description | #### HTTP RESPONSE ATTRIBUTES -See [Batch Change Model attributes](../api/batchchange-model#batchchange-attributes) +See [Batch Change Model attributes](batchchange-model.html#batchchange-attributes) diff --git a/modules/docs/src/main/tut/api/create-batchchange.md b/modules/docs/src/main/mdoc/api/create-batchchange.md similarity index 88% rename from modules/docs/src/main/tut/api/create-batchchange.md rename to modules/docs/src/main/mdoc/api/create-batchchange.md index 02e6570a2..cad5b26f8 100644 --- a/modules/docs/src/main/tut/api/create-batchchange.md +++ b/modules/docs/src/main/mdoc/api/create-batchchange.md @@ -6,7 +6,7 @@ section: "api" # Create Batch Change -Creates a batch change with [SingleAddChanges](../api/batchchange-model#singleaddchange-attributes) and/or [SingleDeleteRRSetChanges](../api/batchchange-model#singledeleterrsetchange-attributes) across different zones. A delete and add of the same record will be treated as an update on that record set. Regardless of the input order in the batch change, all deletes for the same recordset will be logically applied before the adds. +Creates a batch change with [SingleAddChanges](batchchange-model.html#singleaddchange-attributes) and/or [SingleDeleteRRSetChanges](batchchange-model.html#singledeleterrsetchange-attributes) across different zones. A delete and add of the same record will be treated as an update on that record set. Regardless of the input order in the batch change, all deletes for the same recordset will be logically applied before the adds. Current supported record types for creating a batch change are: **A**, **AAAA**, **CNAME**, **MX**, **PTR**, **TXT**. A batch must contain at least one change and no more than 20 changes. Supported record types for records in shared zones may vary. Contact your VinylDNS administrators to find the allowed record types. @@ -16,7 +16,7 @@ This does not apply to zone administrators or users with specific ACL access rul > POST /zones/batchrecordchanges?allowManualReview={true | false} -Note that the batch change request inputs are a subset of the full [batch change model](../api/batchchange-model#batchchange-attributes). +Note that the batch change request inputs are a subset of the full [batch change model](batchchange-model.html#batchchange-attributes). #### HTTP REQUEST PARAMS @@ -24,7 +24,7 @@ name | type | required? | description | ------------ | :------------ | ----------- | :---------- | comments | string | no | Optional comments about the batch change. | changes | Array of ChangeInput| yes | Set of *ChangeInput*s in the batch change. A *ChangeInput* is an [AddChangeInput](#addchangeinput-attributes) or [DeleteChangeInput](#deletechangeinput-attributes). Type is inferred from specified *changeType*.| -ownerGroupId | string | sometimes | Record ownership assignment. Required if any records in the batch change are in [shared zones](../api/zone-model#shared-zones) and are new or unowned. | +ownerGroupId | string | sometimes | Record ownership assignment. Required if any records in the batch change are in [shared zones](zone-model.html#shared-zones) and are new or unowned. | scheduledTime | date-time | no | Optional datetime. Stored as UTC. Batch change will not be processed until after the scheduled time. Required format is an ISO 8601 date time string.| allowManualReview | boolean | no | Optional override to control whether manual review is enabled for the batch change request. Default value is `true`. Must be passed in as a query parameter, not in the request body. | @@ -36,7 +36,7 @@ changeType | ChangeInputType | yes | Type of change input. Must be set inputName | string | yes | The fully qualified domain name of the record being added. For **PTR**, the input name is a valid IPv4 or IPv6 address. | type | RecordType | yes | Type of DNS record. Supported records for batch changes are currently: **A**, **AAAA**, **CNAME**, and **PTR**. | ttl | long | no | The time-to-live in seconds. The minimum and maximum values are 30 and 2147483647, respectively. If excluded, this will be set to the system default for new adds, or the existing TTL for updates | -record | [RecordData](../api/recordset-model#record-data) | yes | The data for the record. | +record | [RecordData](recordset-model.html#record-data) | yes | The data for the record. | ##### DeleteChangeInput @@ -45,7 +45,7 @@ name | type | required? | description | changeType | ChangeInputType | yes | Type of change input. Must be **DeleteRecordSet** for *DeleteChangeInput*. | inputName | string | yes | The fully qualified domain name of the record being deleted. | type | RecordType | yes | Type of DNS record. Supported records for batch changes are currently: **A**, **AAAA**, **CNAME**, and **PTR**. | -record | [RecordData](../api/recordset-model#record-data) | no | The data for the record. If specified, only this DNS entry for the existing DNS recordset will be deleted; if unspecified, the entire DNS recordset will be deleted. | +record | [RecordData](recordset-model.html#record-data) | no | The data for the record. If specified, only this DNS entry for the existing DNS recordset will be deleted; if unspecified, the entire DNS recordset will be deleted. | #### EXAMPLE HTTP REQUEST @@ -102,20 +102,21 @@ The first two items in the changes list are SingleAddChanges of an **A** record #### HTTP RESPONSE TYPES +[http-response-types]: #http-response-types Code | description | ------------ | :---------- | 202 | **Accepted** - The batch change is validated and is returned in the response body. Based on `status`, the batch will either be sent for immediate backend processing (`PendingProcessing`) or pending manual review (`PendingReview`). | -400 | **Bad Request** - Error in the batch change. See [Batch Change Errors](../api/batchchange-errors) page. | +400 | **Bad Request** - Error in the batch change. See [Batch Change Errors](batchchange-errors.html) page. | 403 | **Forbidden** - The user does not have the access required to perform the action. | 413 | **Request Entity Too Large** - Cannot request more than changes in a single batch change request. | 422 | **Unprocessable Entity** - the batch does not contain any changes, thus cannot be processed. | -A batch change goes through numerous validations before it is processed. This results in corresponding BadRequest or error responses. View the full list of batch change errors [here](../api/batchchange-errors). +A batch change goes through numerous validations before it is processed. This results in corresponding BadRequest or error responses. View the full list of batch change errors [here](batchchange-errors.html). #### HTTP RESPONSE ATTRIBUTES -On success, the response from create batch change includes the fields the user input, as well as some additional information provided by the system. This response is the same as that of [get batch change](../api/get-batchchange#http-response-attributes). +On success, the response from create batch change includes the fields the user input, as well as some additional information provided by the system. This response is the same as that of [get batch change](get-batchchange.html#http-response-attributes). #### EXAMPLE RESPONSE diff --git a/modules/docs/src/main/tut/api/create-group.md b/modules/docs/src/main/mdoc/api/create-group.md similarity index 100% rename from modules/docs/src/main/tut/api/create-group.md rename to modules/docs/src/main/mdoc/api/create-group.md diff --git a/modules/docs/src/main/tut/api/create-recordset.md b/modules/docs/src/main/mdoc/api/create-recordset.md similarity index 96% rename from modules/docs/src/main/tut/api/create-recordset.md rename to modules/docs/src/main/mdoc/api/create-recordset.md index 48af234b7..368e4eed4 100755 --- a/modules/docs/src/main/tut/api/create-recordset.md +++ b/modules/docs/src/main/mdoc/api/create-recordset.md @@ -20,8 +20,8 @@ zoneId | string | yes | id of the zone where the recordset name | string | yes | the name of the recordset being updated | type | string | yes | the type of recordset | ttl | integer | yes | the TTL in seconds | -records | array of record data | yes | record data for recordset, see [RecordSet Model](../api/recordset-model) | -ownerGroupId | string | no | Record ownership assignment, applicable if the recordset is in a [shared zone](../api/zone-model#shared-zones) | +records | array of record data | yes | record data for recordset, see [RecordSet Model](recordset-model.html) | +ownerGroupId | string | no | Record ownership assignment, applicable if the recordset is in a [shared zone](zone-model.html#shared-zones) | #### EXAMPLE HTTP REQUEST ``` diff --git a/modules/docs/src/main/tut/api/create-zone.md b/modules/docs/src/main/mdoc/api/create-zone.md similarity index 95% rename from modules/docs/src/main/tut/api/create-zone.md rename to modules/docs/src/main/mdoc/api/create-zone.md index 148d6d50c..d30a8f6fa 100755 --- a/modules/docs/src/main/tut/api/create-zone.md +++ b/modules/docs/src/main/mdoc/api/create-zone.md @@ -15,7 +15,7 @@ if no info is provided the default VinylDNS connections will be used #### HTTP REQUEST PARAMS -**zone fields** - adminGroupId, name, and email are required - refer to [zone model](../api/zone-model) | +**zone fields** - adminGroupId, name, and email are required - refer to [zone model](zone-model.html) | #### EXAMPLE HTTP REQUEST ``` @@ -41,7 +41,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | status | string | Status of zone change | -zone | map | Refer to [zone model](../api/zone-model) | +zone | map | Refer to [zone model](zone-model.html) | created | string | The timestamp (UTC) the change was initiated | changeType | string | Type of change requested (Create, Update, Sync, Delete); in this case Create | userId | string | The user id that initiated the change | diff --git a/modules/docs/src/main/tut/api/delete-group.md b/modules/docs/src/main/mdoc/api/delete-group.md similarity index 100% rename from modules/docs/src/main/tut/api/delete-group.md rename to modules/docs/src/main/mdoc/api/delete-group.md diff --git a/modules/docs/src/main/tut/api/delete-recordset.md b/modules/docs/src/main/mdoc/api/delete-recordset.md similarity index 100% rename from modules/docs/src/main/tut/api/delete-recordset.md rename to modules/docs/src/main/mdoc/api/delete-recordset.md diff --git a/modules/docs/src/main/tut/api/delete-zone.md b/modules/docs/src/main/mdoc/api/delete-zone.md similarity index 96% rename from modules/docs/src/main/tut/api/delete-zone.md rename to modules/docs/src/main/mdoc/api/delete-zone.md index aa3a90fdd..a88517d65 100755 --- a/modules/docs/src/main/tut/api/delete-zone.md +++ b/modules/docs/src/main/mdoc/api/delete-zone.md @@ -8,7 +8,7 @@ section: "api" Abandons an existing zone that has already been connected to. The zone will be disconnected from VinylDNS, but the RecordSets still exist in the backend DNS zone. -To delete the RecordSets see [Delete RecordSet](../api/delete-recordset) +To delete the RecordSets see [Delete RecordSet](delete-recordset.html) *Note: We do not recommend that you abandon zones, as your zone history will be lost after the Delete. This endpoint is provided in certain situations where a zone was incorrectly started.* diff --git a/modules/docs/src/main/tut/api/get-batchchange.md b/modules/docs/src/main/mdoc/api/get-batchchange.md similarity index 92% rename from modules/docs/src/main/tut/api/get-batchchange.md rename to modules/docs/src/main/mdoc/api/get-batchchange.md index 549952a56..f3bd10ded 100644 --- a/modules/docs/src/main/tut/api/get-batchchange.md +++ b/modules/docs/src/main/mdoc/api/get-batchchange.md @@ -38,11 +38,11 @@ userId | string | The unique identifier of the user that created the userName | string | The username of the user that created the batch change. | comments | string | Optional comments about the batch change. | createdTimestamp | date-time | The timestamp (UTC) when the batch change was created. | -changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](../api/batchchange-model#singleaddchange-attributes) or a [SingleDeleteRRSetChange](../api/batchchange-model#singledeleterrsetchange-). | -status | BatchChangeStatus | [Status of the batch change](../api/batchchange-model#batchchange-attributes). | +changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](batchchange-model.html#singleaddchange-attributes) or a [SingleDeleteRRSetChange](batchchange-model.html#singledeleterrsetchange-attributes). | +status | BatchChangeStatus | [Status of the batch change](batchchange-model.html#batchchange-attributes). | id | string | The unique identifier for this batch change. | scheduledTime | date-time | Optional requested date and time to process the batch change. | -approvalStatus| BatchChangeApprovalStatus |[Approval status of the batch change](../api/batchchange-model#batchchange-attributes). | +approvalStatus| BatchChangeApprovalStatus |[Approval status of the batch change](batchchange-model.html#batchchange-attributes). | reviewerId | string | Optional identifier of reviewer if batch change required manual review | reviewComment | string | Optional comment by reviewer if batch change required manual review | reviewTimestamp | date-time | Optional timestamp (UTC) when the batch change was reviewed if manual review was required. | diff --git a/modules/docs/src/main/tut/api/get-group.md b/modules/docs/src/main/mdoc/api/get-group.md similarity index 100% rename from modules/docs/src/main/tut/api/get-group.md rename to modules/docs/src/main/mdoc/api/get-group.md diff --git a/modules/docs/src/main/tut/api/get-recordset-change.md b/modules/docs/src/main/mdoc/api/get-recordset-change.md similarity index 100% rename from modules/docs/src/main/tut/api/get-recordset-change.md rename to modules/docs/src/main/mdoc/api/get-recordset-change.md diff --git a/modules/docs/src/main/tut/api/get-recordset.md b/modules/docs/src/main/mdoc/api/get-recordset.md similarity index 96% rename from modules/docs/src/main/tut/api/get-recordset.md rename to modules/docs/src/main/mdoc/api/get-recordset.md index 9e5d4ce6a..bfa71aaac 100755 --- a/modules/docs/src/main/tut/api/get-recordset.md +++ b/modules/docs/src/main/mdoc/api/get-recordset.md @@ -37,7 +37,7 @@ records | array of record data | Array of record data objects | id | string | The unique ID of the record set | account | string | **DEPRECATED** the ID of the account that created the record set | accessLevel | string | accessLevel that user has to record set based off acl rules and whether or not user is in Zone Admin Group | -ownerGroupId | string | Record ownership assignment, if found, applicable if the recordset is in a [shared zone](../api/zone-model#shared-zones) | +ownerGroupId | string | Record ownership assignment, if found, applicable if the recordset is in a [shared zone](zone-model.html#shared-zones) | ownerGroupName | string | Name of assigned owner group, if found | #### EXAMPLE RESPONSE diff --git a/modules/docs/src/main/tut/api/get-zone-by-id.md b/modules/docs/src/main/mdoc/api/get-zone-by-id.md similarity index 95% rename from modules/docs/src/main/tut/api/get-zone-by-id.md rename to modules/docs/src/main/mdoc/api/get-zone-by-id.md index 36def8b05..ecb9605db 100755 --- a/modules/docs/src/main/tut/api/get-zone-by-id.md +++ b/modules/docs/src/main/mdoc/api/get-zone-by-id.md @@ -25,7 +25,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -zone | map | refer to [zone model](../api/zone-model) | +zone | map | refer to [zone model](zone-model.html) | #### EXAMPLE RESPONSE diff --git a/modules/docs/src/main/tut/api/get-zone-by-name.md b/modules/docs/src/main/mdoc/api/get-zone-by-name.md similarity index 95% rename from modules/docs/src/main/tut/api/get-zone-by-name.md rename to modules/docs/src/main/mdoc/api/get-zone-by-name.md index 167ee77f0..6a3cdff08 100644 --- a/modules/docs/src/main/tut/api/get-zone-by-name.md +++ b/modules/docs/src/main/mdoc/api/get-zone-by-name.md @@ -25,7 +25,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -zone | map | refer to [zone model](../api/zone-model) | +zone | map | refer to [zone model](zone-model.html) | #### EXAMPLE RESPONSE diff --git a/modules/docs/src/main/mdoc/api/index.md b/modules/docs/src/main/mdoc/api/index.md new file mode 100755 index 000000000..ce3b46be6 --- /dev/null +++ b/modules/docs/src/main/mdoc/api/index.md @@ -0,0 +1,13 @@ +--- +layout: docs +title: "API documentation" +section: "api" +--- + +# API documentation + +* [Authentication](auth-mechanism.html) +* [Zone](zone-model.html) +* [RecordSet](recordset-model.html) +* [Batch Change](batchchange-model.html) +* [Membership](membership-model.html) diff --git a/modules/docs/src/main/tut/api/list-batchchanges.md b/modules/docs/src/main/mdoc/api/list-batchchanges.md similarity index 99% rename from modules/docs/src/main/tut/api/list-batchchanges.md rename to modules/docs/src/main/mdoc/api/list-batchchanges.md index 02e112423..c3034436a 100644 --- a/modules/docs/src/main/tut/api/list-batchchanges.md +++ b/modules/docs/src/main/mdoc/api/list-batchchanges.md @@ -52,7 +52,7 @@ userName | string | The username of the user that created the batch ch comments | string | Conditional: comments about the batch change, if provided. | createdTimestamp | date-time | The timestamp (UTC) when the batch change was created. | totalChanges | int | The total number of single changes within the batch change. | -status | BatchChangeStatus | [Status of the batch change](../api/batchchange-model#batchchange-attributes). | +status | BatchChangeStatus | [Status of the batch change](batchchange-model.html#batchchange-attributes). | id | string | The unique identifier for this batch change. | ownerGroupName | string | Conditional: Record ownership assignment, if provided. | approvalStatus | BatchChangeApprovalStatus | Whether the batch change is currently awaiting manual review. Can be one of **AutoApproved**, **PendingReview**, **ManuallyApproved**, **Rejected**, or **Cancelled**. | diff --git a/modules/docs/src/main/tut/api/list-group-activity.md b/modules/docs/src/main/mdoc/api/list-group-activity.md similarity index 96% rename from modules/docs/src/main/tut/api/list-group-activity.md rename to modules/docs/src/main/mdoc/api/list-group-activity.md index 4f8d7ad8a..b05d85650 100755 --- a/modules/docs/src/main/tut/api/list-group-activity.md +++ b/modules/docs/src/main/mdoc/api/list-group-activity.md @@ -40,8 +40,8 @@ maxItems | integer | maxItems sent in request, default is 100 | name | type | description | ------------ | ------------- | :---------- | -newGroup | map | The new group as a result of the change, refer to [Membership Model]("../api/membership-model") | -oldGroup | map | The old group before the change, refer to [Membership Model]("../api/membership-model") | +newGroup | map | The new group as a result of the change, refer to [Membership Model]("/api/membership-model") | +oldGroup | map | The old group before the change, refer to [Membership Model]("/api/membership-model") | created | string | Millisecond timestamp that change was created userId | string | User Id of user who made the change | changeType | string | The type change, either Create, Update, or Delete | diff --git a/modules/docs/src/main/tut/api/list-group-admins.md b/modules/docs/src/main/mdoc/api/list-group-admins.md similarity index 93% rename from modules/docs/src/main/tut/api/list-group-admins.md rename to modules/docs/src/main/mdoc/api/list-group-admins.md index 2ad4825a1..64a978807 100755 --- a/modules/docs/src/main/tut/api/list-group-admins.md +++ b/modules/docs/src/main/mdoc/api/list-group-admins.md @@ -24,7 +24,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -admins | Array of Users | refer to [membership model](../api/membership-model) | +admins | Array of Users | refer to [membership model](membership-model.html) | #### EXAMPLE RESPONSE diff --git a/modules/docs/src/main/tut/api/list-group-members.md b/modules/docs/src/main/mdoc/api/list-group-members.md similarity index 94% rename from modules/docs/src/main/tut/api/list-group-members.md rename to modules/docs/src/main/mdoc/api/list-group-members.md index dc21e7fb9..4d863838a 100755 --- a/modules/docs/src/main/tut/api/list-group-members.md +++ b/modules/docs/src/main/mdoc/api/list-group-members.md @@ -31,7 +31,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -members | Array of Users | refer to [membership model](../api/membership-model), these Users will also include an isAdmin attribute | +members | Array of Users | refer to [membership model](membership-model.html), these Users will also include an isAdmin attribute | startFrom | *any* | startFrom sent in request, will not be returned if not provided | nextId | *any* | nextId, used as startFrom parameter of next page request, will not be returned if members are exhausted | maxItems | integer | maxItems sent in request, default is 100 | diff --git a/modules/docs/src/main/tut/api/list-groups.md b/modules/docs/src/main/mdoc/api/list-groups.md similarity index 97% rename from modules/docs/src/main/tut/api/list-groups.md rename to modules/docs/src/main/mdoc/api/list-groups.md index d4ac1252a..b12458f61 100755 --- a/modules/docs/src/main/tut/api/list-groups.md +++ b/modules/docs/src/main/mdoc/api/list-groups.md @@ -32,7 +32,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -groups | Array of Groups | refer to [membership model](../api/membership-model) | +groups | Array of Groups | refer to [membership model](membership-model.html) | groupNameFilter | string | name filter sent in request | startFrom | *any* | startFrom sent in request, will not be returned if not provided | nextId | *any* | nextId, used as startFrom parameter of next page request, will not be returned if groups are exhausted | diff --git a/modules/docs/src/main/tut/api/list-recordset-changes.md b/modules/docs/src/main/mdoc/api/list-recordset-changes.md similarity index 100% rename from modules/docs/src/main/tut/api/list-recordset-changes.md rename to modules/docs/src/main/mdoc/api/list-recordset-changes.md diff --git a/modules/docs/src/main/tut/api/list-recordsets-by-zone.md b/modules/docs/src/main/mdoc/api/list-recordsets-by-zone.md similarity index 94% rename from modules/docs/src/main/tut/api/list-recordsets-by-zone.md rename to modules/docs/src/main/mdoc/api/list-recordsets-by-zone.md index 287f1c28e..cd0818669 100755 --- a/modules/docs/src/main/tut/api/list-recordsets-by-zone.md +++ b/modules/docs/src/main/mdoc/api/list-recordsets-by-zone.md @@ -17,7 +17,7 @@ Retrieves a list of RecordSets from the zone name | type | required? | description | ------------ | ------------- | ----------- | :---------- | recordNameFilter | string | no | Characters that are part of the record name to search for. The wildcard character `*` is supported, for example `www*`. Omit the wildcard when searching for an exact record name. | -recordTypeFilter | Array of RecordType | no | An array of record types to filter for listing record sets. Refer to [recordset mode](../api/recordset-model) for supported types. Invalid record types will be ignored. If left empty or no valid record types are provided, then all record types will be returned. | +recordTypeFilter | Array of RecordType | no | An array of record types to filter for listing record sets. Refer to [recordset mode](recordset-model.html) for supported types. Invalid record types will be ignored. If left empty or no valid record types are provided, then all record types will be returned. | nameSort | string | no | Name sort order for record sets returned by list record set response. Valid values are `ASC` (ascending; default) and `DESC` (descending). startFrom | *any* | no | In order to advance through pages of results, the startFrom is set to the `nextId` that is returned on the previous response. It is up to the client to maintain previous pages if the client wishes to advance forward and backward. If not specified, will return the first page of results | maxItems | integer | no | The number of items to return in the page. Valid values are 1 to 100. Defaults to 100 if not provided. | @@ -35,7 +35,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -recordSets | Array of RecordSets | refer to [recordset model](../api/recordset-model), the RecordSet data will also include the accessLevel the requesting user has based off acl rules and membership in Zone Admin Group | +recordSets | Array of RecordSets | refer to [recordset model](recordset-model.html), the RecordSet data will also include the accessLevel the requesting user has based off acl rules and membership in Zone Admin Group | startFrom | *any* | startFrom sent in request, will not be returned if not provided | nextId | *any* | nextId, used as startFrom parameter of next page request, will not be returned if record sets are exhausted | maxItems | integer | maxItems sent in request, default is 100 | diff --git a/modules/docs/src/main/tut/api/list-recordsets-global.md b/modules/docs/src/main/mdoc/api/list-recordsets-global.md similarity index 94% rename from modules/docs/src/main/tut/api/list-recordsets-global.md rename to modules/docs/src/main/mdoc/api/list-recordsets-global.md index 6a0cb01f8..979348dd2 100644 --- a/modules/docs/src/main/tut/api/list-recordsets-global.md +++ b/modules/docs/src/main/mdoc/api/list-recordsets-global.md @@ -17,7 +17,7 @@ Retrieves a list of RecordSets globally in the VinylDNS database based on search name | type | required? | description | ------------ | ------------- | ----------- | :---------- | recordNameFilter | string | yes | Characters that are part of the record name to search for. The wildcard character `*` is supported, for example `www*`. Omit the wildcard when searching for an exact record name. At least two alphanumeric characters are **required** for searching. | -recordTypeFilter | Array of RecordType | no | An array of record types to filter for listing record sets. Refer to [recordset mode](../api/recordset-model) for supported types. Invalid record types will be ignored. If left empty or no valid record types are provided, then all record types will be returned. | +recordTypeFilter | Array of RecordType | no | An array of record types to filter for listing record sets. Refer to [recordset mode](recordset-model.html) for supported types. Invalid record types will be ignored. If left empty or no valid record types are provided, then all record types will be returned. | recordOwnerGroupFilter | string | no | Owner group ID for record set. | nameSort | string | no | Name sort order for record sets returned by list record set response. Valid values are `ASC` (ascending; default) and `DESC` (descending). | startFrom | *any* | no | In order to advance through pages of results, the startFrom is set to the `nextId` that is returned on the previous response. It is up to the client to maintain previous pages if the client wishes to advance forward and backward. If not specified, will return the first page of results | @@ -34,7 +34,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -recordSets | Array of RecordSets | refer to [recordset model](../api/recordset-model) | +recordSets | Array of RecordSets | refer to [recordset model](recordset-model.html) | startFrom | *any* | startFrom sent in request, will not be returned if not provided | nextId | *any* | nextId, used as startFrom parameter of next page request, will not be returned if record sets are exhausted | maxItems | integer | `maxItems` sent in request, default is 100 | diff --git a/modules/docs/src/main/tut/api/list-zone-changes.md b/modules/docs/src/main/mdoc/api/list-zone-changes.md similarity index 100% rename from modules/docs/src/main/tut/api/list-zone-changes.md rename to modules/docs/src/main/mdoc/api/list-zone-changes.md diff --git a/modules/docs/src/main/tut/api/list-zones.md b/modules/docs/src/main/mdoc/api/list-zones.md similarity index 97% rename from modules/docs/src/main/tut/api/list-zones.md rename to modules/docs/src/main/mdoc/api/list-zones.md index 06374cbce..dc2ae7c50 100755 --- a/modules/docs/src/main/tut/api/list-zones.md +++ b/modules/docs/src/main/mdoc/api/list-zones.md @@ -33,7 +33,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -zones | Array of [Zones](../api/zone-model#zone-attributes) | An array of the zones found. The zones are sorted alphabetically by zone name. | +zones | Array of [Zones](zone-model.html#zone-attributes) | An array of the zones found. The zones are sorted alphabetically by zone name. | startFrom | *any* | (optional) The startFrom parameter that was sent in on the HTTP request. Will not be present if the startFrom parameter was not sent | nextId | *any* | (optional) The identifier to be passed in as the *startFrom* parameter to retrieve the next page of results. If there are no results left, this field will not be present.| maxItems | int | The maxItems parameter that was sent in the HTTP request. This will be 100 if not sent. | diff --git a/modules/docs/src/main/tut/api/membership-model.md b/modules/docs/src/main/mdoc/api/membership-model.md similarity index 95% rename from modules/docs/src/main/tut/api/membership-model.md rename to modules/docs/src/main/mdoc/api/membership-model.md index c1c8c26a8..878894b8b 100755 --- a/modules/docs/src/main/tut/api/membership-model.md +++ b/modules/docs/src/main/mdoc/api/membership-model.md @@ -16,12 +16,12 @@ section: "api" #### MEMBERSHIP BREAKDOWN Every zone can be connected to by only one group in VinylDNS. That initial group will be the admin group for that zone, -which can be changed later on in a [Zone Update](../api/update-zone). Every member of the admin group +which can be changed later on in a [Zone Update](update-zone.html). Every member of the admin group will be an admin of that zone, and can preform zone syncs, zone updates, zone deletes, and record set changes regardless of any Access Control Rules set on them.

While users in the admin group will have complete zone access, further users can be given limited membership through [Zone -ACL Rules](../api/zone-model#zone-acl-rule-attr) +ACL Rules](zone-model.html#zone-acl-rule-attr) #### GROUP ATTRIBUTES
diff --git a/modules/docs/src/main/tut/api/recordset-model.md b/modules/docs/src/main/mdoc/api/recordset-model.md similarity index 98% rename from modules/docs/src/main/tut/api/recordset-model.md rename to modules/docs/src/main/mdoc/api/recordset-model.md index 25975c235..3cba2f89f 100755 --- a/modules/docs/src/main/tut/api/recordset-model.md +++ b/modules/docs/src/main/mdoc/api/recordset-model.md @@ -58,7 +58,7 @@ Current supported record types are: A, AAAA, CNAME, DS, MX, NAPTR, NS, PTR, SOA, Each individual record encodes its data in a record data object, in which each record type has different required attributes

SOA records and NS origin records (record with the same name as the zone) are currently read-only and cannot be created, updated or deleted. -Non-origin NS records can be created or updated for [approved name servers](../operator/config-api#additional-configuration-settings) only. Any non-origin NS record can be deleted. +Non-origin NS records can be created or updated for [approved name servers](../operator/config-api.html#additional-configuration-settings) only. Any non-origin NS record can be deleted. record type | attribute | type | ------------ | :---------- | :---------- | diff --git a/modules/docs/src/main/tut/api/reject-batchchange.md b/modules/docs/src/main/mdoc/api/reject-batchchange.md similarity index 92% rename from modules/docs/src/main/tut/api/reject-batchchange.md rename to modules/docs/src/main/mdoc/api/reject-batchchange.md index 28f93ac46..cbd2089f6 100644 --- a/modules/docs/src/main/tut/api/reject-batchchange.md +++ b/modules/docs/src/main/mdoc/api/reject-batchchange.md @@ -9,7 +9,7 @@ section: "api" Manually rejects a batch change in pending review status given the batch change ID, resulting in immediate failure. Only system administrators (ie. support or super user) can manually review a batch change. -Note: If [manual review is disabled](../../operator/config-api#manual-review) in the VinylDNS instance, +Note: If [manual review is disabled](../operator/config-api.html#manual-review) in the VinylDNS instance, users trying to access this endpoint will encounter a **404 Not Found** response since it will not exist. @@ -51,8 +51,8 @@ userId | string | The unique identifier of the user that created the userName | string | The username of the user that created the batch change. | comments | string | Conditional: comments about the batch change, if provided. | createdTimestamp | date-time | The timestamp (UTC) when the batch change was created. | -changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](../api/batchchange-model#singleaddchange-attributes) or a [SingleDeleteRRSetChange](../api/batchchange-model#singledeleterrsetchange-). | -status | BatchChangeStatus | [Status of the batch change](../api/batchchange-model#batchchange-attributes). | +changes | Array of SingleChange | Array of single changes within a batch change. A *SingleChange* can either be a [SingleAddChange](batchchange-model.html#singleaddchange-attributes) or a [SingleDeleteRRSetChange](batchchange-model.html#singledeleterrsetchange-attributes). | +status | BatchChangeStatus | [Status of the batch change](batchchange-model.html#batchchange-attributes). | id | string | The unique identifier for this batch change. | ownerGroupId | string | Conditional: Record ownership assignment, if provided. | approvalStatus | BatchChangeApprovalStatus | Whether the batch change is currently awaiting manual review. Will be **Rejected** status when rejecting. | diff --git a/modules/docs/src/main/tut/api/sync-zone.md b/modules/docs/src/main/mdoc/api/sync-zone.md similarity index 97% rename from modules/docs/src/main/tut/api/sync-zone.md rename to modules/docs/src/main/mdoc/api/sync-zone.md index 163d09a57..5289681d0 100755 --- a/modules/docs/src/main/tut/api/sync-zone.md +++ b/modules/docs/src/main/mdoc/api/sync-zone.md @@ -41,7 +41,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | status | string | Sync status | -zone | map | Refer to [zone model](../api/zone-model) | +zone | map | Refer to [zone model](zone-model.html) | created | string | The timestamp (UTC) the sync was initiated | changeType | string | Type of change requested (Create, Update, Sync, Delete); in this case Sync | userId | string | The user ID that initiated the change | diff --git a/modules/docs/src/main/tut/api/update-group.md b/modules/docs/src/main/mdoc/api/update-group.md similarity index 100% rename from modules/docs/src/main/tut/api/update-group.md rename to modules/docs/src/main/mdoc/api/update-group.md diff --git a/modules/docs/src/main/tut/api/update-recordset.md b/modules/docs/src/main/mdoc/api/update-recordset.md similarity index 98% rename from modules/docs/src/main/tut/api/update-recordset.md rename to modules/docs/src/main/mdoc/api/update-recordset.md index 5a86dcc13..ab036a0e9 100755 --- a/modules/docs/src/main/tut/api/update-recordset.md +++ b/modules/docs/src/main/mdoc/api/update-recordset.md @@ -22,8 +22,8 @@ id | string | yes | the id of the recordset being upda name | string | yes | the name of the recordset being updated | type | string | yes | the type of recordset | ttl | integer | yes | the TTL in seconds | -records | array of record data | yes | record data for recordset, see [RecordSet Model](../api/recordset-model) | -ownerGroupId | string | sometimes* | Record ownership assignment, applicable if the recordset is in a [shared zone](../api/zone-model#shared-zones) | +records | array of record data | yes | record data for recordset, see [RecordSet Model](recordset-model.html) | +ownerGroupId | string | sometimes* | Record ownership assignment, applicable if the recordset is in a [shared zone](zone-model.html#shared-zones) | *Note: If a recordset has an ownerGroupId you must include that value in the update request, otherwise the update will remove the ownerGroupId value diff --git a/modules/docs/src/main/tut/api/update-zone.md b/modules/docs/src/main/mdoc/api/update-zone.md similarity index 96% rename from modules/docs/src/main/tut/api/update-zone.md rename to modules/docs/src/main/mdoc/api/update-zone.md index 7f1c773aa..18ca2c0d2 100755 --- a/modules/docs/src/main/tut/api/update-zone.md +++ b/modules/docs/src/main/mdoc/api/update-zone.md @@ -14,7 +14,7 @@ Updates an existing zone that has already been connected to. Used to update the #### HTTP REQUEST PARAMS -**zone fields**, refer to [zone model](../api/zone-model) | +**zone fields**, refer to [zone model](zone-model.html) | #### EXAMPLE HTTP REQUEST @@ -54,7 +54,7 @@ Code | description | name | type | description | ------------ | ------------- | :---------- | -zone | map | Zone sent with update request, refer to [zone model](../api/zone-model) | +zone | map | Zone sent with update request, refer to [zone model](zone-model.html) | userId | string | The user id that initiated the change | changeType | string | Type of change requested (Create, Update, Sync, Delete); in this case Update | created | string | The timestamp (UTC) the change was initiated | diff --git a/modules/docs/src/main/tut/api/zone-model.md b/modules/docs/src/main/mdoc/api/zone-model.md similarity index 96% rename from modules/docs/src/main/tut/api/zone-model.md rename to modules/docs/src/main/mdoc/api/zone-model.md index bdda25353..07a613def 100755 --- a/modules/docs/src/main/tut/api/zone-model.md +++ b/modules/docs/src/main/mdoc/api/zone-model.md @@ -97,7 +97,7 @@ accessLevel | string | Access level of the user requesting the zone. Curr #### ZONE ACL RULE ATTRIBUTES ACL Rules are used to govern user and group access to record operations on a zone. ACL Rules can be associated with a specific user, or all users in a specified group. If neither a user _or_ a group is attached to an ACL rule, then the rule applies to _all_ users in the system.

-Use the [Zone Update](../api/update-zone) endpoint to update the **acl** attribute of the zone +Use the [Zone Update](update-zone.html) endpoint to update the **acl** attribute of the zone > **Important!** If a user is mentioned on an ACL Rule directly, or is a member of a group that is mentioned on an ACL Rule, that user will be able to see the zone. @@ -261,4 +261,4 @@ key | string | The TSIG secret key used to sign requests when com ### SHARED ZONES -Shared zones allow for a more open management of records in VinylDNS. Zone administrators can assign ownership of records to groups. Any user in VinylDNS can claim existing unowned records in shared zones, as well as create records in those zones. Once a record is owned, only users in the record owner group, the zone administrators and those with relevant ACL rules can modify or delete the record. The [batch change API endpoint](../api/create-batchchange) and [batch change area of the portal](../portal/batch-changes) are where users can create new records in shared zones, modify records they own, or claim unowned records. If a zone's shared state changes to false the record ownership access is no longer applicable. +Shared zones allow for a more open management of records in VinylDNS. Zone administrators can assign ownership of records to groups. Any user in VinylDNS can claim existing unowned records in shared zones, as well as create records in those zones. Once a record is owned, only users in the record owner group, the zone administrators and those with relevant ACL rules can modify or delete the record. The [batch change API endpoint](create-batchchange.html) and [batch change area of the portal](../portal/batch-changes.html) are where users can create new records in shared zones, modify records they own, or claim unowned records. If a zone's shared state changes to false the record ownership access is no longer applicable. diff --git a/modules/docs/src/main/tut/faq.md b/modules/docs/src/main/mdoc/faq.md similarity index 98% rename from modules/docs/src/main/tut/faq.md rename to modules/docs/src/main/mdoc/faq.md index 0b42f9d37..043dc2512 100755 --- a/modules/docs/src/main/tut/faq.md +++ b/modules/docs/src/main/mdoc/faq.md @@ -87,4 +87,4 @@ If you need new API credentials select *Regenerate Credentials*. This will inval If you use any VinylDNS tools beyond the portal you will need to provide those tools with your new credentials. ### 9. How are requests authenticated to the VinylDNS API? -Refer to [API Authentication](../api/auth-mechanism). +Refer to [API Authentication](api/auth-mechanism.html). diff --git a/modules/docs/src/main/tut/getting-help.md b/modules/docs/src/main/mdoc/getting-help.md similarity index 100% rename from modules/docs/src/main/tut/getting-help.md rename to modules/docs/src/main/mdoc/getting-help.md diff --git a/modules/docs/src/main/tut/index.md b/modules/docs/src/main/mdoc/index.md similarity index 95% rename from modules/docs/src/main/tut/index.md rename to modules/docs/src/main/mdoc/index.md index 0c6c9984f..f06568418 100644 --- a/modules/docs/src/main/tut/index.md +++ b/modules/docs/src/main/mdoc/index.md @@ -7,7 +7,7 @@ position: 1 # Welcome -![VinylDNS logo](/img/vinyldns-fulllogoDARK-300.png) +![VinylDNS logo](../img/vinyldns-fulllogoDARK-300.png) VinylDNS is a vendor agnostic front-end for enabling self-service DNS and streamlining DNS operations. It is designed to integrate with your existing DNS infrastructure, and provides extensibility to fit your installation. VinylDNS manages millions of DNS records supporting thousands of engineers in production at [Comcast](http://www.comcast.com). diff --git a/modules/docs/src/main/tut/operator/config-api.md b/modules/docs/src/main/mdoc/operator/config-api.md similarity index 98% rename from modules/docs/src/main/tut/operator/config-api.md rename to modules/docs/src/main/mdoc/operator/config-api.md index 245057edb..1093aea04 100644 --- a/modules/docs/src/main/tut/operator/config-api.md +++ b/modules/docs/src/main/mdoc/operator/config-api.md @@ -77,9 +77,9 @@ There are a couple of implementation-dependent settings that need to be specifie * `messages-per-poll`: Number of messages retrieved in a single queue receive request. Valid values are 1 through 10 (default). * `polling-interval`: Interval to delay between each poll for messages. -If using SQS, be sure to follow the [AWS SQS Setup Guide](setup-sqs) first to get the values you need to configure here. +If using SQS, be sure to follow the [AWS SQS Setup Guide](setup-sqs.html) first to get the values you need to configure here. -If using MySQL, follow the [MySQL Setup Guide](setup-mysql) first to get the values you need to configure here. +If using MySQL, follow the [MySQL Setup Guide](setup-mysql.html) first to get the values you need to configure here. The following in a sample SQS config: @@ -167,9 +167,9 @@ You must have all of the following required API repositories configured in exact | ZoneChange | X | X | -If using MySQL, follow the [MySQL Setup Guide](setup-mysql) first to get the values you need to configure here. +If using MySQL, follow the [MySQL Setup Guide](setup-mysql.html) first to get the values you need to configure here. -If using DynamoDB, follow the [AWS DynamoDB Setup Guide](setup-dynamodb) first to get the values you need to configure here. +If using DynamoDB, follow the [AWS DynamoDB Setup Guide](setup-dynamodb.html) first to get the values you need to configure here. ```yaml @@ -334,7 +334,7 @@ VinylDNS has three ways of indicating zone connections: 1. Global default connection applies to all zones unless overridden by one of the following connections. This configuration is required. 2. Backends allows you to specify zone connection information for an individual zone by choosing a pre-configured zone connection. This configuration is optional. -3. Zone level override allows you to specify zone update and transfer connection information _for each zone_. More information is in the [Zone Model](../api/zone-model). +3. Zone level override allows you to specify zone update and transfer connection information _for each zone_. More information is in the [Zone Model](../api/zone-model.html). VinylDNS has **2** connections for each zone: @@ -511,8 +511,11 @@ sns { signing-region = "us-east-1" } } +``` ### Batch Manual Review Enabled +[manual-review]: #manual-review + Configuration setting that determines whether batch changes with non-fatal errors can be reviewed rather than failing immediately. When enabling manual review, the expectation is that a DNS technician is actively querying and addressing batch change requests that are in a manual review state. If your process flow does not accommodate this expectation, we advise disabling diff --git a/modules/docs/src/main/tut/operator/config-portal.md b/modules/docs/src/main/mdoc/operator/config-portal.md similarity index 96% rename from modules/docs/src/main/tut/operator/config-portal.md rename to modules/docs/src/main/mdoc/operator/config-portal.md index d1bd55828..7f119ae08 100644 --- a/modules/docs/src/main/tut/operator/config-portal.md +++ b/modules/docs/src/main/mdoc/operator/config-portal.md @@ -18,11 +18,11 @@ The portal configuration is much smaller than the API Server. - [Full Example Config](#full-example-config) ## Database Configuration -VinylDNS supports both DynamoDB and MySQL backends (see [API Database Configuration](config-api#database-configuration)). +VinylDNS supports both DynamoDB and MySQL backends (see [API Database Configuration](config-api.html#database-configuration)). -If using DynamoDB, follow the [AWS DynamoDB Setup Guide](setup-dynamodb) first to get the values you need to configure here. +If using DynamoDB, follow the [AWS DynamoDB Setup Guide](setup-dynamodb.html) first to get the values you need to configure here. -If using MySQL, follow the [MySQL Setup Guide](setup-mysql) first to get the values you need to configure here. +If using MySQL, follow the [MySQL Setup Guide](setup-mysql.html) first to get the values you need to configure here. The Portal uses the following tables: @@ -139,7 +139,7 @@ vinyldns { ``` ## LDAP -Be sure to follow the [LDAP Setup Guide](setup-ldap) first to get the values you need to configure here. +Be sure to follow the [LDAP Setup Guide](setup-ldap.html) first to get the values you need to configure here. LDAP configuration connects VinylDNS to your Directory where user information is stored. @@ -378,4 +378,4 @@ links = [ icon = "fa fa-file-text-o" } ] -``` \ No newline at end of file +``` diff --git a/modules/docs/src/main/mdoc/operator/index.md b/modules/docs/src/main/mdoc/operator/index.md new file mode 100644 index 000000000..4f07fbd44 --- /dev/null +++ b/modules/docs/src/main/mdoc/operator/index.md @@ -0,0 +1,13 @@ +--- +layout: docs +title: "Operator Guide" +section: "operator_menu" +position: 3 +--- + +# Operator Guide +This operator guide will help administrators install and operate VinylDNS API and Portal. + +1. [Setup the pre-requisite systems](pre.html) - VinylDNS has several external dependencies that are required in order to operate. +2. [Setup the VinylDNS API server](setup-api.html) +3. [Setup the VinylDNS Portal server](setup-portal.html) diff --git a/modules/docs/src/main/tut/operator/pre.md b/modules/docs/src/main/mdoc/operator/pre.md similarity index 93% rename from modules/docs/src/main/tut/operator/pre.md rename to modules/docs/src/main/mdoc/operator/pre.md index 1cdce2843..a3d1c7dfb 100644 --- a/modules/docs/src/main/tut/operator/pre.md +++ b/modules/docs/src/main/mdoc/operator/pre.md @@ -30,7 +30,7 @@ for zone transfers. Connections (DDNS and Transfer) can be setup * `per zone` - every zone can override the global default by specifying its own connections. -* `global default` - assuming you are managing a primary system, you can [configure default zone connections](config-api#default-zone-connections). +* `global default` - assuming you are managing a primary system, you can [configure default zone connections](config-api.html#default-zone-connections). When no zone connection is specified on a zone, the global defaults will be used. ## Database @@ -77,7 +77,7 @@ to use DynamoDB as the query interface is limited. A SQL interface with `JOIN`s It should also be noted that all of the repositories have also been implemented in MySQL despite most currently running in DynamoDB in our VinylDNS instance. -Review the [Setup MySQL Guide](setup-mysql) for more information. +Review the [Setup MySQL Guide](setup-mysql.html) for more information. ### AWS DynamoDB VinylDNS has gone through several architecture evolutions. Along the way, DynamoDB was chosen as the data store due to @@ -97,7 +97,7 @@ VinylDNS has implemented DynamoDB for the following repositories: Currently using DynamoDB would also require the user to either use MySQL for the batch change and zone repositories or also provide an implementation for those repositories in a different data store. -Review the [Setup AWS DynamoDB Guide](setup-dynamodb) for more information. +Review the [Setup AWS DynamoDB Guide](setup-dynamodb.html) for more information. ## Message Queues Most operations that take place in VinylDNS use a message queue. These operations require high-availability, fault-tolerance @@ -119,13 +119,13 @@ bottlenecks in processing could cause an increase in heap pressure in the API no 1. Price - SQS is very reasonably priced. Comcast operates multiple message queues for different environments (dev, staging, prod, etc). The price to use SQS is in the single digit dollars per month. VinylDNS can be tuned to run exclusively in the _free tier_. -Review the [Setup AWS SQS Guide](setup-sqs) for more information. +Review the [Setup AWS SQS Guide](setup-sqs.html) for more information. ### MySQL VinylDNS has also implemented a message queue using MySQL, which incorporates the features that we currently utilize through AWS SQS such as changing visibility timeout and re-queuing operations. -Review the [Setup MySQL Guide](setup-mysql) for more information. +Review the [Setup MySQL Guide](setup-mysql.html) for more information. ## LDAP VinylDNS uses LDAP in order to authenticate users in the **Portal**. LDAP is **not** used in the API, instead the API uses @@ -134,4 +134,4 @@ its own user and group database for authentication. When a user first logs into VinylDNS, their user information (first name, last name, user name, email) will be pulled from LDAP, and stored in the `UserRepository`. Credentials will also be generated for the user and stored encrypted in the `UserRepository`. -Review the [Setup LDAP Guide](setup-ldap) for more information +Review the [Setup LDAP Guide](setup-ldap.html) for more information diff --git a/modules/docs/src/main/tut/operator/setup-api.md b/modules/docs/src/main/mdoc/operator/setup-api.md similarity index 89% rename from modules/docs/src/main/tut/operator/setup-api.md rename to modules/docs/src/main/mdoc/operator/setup-api.md index 25c56dbfc..923b54fe7 100644 --- a/modules/docs/src/main/tut/operator/setup-api.md +++ b/modules/docs/src/main/mdoc/operator/setup-api.md @@ -7,11 +7,11 @@ section: "operator_menu" # Setup API Server The API Server is the main run-time for VinylDNS. To setup the API server, follow these steps: -1. [Pre-requisites](pre) -1. [Setup AWS DynamoDB](setup-dynamodb) -1. [Setup MySQL](setup-mysql) -1. [Setup AWS SQS](setup-sqs) -1. [Configure API Server](config-api) +1. [Pre-requisites](pre.html) +1. [Setup AWS DynamoDB](setup-dynamodb.html) +1. [Setup MySQL](setup-mysql.html) +1. [Setup AWS SQS](setup-sqs.html) +1. [Configure API Server](config-api.html) 1. [Using the API Docker Image](#using-the-api-docker-image) ## Using the API Docker Image diff --git a/modules/docs/src/main/tut/operator/setup-dynamodb.md b/modules/docs/src/main/mdoc/operator/setup-dynamodb.md similarity index 97% rename from modules/docs/src/main/tut/operator/setup-dynamodb.md rename to modules/docs/src/main/mdoc/operator/setup-dynamodb.md index d83c29ae1..fbafcf4de 100644 --- a/modules/docs/src/main/tut/operator/setup-dynamodb.md +++ b/modules/docs/src/main/mdoc/operator/setup-dynamodb.md @@ -7,7 +7,7 @@ section: "operator_menu" # Setup AWS DynamoDB [AWS DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) is currently the default database for _most_ of the data that is stored in our instance of VinylDNS. However, all table implementations are available in MySQL - (see [Setup MySQL Guide](setup-mysql) for more information). The following tables are present in DynamoDB in our instance of VinylDNS: + (see [Setup MySQL Guide](setup-mysql.html) for more information). The following tables are present in DynamoDB in our instance of VinylDNS: * [RecordSetChange](#recordsetchange-table) - audit history of all changes made to records * [Group](#group-table) - group information, including name, email and description @@ -37,10 +37,10 @@ the throughput very low and operate in the "almost" free-tier. ## Configuring DynamoDB Before you can configure DynamoDB, make note of the AWS account (access key and secret access key) as well as the -DynamoDB endpoint (region) that you will be using. Follow the [API Database Configuration](config-api#database-configuration) +DynamoDB endpoint (region) that you will be using. Follow the [API Database Configuration](config-api.html#database-configuration) to complete the setup for the API. -You also need to configure DynamoDB for the portal [Portal Database Configuration](config-portal#database-configuration) +You also need to configure DynamoDB for the portal [Portal Database Configuration](config-portal.html#database-configuration) ### RecordSet Table diff --git a/modules/docs/src/main/tut/operator/setup-ldap.md b/modules/docs/src/main/mdoc/operator/setup-ldap.md similarity index 91% rename from modules/docs/src/main/tut/operator/setup-ldap.md rename to modules/docs/src/main/mdoc/operator/setup-ldap.md index bed5fdc48..1ccf61116 100644 --- a/modules/docs/src/main/tut/operator/setup-ldap.md +++ b/modules/docs/src/main/mdoc/operator/setup-ldap.md @@ -12,7 +12,7 @@ VinylDNS. VinylDNS does support service accounts, which are useful for automati user to be created is to login to the portal. Implementers can choose to out-of-band manage the VinylDNS repositories.** There are no steps necessary for setup than having a Directory that can communicate via LDAP, and a user (account) that -can read data from the Directory. Once you have that information, proceed to the [Portal Configuration](config-portal). +can read data from the Directory. Once you have that information, proceed to the [Portal Configuration](config-portal.html). **Considerations** You _should_ communicate to your Directory over LDAP using TLS. To do so, the SSL certs should be installed @@ -21,7 +21,7 @@ a java key store when it starts up. ## Configuring LDAP Before you can configure LDAP, make note of the host, username, and password that you will be using. -Follow the [Portal Configuration](config-portal) to complete the setup. +Follow the [Portal Configuration](config-portal.html) to complete the setup. ## Syncing users against LDAP VinylDNS has implemented an optional feature to perform a recurring LDAP lookup against all non-test users in the database and perform diff --git a/modules/docs/src/main/tut/operator/setup-mysql.md b/modules/docs/src/main/mdoc/operator/setup-mysql.md similarity index 93% rename from modules/docs/src/main/tut/operator/setup-mysql.md rename to modules/docs/src/main/mdoc/operator/setup-mysql.md index 9f2f9ebb4..f001c4e7d 100644 --- a/modules/docs/src/main/tut/operator/setup-mysql.md +++ b/modules/docs/src/main/mdoc/operator/setup-mysql.md @@ -29,4 +29,4 @@ pool. ## Configuring MySQL Before you can configure MySQL, make note of the host, username, and password that you will be using. -Follow the [API Database Configuration](config-api#database-configuration) to complete the setup. +Follow the [API Database Configuration](config-api.html#database-configuration) to complete the setup. diff --git a/modules/docs/src/main/tut/operator/setup-portal.md b/modules/docs/src/main/mdoc/operator/setup-portal.md similarity index 89% rename from modules/docs/src/main/tut/operator/setup-portal.md rename to modules/docs/src/main/mdoc/operator/setup-portal.md index 9543d688d..527d75376 100644 --- a/modules/docs/src/main/tut/operator/setup-portal.md +++ b/modules/docs/src/main/mdoc/operator/setup-portal.md @@ -7,12 +7,12 @@ section: "operator_menu" # Setup the Portal Server The Portal Server is the web UI for VinylDNS. To setup the Portal server, follow these steps: -1. [Setup API Server](setup-api) -1. [Setup LDAP](setup-ldap) -1. [Configure Portal Server](config-portal) +1. [Setup API Server](setup-api.html) +1. [Setup LDAP](setup-ldap.html) +1. [Configure Portal Server](config-portal.html) 1. [Using the Portal Docker Image](#using-the-portal-docker-image) -Once you have you pre-requisites ready, review the [Portal Configuration Guide](config-portal) for how to build out +Once you have you pre-requisites ready, review the [Portal Configuration Guide](config-portal.html) for how to build out your configuration file. # Using the Portal Docker Image @@ -24,7 +24,7 @@ purposes. ## Volume mounts * `/opt/docker/lib_extra` - place here additional jar files that need to be loaded into the classpath when the application starts up. This is used for "plugins" that are proprietary or not part of the standard build. All jar files here will be placed on the class path. -* `/opt/docker/conf/application.conf` - to override default configuration settings. Follow the [Portal Configuration Guide](config-portal) +* `/opt/docker/conf/application.conf` - to override default configuration settings. Follow the [Portal Configuration Guide](config-portal.html) * `/opt/docker/conf/application.ini` - to pass additional JVM options * `/opt/docker/conf/trustStore.jks` - to make available a custom trustStore, which has to be set in `/opt/docker/conf/application.ini` as `-Djavax.net.ssl.trustStore=/opt/docker/conf/trustStore.jks` diff --git a/modules/docs/src/main/tut/operator/setup-sqs.md b/modules/docs/src/main/mdoc/operator/setup-sqs.md similarity index 97% rename from modules/docs/src/main/tut/operator/setup-sqs.md rename to modules/docs/src/main/mdoc/operator/setup-sqs.md index 0992a7ea5..3f1e73020 100644 --- a/modules/docs/src/main/tut/operator/setup-sqs.md +++ b/modules/docs/src/main/mdoc/operator/setup-sqs.md @@ -34,4 +34,4 @@ The following SQS Queue Attributes are recommended (these are in AWS when you cr ## Configuring SQS Before you can configure SQS, make note of the AWS account (access key and secret access key) as well as the -SQS Queue Url that you will be using. Follow the [SQS Configuration](config-api#aws-sqs) to complete the setup. +SQS Queue Url that you will be using. Follow the [SQS Configuration](config-api.html#queue-configuration) to complete the setup. diff --git a/modules/docs/src/main/tut/permissions.md b/modules/docs/src/main/mdoc/permissions.md similarity index 100% rename from modules/docs/src/main/tut/permissions.md rename to modules/docs/src/main/mdoc/permissions.md diff --git a/modules/docs/src/main/tut/portal/access.md b/modules/docs/src/main/mdoc/portal/access.md similarity index 100% rename from modules/docs/src/main/tut/portal/access.md rename to modules/docs/src/main/mdoc/portal/access.md diff --git a/modules/docs/src/main/tut/portal/batch-changes.md b/modules/docs/src/main/mdoc/portal/batch-changes.md similarity index 100% rename from modules/docs/src/main/tut/portal/batch-changes.md rename to modules/docs/src/main/mdoc/portal/batch-changes.md diff --git a/modules/docs/src/main/tut/portal/connect-to-zone.md b/modules/docs/src/main/mdoc/portal/connect-to-zone.md similarity index 76% rename from modules/docs/src/main/tut/portal/connect-to-zone.md rename to modules/docs/src/main/mdoc/portal/connect-to-zone.md index 4115d2bf6..f384550b9 100644 --- a/modules/docs/src/main/tut/portal/connect-to-zone.md +++ b/modules/docs/src/main/mdoc/portal/connect-to-zone.md @@ -4,9 +4,9 @@ title: "Connect to your Zone" section: "portal_menu" --- ## Connect to your Zone -Once your zone is [setup for use with VinylDNS](../faq#1), you can use the VinylDNS portal to connect to it. +Once your zone is [setup for use with VinylDNS](../faq.html#1), you can use the VinylDNS portal to connect to it. -1. If you don't already have an admin group in VinylDNS for your zone select the Groups link in the navigation and [create an admin group](create-a-group) for your zone. Members of the group will have full access to the zone. See [Manage Access](manage-access) for more details. +1. If you don't already have an admin group in VinylDNS for your zone select the Groups link in the navigation and [create an admin group](create-a-group.html) for your zone. Members of the group will have full access to the zone. See [Manage Access](manage-access.html) for more details. 1. Select the Zones link from the navigation, then click the *Connect* button. This will show the *Connect to a Zone* form. [![Zones main screenshot](../img/portal/zone-main.png){: .screenshot}](../img/portal/zone-main.png) [![Connect to zone form screenshot](../img/portal/connect-to-zone.png){: .screenshot}](../img/portal/connect-to-zone.png) 1. Enter the full name of the zone, example "test.sys.example.com" @@ -14,8 +14,8 @@ Once your zone is [setup for use with VinylDNS](../faq#1), you can use the Vinyl email for the team that owns the zone. 1. Select the admin group for the zone. 1. If you do not have any custom TSIG keys, you can leave the connection information empty. -1. If you do have custom TSIG keys, read the section on [Understand Connections](connections). +1. If you do have custom TSIG keys, read the section on [Understand Connections](connections.html). 1. Click the *Connect* button at the bottom of the form. 1. You may have to click the Refresh button from the zone list to see your new zone. [![Created zone listed screenshot](../img/portal/zone-list.png){: .screenshot}](../img/portal/zone-list.png) -1. If you see error messages, please consult the [FAQ](/faq). +1. If you see error messages, please consult the [FAQ](../faq.html). diff --git a/modules/docs/src/main/tut/portal/connections.md b/modules/docs/src/main/mdoc/portal/connections.md similarity index 94% rename from modules/docs/src/main/tut/portal/connections.md rename to modules/docs/src/main/mdoc/portal/connections.md index 45cc75ed6..887e0511a 100644 --- a/modules/docs/src/main/tut/portal/connections.md +++ b/modules/docs/src/main/mdoc/portal/connections.md @@ -15,7 +15,7 @@ your zone. If you have an existing TSIG key that you are using for issuing DDNS updates to DNS, and you wish to continue to use it, you *must* request that your zone be setup to -allow transfers from VinylDNS. **Note**: If you make any changes *outside* of VinylDNS they will not be reflected in VinylDNS unless you manually [sync the zone](manage-records#sync-zones). +allow transfers from VinylDNS. **Note**: If you make any changes *outside* of VinylDNS they will not be reflected in VinylDNS unless you manually [sync the zone](manage-records.html#sync-zones). If you have an existing TSIG key that you are using for issuing DDNS updates, and you no longer need the key, please contact your VinylDNS administrators to ensure that the key is *revoked* and the zone is setup with the default VinylDNS TSIG key. Once diff --git a/modules/docs/src/main/tut/portal/create-a-group.md b/modules/docs/src/main/mdoc/portal/create-a-group.md similarity index 100% rename from modules/docs/src/main/tut/portal/create-a-group.md rename to modules/docs/src/main/mdoc/portal/create-a-group.md diff --git a/modules/docs/src/main/tut/portal/credentials.md b/modules/docs/src/main/mdoc/portal/credentials.md similarity index 84% rename from modules/docs/src/main/tut/portal/credentials.md rename to modules/docs/src/main/mdoc/portal/credentials.md index e2d67adb2..d64f333c6 100644 --- a/modules/docs/src/main/tut/portal/credentials.md +++ b/modules/docs/src/main/mdoc/portal/credentials.md @@ -4,7 +4,7 @@ title: "Credentials" section: "portal_menu" --- ## Credentials -In order to use [tooling](/tools) to access VinylDNS, all users must download their credentials from the VinylDNS +In order to use [tooling](../tools.html) to access VinylDNS, all users must download their credentials from the VinylDNS portal. The credentials are located in the User Menu in the top right corner of the site after login. ### Regenerate Credentials diff --git a/modules/docs/src/main/tut/portal/dns-changes.md b/modules/docs/src/main/mdoc/portal/dns-changes.md similarity index 98% rename from modules/docs/src/main/tut/portal/dns-changes.md rename to modules/docs/src/main/mdoc/portal/dns-changes.md index be30142ee..0568c1812 100644 --- a/modules/docs/src/main/tut/portal/dns-changes.md +++ b/modules/docs/src/main/mdoc/portal/dns-changes.md @@ -10,7 +10,7 @@ DNS Changes is an alternative to submitting individual RecordSet changes and pro * The ability to include records of multiple record types across multiple zones. * Input names are entered as fully-qualified domain names (or IP addresses for **PTR** records), so users don't have to think in record/zone context. -**Note**: DNS Change is portal-only terminology. The API equivalent is [batch change](../api/batchchange-model). +**Note**: DNS Change is portal-only terminology. The API equivalent is [batch change](../api/batchchange-model.html). #### Access * Access permissions will follow existing rules (admin group or ACL access). Note that an update (delete and add of the same record name *or* delete of single entry of multi-record DNS record set, zone and record type combination) requires **Write** or **Delete** access. diff --git a/modules/docs/src/main/tut/portal/groups.md b/modules/docs/src/main/mdoc/portal/groups.md similarity index 64% rename from modules/docs/src/main/tut/portal/groups.md rename to modules/docs/src/main/mdoc/portal/groups.md index db7aafb5a..c3cb7189a 100644 --- a/modules/docs/src/main/tut/portal/groups.md +++ b/modules/docs/src/main/mdoc/portal/groups.md @@ -6,10 +6,10 @@ section: "portal_menu" ## Groups -Groups are the primary way users are granted access to zones. Users can create groups for two purposes in VinylDNS: to be the zone admin group for a zone or to be assigned more limited access via [ACL rules](manage-access). Every zone in VinylDNS must have a zone admin group assigned. VinylDNS does not currently integrate with any services to generate pre-defined zone admin groups. +Groups are the primary way users are granted access to zones. Users can create groups for two purposes in VinylDNS: to be the zone admin group for a zone or to be assigned more limited access via [ACL rules](manage-access.html). Every zone in VinylDNS must have a zone admin group assigned. VinylDNS does not currently integrate with any services to generate pre-defined zone admin groups. -* [Create a group](create-a-group) -* [Manage membership](manage-membership) +* [Create a group](create-a-group.html) +* [Manage membership](manage-membership.html) [![Groups main "My Groups" tab screenshot](../img/portal/groups-main.png){:.screenshot}](../img/portal/groups-main.png) diff --git a/modules/docs/src/main/tut/portal/index.md b/modules/docs/src/main/mdoc/portal/index.md similarity index 85% rename from modules/docs/src/main/tut/portal/index.md rename to modules/docs/src/main/mdoc/portal/index.md index 8a37b9c95..5ab2ab4a3 100644 --- a/modules/docs/src/main/tut/portal/index.md +++ b/modules/docs/src/main/mdoc/portal/index.md @@ -16,23 +16,23 @@ The VinylDNS portal is the primary user interface for interacting with VinylDNS. The User Menu is located in the top right corner of the portal and accessed by selecting your username. It contains a *Logout* link to sign out of the portal and the *Download Credentials* link. #### Credentials -In order to use [tooling](/tools) to access VinylDNS, all users must download their credentials from the VinylDNS portal. +In order to use [tooling](../tools.html) to access VinylDNS, all users must download their credentials from the VinylDNS portal. -[Learn more](credentials) +[Learn more](credentials.html) ### Zones The Zones section of the portal is for managing DNS zones and records. This area also includes more granular management of user abilities. To access Zones in the portal select the Zones link in the left column navigation. Access to individual zones in this part of the portal is limited to zone administrators and users with explicit permissions. -[Learn More](zones) +[Learn More](zones.html) ### Groups The Groups section of the portal is for managing high level user access and abilities. To access Groups in the portal select the Groups link in the left column navigation. -[Learn More](groups) +[Learn More](groups.html) ### DNS Changes The DNS Changes section of the portal allows users to implement multiple record changes simultaneously and across different zones. To access DNS Changes in the portal select the DNS Changes link in the left column navigation. -[Learn More](dns-changes) +[Learn More](dns-changes.html) diff --git a/modules/docs/src/main/tut/portal/manage-access.md b/modules/docs/src/main/mdoc/portal/manage-access.md similarity index 94% rename from modules/docs/src/main/tut/portal/manage-access.md rename to modules/docs/src/main/mdoc/portal/manage-access.md index ef317e57d..8c61936e9 100644 --- a/modules/docs/src/main/tut/portal/manage-access.md +++ b/modules/docs/src/main/mdoc/portal/manage-access.md @@ -6,7 +6,7 @@ section: "portal_menu" ## Manage Access to Zones and Records ### Full Access Members of a zone admin group have *full* access to all records and permissions in the zone. Each zone is limited to one admin group. Typically, this should be a limited set of -users. If you wish to add other users to a group you can do so in the [Groups](manage-membership) section of the portal. +users. If you wish to add other users to a group you can do so in the [Groups](manage-membership.html) section of the portal. ### Limited Access If you don't want a user to have full access to a zone you can use ACL rules to give them more granular access. With ACL rules, the zone admins can grant individual users or groups read, write or delete access to all records in the zone, or a subset of record names and/or types. @@ -19,4 +19,4 @@ If you don't want a user to have full access to a zone you can use ACL rules to [![ACL rule form screenshot](../img/portal/create-acl-rule.png){:.screenshot}](../img/portal/create-acl-rule.png) ### **NEW** Shared Zones -The shared zone feature is designed to allow more granular record ownership and management in a flexible way. Super users can mark zones as 'shared' which then allow any users to create new records or claim existing unowned records in zones. Zone administrators can assign records in a shared zone to specific groups by designating a group when creating the record set or when updating existing records in the portal. Users who are not zone administrators can create new records in shared zones, or claim and modify unowned records in shared zones, through the [DNS Changes](dns-changes) interface. +The shared zone feature is designed to allow more granular record ownership and management in a flexible way. Super users can mark zones as 'shared' which then allow any users to create new records or claim existing unowned records in zones. Zone administrators can assign records in a shared zone to specific groups by designating a group when creating the record set or when updating existing records in the portal. Users who are not zone administrators can create new records in shared zones, or claim and modify unowned records in shared zones, through the [DNS Changes](dns-changes.html) interface. diff --git a/modules/docs/src/main/tut/portal/manage-membership.md b/modules/docs/src/main/mdoc/portal/manage-membership.md similarity index 100% rename from modules/docs/src/main/tut/portal/manage-membership.md rename to modules/docs/src/main/mdoc/portal/manage-membership.md diff --git a/modules/docs/src/main/tut/portal/manage-records.md b/modules/docs/src/main/mdoc/portal/manage-records.md similarity index 98% rename from modules/docs/src/main/tut/portal/manage-records.md rename to modules/docs/src/main/mdoc/portal/manage-records.md index e65ca5551..cc2e0ffe9 100644 --- a/modules/docs/src/main/tut/portal/manage-records.md +++ b/modules/docs/src/main/mdoc/portal/manage-records.md @@ -4,7 +4,7 @@ title: "Manage Records" section: "portal_menu" --- ## Manage Records -There are currently two ways to manage records in the VinylDNS portal. This covers managing individual records through their associated zone. To manage multiple records at once, possibly across zones, and records in shared zones you can use the [DNS Changes](dns-changes) area of the portal. +There are currently two ways to manage records in the VinylDNS portal. This covers managing individual records through their associated zone. To manage multiple records at once, possibly across zones, and records in shared zones you can use the [DNS Changes](dns-changes.html) area of the portal. #### Access Only zone administrators and users with ACL rules can manage records this way. diff --git a/modules/docs/src/main/tut/portal/manual-review-scheduling.md b/modules/docs/src/main/mdoc/portal/manual-review-scheduling.md similarity index 96% rename from modules/docs/src/main/tut/portal/manual-review-scheduling.md rename to modules/docs/src/main/mdoc/portal/manual-review-scheduling.md index 6aaed016f..998e68847 100644 --- a/modules/docs/src/main/tut/portal/manual-review-scheduling.md +++ b/modules/docs/src/main/mdoc/portal/manual-review-scheduling.md @@ -16,7 +16,7 @@ section: "portal_menu" ## Manual Review -If a DNS Change is submitted with only [non-fatal errors](../api/batchchange-errors#non-fatal-errors) you will be notified to either correct those errors or submit your DNS Change for manual review. +If a DNS Change is submitted with only [non-fatal errors](../api/batchchange-errors.html#non-fatal-errors) you will be notified to either correct those errors or submit your DNS Change for manual review. If you submit the DNS Change for manual review a VinylDNS administrator will determine if your request can be approved or if it needs to be rejected. After the review your DNS Change will include the review details, including the review status, reviewer name, review time and review comment, if provided. diff --git a/modules/docs/src/main/tut/portal/recordset-search.md b/modules/docs/src/main/mdoc/portal/recordset-search.md similarity index 100% rename from modules/docs/src/main/tut/portal/recordset-search.md rename to modules/docs/src/main/mdoc/portal/recordset-search.md diff --git a/modules/docs/src/main/tut/portal/search-zones.md b/modules/docs/src/main/mdoc/portal/search-zones.md similarity index 100% rename from modules/docs/src/main/tut/portal/search-zones.md rename to modules/docs/src/main/mdoc/portal/search-zones.md diff --git a/modules/docs/src/main/tut/portal/zones.md b/modules/docs/src/main/mdoc/portal/zones.md similarity index 74% rename from modules/docs/src/main/tut/portal/zones.md rename to modules/docs/src/main/mdoc/portal/zones.md index 84aa5b245..613c5fb36 100644 --- a/modules/docs/src/main/tut/portal/zones.md +++ b/modules/docs/src/main/mdoc/portal/zones.md @@ -13,13 +13,13 @@ The All Zones tab is intended as a reference, it includes zones you have access If needed, you can use the contact information in the list to reach out to the owners of the zones you don't have access to. **Note** you may have access to specific records in shared zones, but you are not permitted to access those zones in this area. -Those records are accessible via the [DNS Changes](dns-changes) area of the portal. +Those records are accessible via the [DNS Changes](./dns-changes.html) area of the portal. -* [Search Zones](search-zones) -* [Connect to your zone](connect-to-zone) -* [Manage records](manage-records) -* [Manage access](manage-access) -* [Understand connections](connections) +* [Search Zones](./search-zones.html) +* [Connect to your zone](connect-to-zone.html) +* [Manage records](manage-records.html) +* [Manage access](manage-access.html) +* [Understand connections](connections.html) [![Zones page - My Zones tab](../img/portal/zones-my-zones.png){:.screenshot}](../img/portal/zones-my-zones.png) diff --git a/modules/docs/src/main/tut/tools.md b/modules/docs/src/main/mdoc/tools.md similarity index 100% rename from modules/docs/src/main/tut/tools.md rename to modules/docs/src/main/mdoc/tools.md diff --git a/modules/docs/src/main/resources/microsite/css/custom.css b/modules/docs/src/main/resources/microsite/css/custom.css index 8004a504d..3c53b982d 100644 --- a/modules/docs/src/main/resources/microsite/css/custom.css +++ b/modules/docs/src/main/resources/microsite/css/custom.css @@ -12,6 +12,23 @@ background-color: #123051; } +#masthead { + background-attachment: scroll; + background: url("../img/jumbotron_pattern.png") repeat center; + background-color: #123051; +} + +body nav#navigation div.navbar-wrapper div.navigation-brand a.background-mask div.icon-wrapper { + background: url("../img/navbar_brand36x36.png") no-repeat; + -webkit-mask: none; + mask: none; + animation: none; +} + +.docs #sidebar-wrapper #sidebar-brand a div.brand-wrapper { + background: url("../img/sidebar_brand36x36.png") no-repeat; +} + .important { color: red; } diff --git a/modules/docs/src/main/resources/microsite/data/menu.yml b/modules/docs/src/main/resources/microsite/data/menu.yml deleted file mode 100644 index 42afb9856..000000000 --- a/modules/docs/src/main/resources/microsite/data/menu.yml +++ /dev/null @@ -1,235 +0,0 @@ -options: - - ############################# - # Docs Layout Menu Options # - ############################# - - - title: Portal Guide - url: portal - menu_type: portal_menu - menu_section: portal_section - - - title: Access the Portal - url: portal/access - menu_type: portal_menu - menu_section: portal_section - - - title: DNS Changes - url: portal/dns-changes - menu_type: portal_menu - menu_section: portal_section - nested_options: - - title: Manual Review & Scheduling - url: portal/manual-review-scheduling - menu_section: portal_section - - - title: RecordSet Search - url: portal/recordset-search - menu_type: portal_menu - menu_section: portal_section - - - title: Groups - url: portal/groups - menu_type: portal_menu - menu_section: portal_section - nested_options: - - title: Create a Group - url: portal/create-a-group - - title: Manage Membership - url: portal/manage-membership - - - title: Zones - url: portal/zones - menu_type: portal_menu - menu_section: portal_section - nested_options: - - title: Connect to your Zone - url: portal/connect-to-zone - menu_section: portal_section - - title: Manage Records - url: portal/manage-records - - title: Manage Access - url: portal/manage-access - menu_section: portal_section - - title: Understand Connections - url: portal/connections - - title: Search Zones - url: portal/search-zones - - - title: Credentials - url: portal/credentials - menu_type: portal_menu - menu_section: portal_section - - - title: Operator Guide - url: operator/index.html - menu_type: operator_menu - menu_section: operator_section - - - title: Pre-requisites - url: operator/pre - menu_type: operator_menu - menu_section: operator_section - nested_options: - - title: Setup AWS DynamoDB - url: operator/setup-dynamodb - - title: Setup MySQL - url: operator/setup-mysql - - title: Setup AWS SQS - url: operator/setup-sqs - - title: Setup LDAP - url: operator/setup-ldap - - - title: Setup API Server - url: operator/setup-api - menu_type: operator_menu - menu_section: operator_section - nested_options: - - title: API Configuration Guide - url: operator/config-api - - - title: Setup the Portal Server - url: operator/setup-portal - menu_type: operator_menu - menu_section: operator_section - nested_options: - - title: Portal Configuration Guide - url: operator/config-portal - - - title: API documentation - url: api/index - menu_type: api - menu_section: api - - - title: Authentication - url: api/auth-mechanism.html - menu_type: api - - - title: Zone - url: api/zone-model.html - menu_type: api - menu_section: zoneapireference - nested_options: - - title: Zone Model - url: api/zone-model.html - menu_section: zoneapireference - - title: Create Zone - url: api/create-zone.html - menu_section: zoneapireference - - title: Update Zone - url: api/update-zone.html - menu_section: zoneapireference - - title: Delete Zone - url: api/delete-zone.html - menu_section: zoneapireference - - title: Get Zone by ID - url: api/get-zone-by-id.html - menu_section: zoneapireference - - title: Get Zone by Name - url: api/get-zone-by-name.html - menu_section: zoneapireference - - title: List / Search Zone - url: api/list-zones.html - menu_section: zoneapireference - - title: Sync Zone - url: api/sync-zone.html - menu_section: zoneapireference - - title: List Zone Changes - url: api/list-zone-changes.html - menu_section: zoneapireference - - - title: RecordSet - url: api/recordset-model.html - menu_type: api - menu_section: recordsetapireference - nested_options: - - title: RecordSet Model - url: api/recordset-model.html - menu_section: recordsetapireference - - title: Create RecordSet - url: api/create-recordset.html - menu_section: recordsetapireference - - title: Update RecordSet - url: api/update-recordset.html - menu_section: recordsetapireference - - title: Delete RecordSet - url: api/delete-recordset.html - menu_section: recordsetapireference - - title: Get RecordSet - url: api/get-recordset.html - menu_section: recordsetapireference - - title: List / Search RecordSets by Zone - url: api/list-recordsets-by-zone.html - menu_section: recordsetapireference - - title: Get RecordSet Change - url: api/get-recordset-change.html - menu_section: recordsetapireference - - title: List RecordSet Changes - url: api/list-recordset-changes.html - menu_section: recordsetapireference - - title: Global List / Search RecordSets - url: api/list-recordsets-global.html - menu_sectioon: recordsetapireference - - - title: Batch Change - url: api/batchchange-model.html - menu_type: api - menu_section: batchchangeapireference - nested_options: - - title: Batch Change Model - url: api/batchchange-model.html - menu_section: batchchangeapireference - - title: Create Batch Change - url: api/create-batchchange.html - menu_section: batchchangeapireference - - title: Get Batch Change - url: api/get-batchchange.html - menu_section: batchchangeapireference - - title: List Batch Changes - url: api/list-batchchanges.html - menu_section: batchchangeapireference - - title: Batch Change Errors - url: api/batchchange-errors.html - menu_section: batchchangeapireference - - title: Cancel Batch Change - url: api/cancel-batchchange.html - menu_section: batchchangeapireference - - title: Approve Batch Change - url: api/approve-batchchange.html - menu_section: batchchangeapireference - - title: Reject Batch Change - url: api/reject-batchchange.html - menu_section: batchchangeapireference - - - title: Membership - url: api/membership-model.html - menu_type: api - menu_section: membershipapireference - nested_options: - - title: Membership Model - url: api/membership-model.html - menu_section: membershipapireference - - title: Create Group - url: api/create-group.html - menu_section: membershipapireference - - title: Update Group - url: api/update-group.html - menu_section: membershipapireference - - title: Delete Group - url: api/delete-group.html - menu_section: membershipapireference - - title: Get Group - url: api/get-group.html - menu_section: membershipapireference - - title: List Groups - url: api/list-groups.html - menu_section: membershipapireference - - title: List Group Admins - url: api/list-group-admins.html - menu_section: membershipapireference - - title: List Group Members - url: api/list-group-members.html - menu_section: membershipapireference - - title: List Group Activity - url: api/list-group-activity.html - menu_section: membershipapireference diff --git a/modules/docs/src/main/tut/img/favicon.png b/modules/docs/src/main/resources/microsite/img/favicon.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon.png rename to modules/docs/src/main/resources/microsite/img/favicon.png diff --git a/modules/docs/src/main/tut/img/favicon114x114.png b/modules/docs/src/main/resources/microsite/img/favicon114x114.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon114x114.png rename to modules/docs/src/main/resources/microsite/img/favicon114x114.png diff --git a/modules/docs/src/main/tut/img/favicon120x120.png b/modules/docs/src/main/resources/microsite/img/favicon120x120.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon120x120.png rename to modules/docs/src/main/resources/microsite/img/favicon120x120.png diff --git a/modules/docs/src/main/tut/img/favicon128x128.png b/modules/docs/src/main/resources/microsite/img/favicon128x128.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon128x128.png rename to modules/docs/src/main/resources/microsite/img/favicon128x128.png diff --git a/modules/docs/src/main/tut/img/favicon144x144.png b/modules/docs/src/main/resources/microsite/img/favicon144x144.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon144x144.png rename to modules/docs/src/main/resources/microsite/img/favicon144x144.png diff --git a/modules/docs/src/main/tut/img/favicon150x150.png b/modules/docs/src/main/resources/microsite/img/favicon150x150.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon150x150.png rename to modules/docs/src/main/resources/microsite/img/favicon150x150.png diff --git a/modules/docs/src/main/tut/img/favicon152x152.png b/modules/docs/src/main/resources/microsite/img/favicon152x152.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon152x152.png rename to modules/docs/src/main/resources/microsite/img/favicon152x152.png diff --git a/modules/docs/src/main/tut/img/favicon16x16.png b/modules/docs/src/main/resources/microsite/img/favicon16x16.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon16x16.png rename to modules/docs/src/main/resources/microsite/img/favicon16x16.png diff --git a/modules/docs/src/main/tut/img/favicon196x196.png b/modules/docs/src/main/resources/microsite/img/favicon196x196.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon196x196.png rename to modules/docs/src/main/resources/microsite/img/favicon196x196.png diff --git a/modules/docs/src/main/tut/img/favicon24x24.png b/modules/docs/src/main/resources/microsite/img/favicon24x24.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon24x24.png rename to modules/docs/src/main/resources/microsite/img/favicon24x24.png diff --git a/modules/docs/src/main/tut/img/favicon310x150.png b/modules/docs/src/main/resources/microsite/img/favicon310x150.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon310x150.png rename to modules/docs/src/main/resources/microsite/img/favicon310x150.png diff --git a/modules/docs/src/main/tut/img/favicon310x310.png b/modules/docs/src/main/resources/microsite/img/favicon310x310.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon310x310.png rename to modules/docs/src/main/resources/microsite/img/favicon310x310.png diff --git a/modules/docs/src/main/tut/img/favicon32x32.png b/modules/docs/src/main/resources/microsite/img/favicon32x32.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon32x32.png rename to modules/docs/src/main/resources/microsite/img/favicon32x32.png diff --git a/modules/docs/src/main/tut/img/favicon48x48.png b/modules/docs/src/main/resources/microsite/img/favicon48x48.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon48x48.png rename to modules/docs/src/main/resources/microsite/img/favicon48x48.png diff --git a/modules/docs/src/main/tut/img/favicon57x57.png b/modules/docs/src/main/resources/microsite/img/favicon57x57.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon57x57.png rename to modules/docs/src/main/resources/microsite/img/favicon57x57.png diff --git a/modules/docs/src/main/tut/img/favicon60x60.png b/modules/docs/src/main/resources/microsite/img/favicon60x60.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon60x60.png rename to modules/docs/src/main/resources/microsite/img/favicon60x60.png diff --git a/modules/docs/src/main/tut/img/favicon64x64.png b/modules/docs/src/main/resources/microsite/img/favicon64x64.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon64x64.png rename to modules/docs/src/main/resources/microsite/img/favicon64x64.png diff --git a/modules/docs/src/main/tut/img/favicon70x70.png b/modules/docs/src/main/resources/microsite/img/favicon70x70.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon70x70.png rename to modules/docs/src/main/resources/microsite/img/favicon70x70.png diff --git a/modules/docs/src/main/tut/img/favicon72x72.png b/modules/docs/src/main/resources/microsite/img/favicon72x72.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon72x72.png rename to modules/docs/src/main/resources/microsite/img/favicon72x72.png diff --git a/modules/docs/src/main/tut/img/favicon76x76.png b/modules/docs/src/main/resources/microsite/img/favicon76x76.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon76x76.png rename to modules/docs/src/main/resources/microsite/img/favicon76x76.png diff --git a/modules/docs/src/main/tut/img/favicon96x96.png b/modules/docs/src/main/resources/microsite/img/favicon96x96.png similarity index 100% rename from modules/docs/src/main/tut/img/favicon96x96.png rename to modules/docs/src/main/resources/microsite/img/favicon96x96.png diff --git a/modules/docs/src/main/tut/img/jumbotron_pattern.png b/modules/docs/src/main/resources/microsite/img/jumbotron_pattern.png similarity index 100% rename from modules/docs/src/main/tut/img/jumbotron_pattern.png rename to modules/docs/src/main/resources/microsite/img/jumbotron_pattern.png diff --git a/modules/docs/src/main/tut/img/jumbotron_pattern2x.png b/modules/docs/src/main/resources/microsite/img/jumbotron_pattern2x.png similarity index 100% rename from modules/docs/src/main/tut/img/jumbotron_pattern2x.png rename to modules/docs/src/main/resources/microsite/img/jumbotron_pattern2x.png diff --git a/modules/docs/src/main/tut/img/navbar_brand2x.png b/modules/docs/src/main/resources/microsite/img/light_navbar_brand.png similarity index 100% rename from modules/docs/src/main/tut/img/navbar_brand2x.png rename to modules/docs/src/main/resources/microsite/img/light_navbar_brand.png diff --git a/modules/docs/src/main/tut/img/navbar_brand.png b/modules/docs/src/main/resources/microsite/img/navbar_brand.png similarity index 100% rename from modules/docs/src/main/tut/img/navbar_brand.png rename to modules/docs/src/main/resources/microsite/img/navbar_brand.png diff --git a/modules/docs/src/main/resources/microsite/img/navbar_brand2x.png b/modules/docs/src/main/resources/microsite/img/navbar_brand2x.png new file mode 100644 index 0000000000000000000000000000000000000000..85efb0d480edc938f23d5a7877da172598b77374 GIT binary patch literal 17629 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 Q`v3p{07*qoM6N<$f@~zD!~g&Q literal 0 HcmV?d00001 diff --git a/modules/docs/src/main/resources/microsite/img/navbar_brand36x36.png b/modules/docs/src/main/resources/microsite/img/navbar_brand36x36.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a9440882de72be9deaf8b95a0ffe18f60474e4 GIT binary patch literal 18549 zcmch;1z1%}_XoV`k}jpY5s~h0LFxb^Al)q>-5?mG*BQTg3kpYDG31B zPuvZWGioNaNc>JTLg&PY(5ApV3#( z4)Ip8?Cs zo_@W(u4}dNek1bjvCqt>iz=C`6>=Y}J`uYXoA2a2O0AlBx5r4^LpOCj=jUt9Bj1|7 zjr8kGeYsdtnY*4Qy~ZHdv37g+tmMk#O6|;}N+dw!>*H4T^Y1fkH`@=yjZZVs_})C| zM4M>Yt$1P>$-~|9q2B1--tp*S2r;pN)HMoQE$6Tt>8Bl6()>@1H+l*cml#doFwz7v z+GLF84aMkg_ipNMk2-G?MRtXDY>-=S=a|RwR~lF(UXQe%;~}E#_1JcEpG{^l*K1ulsOR@BVeNsn%^!=hRnsuX4p^%dDuj|9<+5Z?bmPsh2MT5>FM%Zd;x{ zX^J?t4@{rat>e6Q$8c_`K6iqZdh+O$@KL%QUiw60!%6rS9aij2P5Wim(NJ@yHv83;T0~gGivR& zg=e)b;t~%-(R|A@AL&KR+-a#)Gq<{bQesW!ITr4rGu(%qgY?k5ex}v!A)Wm+QWWLp zhmM_%2_#J2NY;_u*`(qw2R(f~uT0`7I;nU5+ zt%XG#>@F%F2W!RPN`KU1Fi}-#7MxSq+Lb^ghhO4bgH>llPrfJKmOfC3e=;2TBtj7$ z`K8;z*SPEHjamE9+*%EH3a1rK!d%~=!U-GVqZU2avn?v$ZS8vCL-&(z6^0zXh z^iI>Hy=bXrVS01Mt`}4%6bf0n90~*0Bi8T(3WCB6Gfs7C`-~K;>gK~K^fdnM*T>ac zYZeZ~+p(eN4HKS0TkiKeK5$O$8(gH$$fEV!hx@eTLYN(d9YCOiTp#zO3Z@s=BxBHO z3%8*;o)2zjNc7|;g{9l5?NglZz3}=Oo5 zt)#;+4F|K^k{boA3S{AEM#)_q8TjY=C6~NdAD8-h%dY}!X4k}6a84?9dB5AdhOHJ{ znBCMmw$`tV$(HHHGf#P)-`N5}xL_t(Kj$~+ZYeX?i7LFx8`xFNs;_9(

Pw)Q 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 literal 0 HcmV?d00001 diff --git a/modules/docs/src/main/tut/img/portal/change-history-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/change-history-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/change-history-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/change-history-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/connect-to-zone.png b/modules/docs/src/main/resources/microsite/img/portal/connect-to-zone.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/connect-to-zone.png rename to modules/docs/src/main/resources/microsite/img/portal/connect-to-zone.png diff --git a/modules/docs/src/main/tut/img/portal/create-acl-rule.png b/modules/docs/src/main/resources/microsite/img/portal/create-acl-rule.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/create-acl-rule.png rename to modules/docs/src/main/resources/microsite/img/portal/create-acl-rule.png diff --git a/modules/docs/src/main/tut/img/portal/create-group.png b/modules/docs/src/main/resources/microsite/img/portal/create-group.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/create-group.png rename to modules/docs/src/main/resources/microsite/img/portal/create-group.png diff --git a/modules/docs/src/main/tut/img/portal/credentials_annotated.png b/modules/docs/src/main/resources/microsite/img/portal/credentials_annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/credentials_annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/credentials_annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-approval-with-errors.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-approval-with-errors.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-approval-with-errors.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-approval-with-errors.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-cancel-prompt-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-cancel-prompt-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-cancel-prompt-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-cancel-prompt-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-cancel-prompt.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-cancel-prompt.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-cancel-prompt.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-cancel-prompt.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-cancelled.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-cancelled.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-cancelled.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-cancelled.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-list-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-list-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-list-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-list-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-list.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-list.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-list.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-list.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-main-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-main-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-main-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-main-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-main.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-main.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-main.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-main.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-new-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-new-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-new-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-new-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-new.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-new.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-new.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-new.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-non-fatal-errors.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-non-fatal-errors.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-non-fatal-errors.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-non-fatal-errors.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-open-requests-filter-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-open-requests-filter-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-open-requests-filter-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-open-requests-filter-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-open-requests-filter.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-open-requests-filter.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-open-requests-filter.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-open-requests-filter.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-review.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-review.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-review.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-review.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-reviewed.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-reviewed.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-reviewed.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-reviewed.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-schedule-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-schedule-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-schedule-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-schedule-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/dns-change-summary.png b/modules/docs/src/main/resources/microsite/img/portal/dns-change-summary.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-change-summary.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-change-summary.png diff --git a/modules/docs/src/main/tut/img/portal/dns-changes-admin-view.png b/modules/docs/src/main/resources/microsite/img/portal/dns-changes-admin-view.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/dns-changes-admin-view.png rename to modules/docs/src/main/resources/microsite/img/portal/dns-changes-admin-view.png diff --git a/modules/docs/src/main/tut/img/portal/group-membership.png b/modules/docs/src/main/resources/microsite/img/portal/group-membership.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/group-membership.png rename to modules/docs/src/main/resources/microsite/img/portal/group-membership.png diff --git a/modules/docs/src/main/tut/img/portal/groups-listed-all.png b/modules/docs/src/main/resources/microsite/img/portal/groups-listed-all.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/groups-listed-all.png rename to modules/docs/src/main/resources/microsite/img/portal/groups-listed-all.png diff --git a/modules/docs/src/main/tut/img/portal/groups-listed.png b/modules/docs/src/main/resources/microsite/img/portal/groups-listed.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/groups-listed.png rename to modules/docs/src/main/resources/microsite/img/portal/groups-listed.png diff --git a/modules/docs/src/main/tut/img/portal/groups-main-all.png b/modules/docs/src/main/resources/microsite/img/portal/groups-main-all.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/groups-main-all.png rename to modules/docs/src/main/resources/microsite/img/portal/groups-main-all.png diff --git a/modules/docs/src/main/tut/img/portal/groups-main.png b/modules/docs/src/main/resources/microsite/img/portal/groups-main.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/groups-main.png rename to modules/docs/src/main/resources/microsite/img/portal/groups-main.png diff --git a/modules/docs/src/main/tut/img/portal/login.png b/modules/docs/src/main/resources/microsite/img/portal/login.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/login.png rename to modules/docs/src/main/resources/microsite/img/portal/login.png diff --git a/modules/docs/src/main/tut/img/portal/logout-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/logout-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/logout-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/logout-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/main-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/main-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/main-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/main-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/main.png b/modules/docs/src/main/resources/microsite/img/portal/main.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/main.png rename to modules/docs/src/main/resources/microsite/img/portal/main.png diff --git a/modules/docs/src/main/tut/img/portal/manage-records-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/manage-records-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/manage-records-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/manage-records-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/manage-records-sort.png b/modules/docs/src/main/resources/microsite/img/portal/manage-records-sort.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/manage-records-sort.png rename to modules/docs/src/main/resources/microsite/img/portal/manage-records-sort.png diff --git a/modules/docs/src/main/tut/img/portal/manage-zone.png b/modules/docs/src/main/resources/microsite/img/portal/manage-zone.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/manage-zone.png rename to modules/docs/src/main/resources/microsite/img/portal/manage-zone.png diff --git a/modules/docs/src/main/tut/img/portal/recordset-search-filters.png b/modules/docs/src/main/resources/microsite/img/portal/recordset-search-filters.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/recordset-search-filters.png rename to modules/docs/src/main/resources/microsite/img/portal/recordset-search-filters.png diff --git a/modules/docs/src/main/tut/img/portal/recordset-search-info.png b/modules/docs/src/main/resources/microsite/img/portal/recordset-search-info.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/recordset-search-info.png rename to modules/docs/src/main/resources/microsite/img/portal/recordset-search-info.png diff --git a/modules/docs/src/main/tut/img/portal/recordset-search-main.png b/modules/docs/src/main/resources/microsite/img/portal/recordset-search-main.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/recordset-search-main.png rename to modules/docs/src/main/resources/microsite/img/portal/recordset-search-main.png diff --git a/modules/docs/src/main/tut/img/portal/recordset-search-name-filter.png b/modules/docs/src/main/resources/microsite/img/portal/recordset-search-name-filter.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/recordset-search-name-filter.png rename to modules/docs/src/main/resources/microsite/img/portal/recordset-search-name-filter.png diff --git a/modules/docs/src/main/tut/img/portal/search-zones-all-zones.png b/modules/docs/src/main/resources/microsite/img/portal/search-zones-all-zones.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/search-zones-all-zones.png rename to modules/docs/src/main/resources/microsite/img/portal/search-zones-all-zones.png diff --git a/modules/docs/src/main/tut/img/portal/search-zones-my-zones.png b/modules/docs/src/main/resources/microsite/img/portal/search-zones-my-zones.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/search-zones-my-zones.png rename to modules/docs/src/main/resources/microsite/img/portal/search-zones-my-zones.png diff --git a/modules/docs/src/main/tut/img/portal/sync-zones-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/sync-zones-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/sync-zones-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/sync-zones-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/zone-list.png b/modules/docs/src/main/resources/microsite/img/portal/zone-list.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/zone-list.png rename to modules/docs/src/main/resources/microsite/img/portal/zone-list.png diff --git a/modules/docs/src/main/tut/img/portal/zone-main.png b/modules/docs/src/main/resources/microsite/img/portal/zone-main.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/zone-main.png rename to modules/docs/src/main/resources/microsite/img/portal/zone-main.png diff --git a/modules/docs/src/main/tut/img/portal/zone-records-annotated.png b/modules/docs/src/main/resources/microsite/img/portal/zone-records-annotated.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/zone-records-annotated.png rename to modules/docs/src/main/resources/microsite/img/portal/zone-records-annotated.png diff --git a/modules/docs/src/main/tut/img/portal/zones-all-zones.png b/modules/docs/src/main/resources/microsite/img/portal/zones-all-zones.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/zones-all-zones.png rename to modules/docs/src/main/resources/microsite/img/portal/zones-all-zones.png diff --git a/modules/docs/src/main/tut/img/portal/zones-my-zones.png b/modules/docs/src/main/resources/microsite/img/portal/zones-my-zones.png similarity index 100% rename from modules/docs/src/main/tut/img/portal/zones-my-zones.png rename to modules/docs/src/main/resources/microsite/img/portal/zones-my-zones.png diff --git a/modules/docs/src/main/tut/img/poster.png b/modules/docs/src/main/resources/microsite/img/poster.png similarity index 100% rename from modules/docs/src/main/tut/img/poster.png rename to modules/docs/src/main/resources/microsite/img/poster.png diff --git a/modules/docs/src/main/tut/img/sample-email-nofitication.png b/modules/docs/src/main/resources/microsite/img/sample-email-nofitication.png similarity index 100% rename from modules/docs/src/main/tut/img/sample-email-nofitication.png rename to modules/docs/src/main/resources/microsite/img/sample-email-nofitication.png diff --git a/modules/docs/src/main/tut/img/sidebar_brand.png b/modules/docs/src/main/resources/microsite/img/sidebar_brand.png similarity index 100% rename from modules/docs/src/main/tut/img/sidebar_brand.png rename to modules/docs/src/main/resources/microsite/img/sidebar_brand.png diff --git a/modules/docs/src/main/tut/img/sidebar_brand2x.png b/modules/docs/src/main/resources/microsite/img/sidebar_brand2x.png similarity index 100% rename from modules/docs/src/main/tut/img/sidebar_brand2x.png rename to modules/docs/src/main/resources/microsite/img/sidebar_brand2x.png diff --git a/modules/docs/src/main/resources/microsite/img/sidebar_brand36x36.png b/modules/docs/src/main/resources/microsite/img/sidebar_brand36x36.png new file mode 100644 index 0000000000000000000000000000000000000000..58dace8bdfbddf8394fed181815152649f47773c GIT binary patch literal 13157 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 Zy~Q8W4EJnX<>yW(B_=0YB&_T6{{Sbt+iw5> literal 0 HcmV?d00001 diff --git a/modules/docs/src/main/tut/img/vinyldns-fulllogoDARK-300.png b/modules/docs/src/main/resources/microsite/img/vinyldns-fulllogoDARK-300.png similarity index 100% rename from modules/docs/src/main/tut/img/vinyldns-fulllogoDARK-300.png rename to modules/docs/src/main/resources/microsite/img/vinyldns-fulllogoDARK-300.png diff --git a/modules/docs/src/main/tut/api/index.md b/modules/docs/src/main/tut/api/index.md deleted file mode 100755 index 91118b78c..000000000 --- a/modules/docs/src/main/tut/api/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: docs -title: "API documentation" -section: "api" ---- - -# API documentation - -* [Authentication](auth-mechanism) -* [Zone](zone-model) -* [RecordSet](recordset-model) -* [Batch Change](batchchange-model) -* [Membership](membership-model) diff --git a/modules/docs/src/main/tut/operator/index.md b/modules/docs/src/main/tut/operator/index.md deleted file mode 100644 index eb800f1d3..000000000 --- a/modules/docs/src/main/tut/operator/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: docs -title: "Operator Guide" -section: "operator_menu" -position: 3 ---- - -# Operator Guide -This operator guide will help administrators install and operate VinylDNS API and Portal. - -1. [Setup the pre-requisite systems](pre) - VinylDNS has several external dependencies that are required in order to operate. -2. [Setup the VinylDNS API server](setup-api) -3. [Setup the VinylDNS Portal server](setup-portal) diff --git a/project/plugins.sbt b/project/plugins.sbt index 41d3a92ca..d57b8d2da 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -10,7 +10,7 @@ addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.0") addSbtPlugin("io.github.davidmweber" % "flyway-sbt" % "5.0.0") -addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.5") +addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.10") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.25") @@ -28,8 +28,10 @@ addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.4") addSbtPlugin("com.typesafe.sbt" % "sbt-license-report" % "1.2.0") -addSbtPlugin("com.47deg" % "sbt-microsites" % "0.7.24") +addSbtPlugin("com.47deg" % "sbt-microsites" % "1.1.5") addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.3") addSbtPlugin("io.crashbox" % "sbt-gpg" % "0.2.0") + +addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.10" )