diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd42d87bd..f644f607d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,6 @@ image: docker:19.03.8 variables: - DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 BUILDER_TAG: index.docker.io/algorithmiahq/dev-center:latest IMAGE_TAG: index.docker.io/algorithmiahq/dev-center:$CI_COMMIT_SHA @@ -12,20 +11,12 @@ services: stages: - build - push - - scan - -before_script: - - mkdir ~/.docker - - echo "$DOCKER_AUTH_CONFIG" > ~/.docker/config.json # # Build # build: - except: - variables: - - $DEPENDENCY_CHECK == "true" # don't run a build when checking dependencies, because this will be based on a previously built sha stage: build image: name: docker:19.03.8 @@ -58,37 +49,13 @@ build: # push: - except: - variables: - - $DEPENDENCY_CHECK == "true" # don't run a build when checking dependencies, because this will be based on a previously built sha stage: push image: name: docker:19.03.8 entrypoint: [""] + before_script: + - mkdir ~/.docker + - echo "$DOCKER_AUTH_CONFIG" > ~/.docker/config.json script: - docker load -i image/golduck.tar - docker push $IMAGE_TAG - -osPackages: - stage: scan - image: algorithmiahq/vulnerability-scanner:latest - services: - - docker:18-dind - rules: - - if: '$DEPENDENCY_CHECK == "true"' - - when: manual - allow_failure: true - script: - - report-os-package-security-vulnerabilities $IMAGE_TAG UXENG 'Developer Center' - -nodeCodeLibraries: - stage: scan - image: algorithmiahq/vulnerability-scanner:latest - services: - - docker:18-dind - rules: - - if: '$DEPENDENCY_CHECK == "true"' - - when: manual - allow_failure: true - script: - - report-node-security-vulnerabilities UXENG 'Developer Center' diff --git a/CODEOWNERS b/CODEOWNERS index 2e265ad54..b2d87d7ec 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,3 +1,3 @@ # https://github.blog/2017-07-06-introducing-code-owners/ -* @algorithmiaio/ux @algorithmiaio/product @algorithmiaio/customer-documentation @ToshMeston +* @algorithmiaio/ux @algorithmiaio/product @algorithmiaio/customer-documentation diff --git a/Dockerfile b/Dockerfile index 6596227df..a5e023824 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ RUN ./build.sh # # Final stage: use the build artifacts from previous stages # -FROM node:14.17-buster-slim +FROM node:17.3-buster-slim WORKDIR /opt/src/app diff --git a/Gemfile b/Gemfile old mode 100755 new mode 100644 index 059d95c55..5a7042e56 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org/" -gem 'jekyll', '4.2' +gem 'jekyll', '4.2.1' gem 'jekyll-sitemap' gem 'jekyll-redirect-from' gem 'jekyll-last-modified-at' diff --git a/Gemfile.lock b/Gemfile.lock index 83b096359..b65af4e35 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) colorator (1.1.0) - concurrent-ruby (1.1.8) + concurrent-ruby (1.1.9) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) em-websocket (0.5.2) @@ -38,17 +38,17 @@ GEM faraday_middleware (1.0.0) faraday (~> 1.0) fastimage (2.2.4) - ffi (1.14.2) + ffi (1.15.4) forwardable-extended (2.6.0) gemoji (3.0.1) - git (1.9.1) + git (1.10.2) rchardet (~> 1.8) http-cookie (1.0.4) domain_name (~> 0.5) http_parser.rb (0.6.0) - i18n (1.8.9) + i18n (1.8.10) concurrent-ruby (~> 1.0) - jekyll (4.2.0) + jekyll (4.2.1) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -81,7 +81,7 @@ GEM libv8 (3.16.14.19) libv8 (3.16.14.19-x86_64-linux) liquid (4.0.3) - listen (3.4.1) + listen (3.7.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) @@ -95,28 +95,28 @@ GEM fastimage (~> 2.2) nesty (~> 1.0) nokogiri (~> 1.11) - mini_portile2 (2.5.3) + mini_portile2 (2.7.1) multipart-post (2.1.1) nesty (1.0.2) - nokogiri (1.11.7) - mini_portile2 (~> 2.5.0) + nokogiri (1.13.1) + mini_portile2 (~> 2.7.0) racc (~> 1.4) - nokogiri (1.11.7-x86_64-linux) + nokogiri (1.13.1-x86_64-linux) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) posix-spawn (0.3.15) public_suffix (4.0.6) - racc (1.5.2) + racc (1.6.0) rake (13.0.6) - rb-fsevent (0.10.4) + rb-fsevent (0.11.0) rb-inotify (0.10.1) ffi (~> 1.0) rchardet (1.8.0) redcarpet (3.5.1) ref (2.0.0) rexml (3.2.5) - rouge (3.26.0) + rouge (3.26.1) ruby2_keywords (0.0.5) safe_yaml (1.0.5) sassc (2.4.0) @@ -129,7 +129,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.7) - unicode-display_width (1.7.0) + unicode-display_width (1.8.0) PLATFORMS ruby @@ -138,7 +138,7 @@ PLATFORMS DEPENDENCIES gemoji git - jekyll (= 4.2) + jekyll (= 4.2.1) jekyll-last-modified-at jekyll-redirect-from jekyll-sitemap diff --git a/README.md b/README.md index 8366df456..6ab63f60e 100755 --- a/README.md +++ b/README.md @@ -121,18 +121,6 @@ This Jekyll site uses several plugins to help generate content and make the site - `navmenu.rb`: A tag plugin to generate the side navigation menu. - `strip.rb`: Removes some excess whitespace and new lines generated by the Liquid templating process. -### Third-Party Component Vulnerability Detection - -Per the [Third-Party Component Maintenance Policy](https://algorithmia.atlassian.net/wiki/spaces/PLATFORM/pages/1851129905/Third-Party+Component+Maintenance+Policy), the Developer Center uses [an automated, weekly scan](https://gitlab.com/algorithmia-eng/dev-center/-/pipeline_schedules/160002/edit) to detect security vulnerabilities with a CVE score of 7.0 or higher. Components with vulnerabilities with scores of 7.0 or greater are reported as Jira tickets into [the UXENG Jira board](https://algorithmia.atlassian.net/secure/RapidBoard.jspa?projectKey=UXENG&useStoredSettings=true&rapidView=21). All [failed scans are reported into Slack](https://gitlab.com/algorithmia-eng/dev-center/-/services/slack/edit) with a [Slack Incoming Webhook](https://algorithmia.slack.com/services/B02BP6QDDD2). - -Scanning and Jira ticket creation is performed by a script: -- `report-os-package-security-vulnerabilities algorithmiahq/dev-center: UXENG "Developer Center"` - scans OS packages -- `report-node-security-vulnerabilities algorithmiahq/dev-center: UXENG "Developer Center"` - scans Node code libraries - -These scripts are part of the [CI-tools repository](https://github.com/algorithmiaio/ci-tools/blob/traack-add-single-image-vulnerability-scanner/vulnerabilities/tools/report-os-package-security-vulnerabilities) and are packaged for use in the `algorithmiahq/vulnerability-scanner:latest` Docker image. - -Running a script with `--no-jira` appended will run scanning and CLI reporting of vulnerabilities without Jira ticket creation; for example: `report-os-package-security-vulnerabilities algorithmiahq/dev-center: UXENG "Developer Center" --no-jira`. - ## Environment variables ### `ENFORCE_CSP` | Boolean diff --git a/_includes/footer.html b/_includes/footer.html index 29ad1216d..c67ac8d6d 100755 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -84,52 +84,42 @@ {% unless site.enterprise %}
Company
-
- About -
-
- Blog + class="syn-text-secondary" + href="https://www.datarobot.com/careers/" + rel="noopener noreferrer"> + Careers at DataRobot +
- PressContact Us
- Partners + About +
-
Product
+
Platform
- -
- Enterprise AI Layer + Product +
{% endunless %} diff --git a/_includes/header.html b/_includes/header.html index d4ac94594..93a84ac2c 100755 --- a/_includes/header.html +++ b/_includes/header.html @@ -5,7 +5,7 @@ Sign in -
+
Contact us @@ -17,7 +17,7 @@
@@ -93,52 +59,30 @@ - \ No newline at end of file + diff --git a/_layouts/default.html b/_layouts/default.html index d6cbe0ecd..3bd588b93 100755 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -127,6 +127,33 @@ } }); + + diff --git a/_layouts/nil.html b/_layouts/nil.html index 75f87bf9e..fbe2c8e90 100644 --- a/_layouts/nil.html +++ b/_layouts/nil.html @@ -108,6 +108,33 @@ } }); + + diff --git a/_pages/administration/admin-config/configure-user-roles.md b/_pages/administration/admin-config/configure-user-roles.md index 064df84f4..f7de9e2fe 100644 --- a/_pages/administration/admin-config/configure-user-roles.md +++ b/_pages/administration/admin-config/configure-user-roles.md @@ -77,7 +77,7 @@ This action requires cluster administrator privileges. A sample API request to a
$ curl https://CLUSTER_DOMAIN/v1/organizations \
     -X POST \
-    -H "Authorization: ADMIN_API_KEY" \
+    -H "Authorization: Simple ADMIN_API_KEY" \
     -d '{
       "org_name":"TestOrg",
       "org_label":"A Test Organization",
diff --git a/_pages/administration/admin-panel/algorithm-errors.md b/_pages/administration/admin-panel/algorithm-errors.md
index 71372cbd7..a8dfb5ed6 100644
--- a/_pages/administration/admin-panel/algorithm-errors.md
+++ b/_pages/administration/admin-panel/algorithm-errors.md
@@ -40,7 +40,7 @@ Because of the consideration above, the user-facing errors feature is disabled b
 
 
curl -X PUT https://api.CLUSTER_DOMAIN/v1/admin/features/algorithm-errors \
   -H 'Content-Type: application/json'
-  -H 'Authorization: ADMIN_API_KEY'
+  -H 'Authorization: Simple ADMIN_API_KEY'
   -d '{"enabled": true}'
 
diff --git a/_pages/administration/admin-panel/ui-customization.md b/_pages/administration/admin-panel/ui-customization.md index 70ed6c770..302763831 100644 --- a/_pages/administration/admin-panel/ui-customization.md +++ b/_pages/administration/admin-panel/ui-customization.md @@ -15,3 +15,19 @@ The UI Customization page provides functionality for customizing the appearance When the desired changes have been made, click "Save Changes" and refresh the page to see the changes take effect. It may take several seconds for the changes to propagate across the system. ![Admin Panel - UI Customization]({{site.url}}/developers/images/post_images/algo-images-admin/algo-1609365483178.png) + +## Enabling/disabling dark mode + +Beginning in Algorithmia version 21.3.1, administrators can enable dark mode at the cluster level. The feature can be enabled through the admin API with an [admin API key](/developers/platform/customizing-api-keys#admin-api-keys), using the following cURL command. Note that you must substitute `CLUSTER_DOMAIN` with your Algorithmia cluster domain name (e.g., `algorithmia.com`) and you must substitute a valid value for `ADMIN_API_KEY`. + +
+ +
curl -X PUT https://api.CLUSTER_DOMAIN/v1/admin/features/dark-theme-enabled \
+  -H 'Content-Type: application/json'
+  -H 'Authorization: Simple ADMIN_API_KEY'
+  -d '{"enabled": true}'
+
+ +
+ +To disable the feature, you can use the same cURL command as above, changing the payload to `{"enabled": false}`. diff --git a/_pages/administration/admin-panel/users.md b/_pages/administration/admin-panel/users.md index 2c56dbfe2..6d5edda17 100644 --- a/_pages/administration/admin-panel/users.md +++ b/_pages/administration/admin-panel/users.md @@ -50,11 +50,11 @@ When super powers are enabled, a banner will show up at the top of the screen to ### Using sudo privileges -Sudo privileges can be used to call private versions of algorithms owned by other accounts. To call an algorithm with sudo privileges, add the `?sudo=true` parameter to the endpoint URL in the API call. +Sudo privileges can be used to call private versions of algorithms owned by other accounts. To call an algorithm with sudo privileges, add the `?sudo=true` parameter to the endpoint URL in the API call. -This can be useful for testing and debugging, and can help to avoid several less-than-ideal debugging work-arounds. For example, you can use the `sudo` flag to avoid having to "impersonate" another account (see section below) and/or use API keys from other accounts, which makes it impossible to correctly attribute usage. It also makes it unnecessary to publish an algorithm publicly or add an account to a particular org just to enable that account to temporarily call a specific algorithm. +This can be useful for testing and debugging, and can help to avoid several less-than-ideal debugging work-arounds. For example, you can use the `sudo` flag to avoid having to "impersonate" another account (see section below) and/or use API keys from other accounts, which makes it impossible to correctly attribute usage. It also makes it unnecessary to publish an algorithm publicly or add an account to a particular org just to enable that account to temporarily call a specific algorithm. -When you call algorithms with the `sudo=true` flag, you call the algorithm **_as if_** you're calling it from the owning account, so you get access to private data and private versions. For example, ifthe algorithm uses `data://.my/foo`, `.my` will refer to the algorithm owner, not the caller (your account, in this case) like usual. Sudo calls show up in the logs with the sudo flag, but the usage data isn't attributed to the account that actually owns the algorithm. +When you call algorithms with the `sudo=true` flag, you call the algorithm **_as if_** you're calling it from the owning account, so you get access to private data and private versions. For example, if the algorithm uses `data://.my/foo`, `.my` will refer to the algorithm owner, not the caller (your account, in this case) like usual. Sudo calls show up in the logs with the sudo flag, but the usage data isn't attributed to the account that actually owns the algorithm. ### Impersonating other accounts @@ -78,4 +78,4 @@ To disable the "sudo user" role on the cluster, set the `process.env.IS_SUDO_USE 1. "Sudo" won't show up as a user role in the Users page. 2. Cluster admins won't have the menu option to "Add to Sudo Users" or "Remove from Sudo Users" on the Users action menus for each user in the Users page. -3. The entire "Sudo users" section and "Add sudo user" input will be hidden in the UI on the [Administrators](/developers/administration/admin-panel/administrators) page. \ No newline at end of file +3. The entire "Sudo users" section and "Add sudo user" input will be hidden in the UI on the [Administrators](/developers/administration/admin-panel/administrators) page. diff --git a/_pages/event-flows/amazon-sqs.md b/_pages/event-flows/amazon-sqs.md index 2c07531e5..efeaf81ba 100644 --- a/_pages/event-flows/amazon-sqs.md +++ b/_pages/event-flows/amazon-sqs.md @@ -306,12 +306,13 @@ In the body of your algorithm, paste the code below, replacing `COLLECTION_OWNER ```python import Algorithmia - -client = Algorithmia.client() +from Algorithmia import ADK def apply(input): - data_uri = "data://COLLECTION_OWNER/COLLECTION_NAME/" + input.get("filename") - client.file(data_uri).put(input.get("data")) + Algorithmia.client().file("data://COLLECTION_OWNER/COLLECTION_NAME/" + input.get("filename")).put(input.get("data")) + +algorithm = ADK(apply) +algorithm.init("Algorithmia") ``` create algorithm Web IDE diff --git a/_pages/event-flows/azure-sb.md b/_pages/event-flows/azure-sb.md index 81b7b93a1..9f4b311c6 100644 --- a/_pages/event-flows/azure-sb.md +++ b/_pages/event-flows/azure-sb.md @@ -233,12 +233,13 @@ In the body of your algorithm, paste the source code below, replacing the `COLLE ```python import Algorithmia - -client = Algorithmia.client() +from Algorithmia import ADK def apply(input): - data_uri = "data://COLLECTION_OWNER/COLLECTION_NAME/" + input.get("filename") - client.file(data_uri).put(input.get("data")) + Algorithmia.client().file("data://COLLECTION_OWNER/COLLECTION_NAME/" + input.get("filename")).put(input.get("data")) + +algorithm = ADK(apply) +algorithm.init("Algorithmia") ``` @@ -326,20 +327,20 @@ In the body of your algorithm, paste the source code below, replacing the `QUEUE ```python import os +import json import Algorithmia +from Algorithmia import ADK from azure.servicebus import ServiceBusClient, ServiceBusMessage -CONNECTION_STR = os.getenv("CONNECTION_STR") +CONNECTION_STR = "CONNECTION_STR" QUEUE_NAME = "QUEUE_NAME" - def send_single_message(sender, message): # Send the message to the queue sender.send_messages(message) print("Sent a single message.") - def apply(input): """Send a message to the queue. @@ -348,7 +349,7 @@ def apply(input): """ # Create a Service Bus message - message = ServiceBusMessage(input.get("data")) + message = ServiceBusMessage(json.dumps(input)) # Create a Service Bus client using the connection string servicebus_client = ServiceBusClient.from_connection_string( conn_str=CONNECTION_STR, @@ -360,6 +361,9 @@ def apply(input): # Send one message send_single_message(sender, message) return "Sent a message to the queue." + +algorithm = ADK(apply) +algorithm.init("Algorithmia") ``` Click the **Save** and **Build** buttons, and then **Publish** the algorithm. diff --git a/_pages/glossary.html b/_pages/glossary.html index e1026836e..48863f87a 100644 --- a/_pages/glossary.html +++ b/_pages/glossary.html @@ -228,7 +228,6 @@
  • top-level algorithm
  • topic
  • trained model
  • -
  • Training Center
  • user
  • user account
  • UNILOG
  • @@ -1276,12 +1275,6 @@ href="#serialized-model" title="" parentId="dd-serialized-model">serialized model. -
    Training Center [deprecated]
    -
    - Tutorial-based training content has been moved to DataRobot University. -
    -
    user
    Human interacting with the Algorithmia platform. See identity. diff --git a/_pages/platform/algorithm-profile.md b/_pages/platform/algorithm-profile.md index 036c73804..70900f914 100644 --- a/_pages/platform/algorithm-profile.md +++ b/_pages/platform/algorithm-profile.md @@ -33,11 +33,11 @@ For non-enterprise users: If an algorithm charges a royalty, you'll see the amou ### Stars and follows -At the top-right corner of every algorithm profile page it displays the number of stars and followers an algorithm has. +At the top-right corner of every algorithm profile page, it displays the number of stars and followers an algorithm has. Following an algorithm will subscribe you to comments and help you keep up to date with activity on that particular algorithm. -Starring an algorithm indicates to the developer, as well as other users, that the algorithm is useful to you, and adds it to your starred algorithm list. Your starred algorithm list can be found in the ML service catalog (named **Algorithms** in the screenshot above) on the left nav bar. +Starring an algorithm indicates to the developer, as well as other users, that the algorithm is useful to you, and adds it to your starred algorithm list. Your starred algorithm list can be found in the ML service catalog (named **Algorithms** in the screenshot above) on the left navbar. ### Overview @@ -61,7 +61,7 @@ This section includes information about the algorithm's licensing, internet acce #### Run an example -In this section there's a test console where you can experiment with the algorithm. Click the **Run Example** button to have the algorithm run on the sample input supplied in the left-hand box, and the results will show in the output box on the right. +In this section, there's a test console where you can experiment with the algorithm. Click the **Run Example** button to have the algorithm run on the sample input supplied in the left-hand box, and the results will show in the output box on the right. You can experiment with your own input data, but you'll want to make sure that it's in a format the algorithm accepts. To see details about the proper input format, visit the algorithm's [Docs](#docs) tab. @@ -69,7 +69,7 @@ You can experiment with your own input data, but you'll want to make sure that i #### Install and use -In this section you can toggle between our supported client languages to view code for installing the algo CLI, our command-line based tool, as well as client code to call your algorithm from an external application. To learn about how to call an algorithm, see our [Getting Started Guide]({{site.baseurl}}/algorithm-development/your-first-algo). +In this section, you can toggle between our supported client languages to view code for installing the algo CLI, our command-line-based tool, as well as client code to call your algorithm from an external application. To learn about how to call an algorithm, see our [Getting Started Guide]({{site.baseurl}}/algorithm-development/your-first-algo). ### Docs diff --git a/_pages/platform/organization-first-updates.md b/_pages/platform/organization-first-updates.md new file mode 100644 index 000000000..cce44907b --- /dev/null +++ b/_pages/platform/organization-first-updates.md @@ -0,0 +1,57 @@ +--- +categories: basics +layout: article +title: Collaboration-Focused UI +--- + +

    In Algorithmia version 21.2, we've updated our platform with a number of user interface (UI) improvements to support an organizational, collaborative approach to algorithm development and management. It's now easier for teams to work together to deliver MLOps functionality in a shared workspace, while individual users can still utilize their personal workspace as an isolated, "sandbox" environment in order to keep the production environment uncluttered.

    +

    Navigation improvements

    +

    We've relocated resource creation, viewing, and management functionality in an effort to clarify who the owner of a resource is when it's created and at the point it's accessed. In the redesigned interface, you'll now see links in the left-hand navigation menu to navigate directly to workspaces associated with any organizations to which you belong, as well as to your personal workspace. Each resource is scoped within a specific workspace, and in the UI you'll only be able to interact with it from within that workspace.

    +

    Organization workspaces

    +

    Resources (i.e., Algorithms, Data, and API keys) owned by each organization are now visible in that organization's workspace, along with other organization-related tabs that were previously on an organization's profile (i.e., Reporting, Errors, Members, and Invites). Finally, the organization-level settings previously available through the Edit Organization button have been moved to a designated Settings tab.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091205305.png) + +

    Personal workspace

    +

    Analogously, resources owned by individuals are now visible under the individual account's Personal Workspace on the left-hand navigation bar.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091274591.png) + +

    Not only is it now easier to switch between workspaces, we've also updated the workspace landing pages to display the algorithms you've modified most recently so that it's easier to quickly find them and get back to work.

    +

    Org-owned shared resources

    +

    In this org-first version of Algorithmia, only cluster admins can create organizations.

    +

    Furthermore, in addition to algorithms, you can now assign data sources and API keys to be owned by, and automatically shared within, an organization. Org members are automatically granted access to these shared resources, enabling your team to more closely collaborate on algorithm development. Additionally, using org-owned resources, you no longer need to worry about a critical component of a project becoming unavailable or requiring modification when an org member transfers out of the team or leaves the company.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1627948450822.png) + +

    Org-owned algorithms

    +

    As before, you can create an algorithm under the ownership of an org to enable shared algorithm access between all members of the org. Because there are no longer global resource-creation buttons, to create an algorithm you must navigate to a specific workspace and click the New algorithm button. In the algorithm-creation form, the Owner field will be pre-populated with the name of the org under which you're creating the algorithm. If you'd like to create an algorithm under the ownership of your individual account, you still can; just navigate to your personal workspace and create the algorithm there.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091096402.png) + +

    Org-owned data sources

    +

    In the updated UI, all data sources can now be created under the ownership of a specific org or your individual account. This includes data connectors, which could not previously be shared between members of an org.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628008092400.png) + +

    As before, you can also create org-owned data collections to share hosted data between org members.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628008185277.png) + +

    Org-owned API keys

    +

    In the updated UI, standard (non-admin) API keys can now be created under the ownership of a specific org instead of just an individual account. Org-owned API keys have access to all resources owned by the org.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091378863.png) + +

    To create a new org-owned API key, navigate to the workspace of the org that you'd like to be the key owner and click the New API key button under the API Keys tab. When you create the key, you'll "assign" it either to the org or to an individual org member account. Algorithmia logs which API key is used for each authenticated resource request, thereby facilitating auditability at the individual user account level while still providing for shared access to resources between multiple individuals.

    +

    Note that as a best practice, we recommend assigning all API keys to individual accounts for auditability and usage reporting purposes. However, there may be cases where it's desirable to assign an org-owned API key to the org itself, so that you can make a key available to all members, so this option is available as well.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091438177.png) + +

    As in the previous UI, we recommend you provide a Label for your key so that it's easily distinguishable from others that you've created and its purpose is clear. The remaining key-creation fields have not changed—you can still control key access on a per-algorithm basis if desired, and you can limit the key's data-access permissions as well.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091731532.png) + +

    User account-owned API keys can still be created by clicking the New API key dropdown in the API Keys tab in your personal workspace. If you have cluster admin permissions, you'll also be able to create an admin API key through this dropdown as well.

    + +![]({{site.url}}/developers/images/post_images/platform/org-first-1628091826008.png) diff --git a/_pages/platform/organization-profile.md b/_pages/platform/organization-profile.md index 712522117..dda0c2cec 100644 --- a/_pages/platform/organization-profile.md +++ b/_pages/platform/organization-profile.md @@ -26,7 +26,7 @@ The following sections cover the basics of using organizations on the Algorithmi ## Profile page contents -The profile overview provides a rich source of information about an organization. In the overview, you can find the name of an organization, its members, and a list of the algorithms under its ownershipt. If you're an administrator for the organization, you'll also be able to invite and delete members, as well as edit basic information about the organization. +The profile overview provides a rich source of information about an organization. In the overview, you can find the name of an organization, its members, and a list of the algorithms under its ownership. If you're an administrator for the organization, you'll also be able to invite and delete members, as well as edit basic information about the organization. Organizations profile @@ -50,7 +50,7 @@ Once your organization has been created you can edit all the provided informatio ### Inviting users to an organization -You can invite users to your organization by clicking the **Invite Member** button at the upper-right corner of the organization profile. You can invite members either by using their Algorithmia account name or by providing their email address. Users invited by account name will receive an email and as well as an in-platform notification to join the organization. +You can invite users to your organization by clicking the **Invite Member** button at the upper-right corner of the organization profile. You can invite a member either by using their Algorithmia account name or by providing their email address. Users invited by account name will receive an email and as well as an in-platform notification to join the organization. If you invite a user that already has an account, then you must invite them using their account name, not their email. Otherwise, they'll receive an email invite to sign up for the platform and join your organization, even though they already have an account. {: .notice-warning } @@ -70,13 +70,3 @@ Once members of your organization have created an algorithm and submitted it for Approving Algorithms **Note:** Every new version of the algorithm to be published will require independent approval. - -At this time you'll be able to set the royalty (if any) if you're using our non-Enterprise platform, and finalize publishing. - -Set royalty for team algorithms - -### Checking earnings - -If you're using our non-Enterprise platform, to view your organization's earnings and a break down of all algorithms that are called, click on **View Earnings** on your organization's profile. - -Check earnings diff --git a/_pages/training-center.md b/_pages/training-center.md index 39778ff8a..6114040b4 100644 --- a/_pages/training-center.md +++ b/_pages/training-center.md @@ -11,6 +11,6 @@ show_related: false title: "Training Center" --- -Algorithmia's learning management system has been deprecated. Please see DataRobot University for tutorial-based training content to get you up and running with Algorithmia. +Algorithmia's learning management system has been deprecated. If you're looking for content related to [platform administration](/developers/administration/admin-panel/admin-panel-overview/), it now lives here on the Developer Center and can be found near the bottom of the left-hand navigation panel. -If you're looking for content related to [platform administration](/developers/administration/admin-panel/admin-panel-overview/), it now lives here on the Developer Center and can be found near the bottom of the left-hand navigation panel. +For tutorial-based training content to get you up and running with DataRobot, please see DataRobot University. diff --git a/css/devcenter.css b/css/devcenter.css index b4f0f9d11..a299b65e7 100644 --- a/css/devcenter.css +++ b/css/devcenter.css @@ -168,3 +168,29 @@ header.syn-page-header.nav-open .syn-page-header-nav.mobile-nav-container { .utility-header { border-bottom: 1px solid #eef0f2; } + +.syn-btn.theme-primary.contained.custom-btn { + border-radius: 0.25rem; + background-color: rgb(72, 51, 102); +} + +.syn-btn.theme-primary.contained.custom-btn:hover { + background-color: #6b547b; +} + +a.custom-btn-mobile { + background-color: #483366; + color: #fff; + padding: 0.5rem 0; + margin: 1rem 1rem 0; + display: block; + border-radius: 0.25rem; + font-size: 0.875rem; + text-decoration: none; +} + +a.custom-btn-mobile:hover { + background-color: #6b547b; + color: #fff; + text-decoration: none; +} diff --git a/cve_exceptions b/cve_exceptions index ca5c6c3cb..91ac7e1d1 100644 --- a/cve_exceptions +++ b/cve_exceptions @@ -31,3 +31,10 @@ CVE-2011-4116 # Patch not backported - perl-base:5.28.1-6+deb10u1 CVE-2005-2541 # Red Hat's official stance: "This is the documented and expected behaviour of tar" so this isn't going to be fixed - tar:1.30+dfsg-6 CVE-2019-9923 # Red Hat's official stance: "This is the documented and expected behaviour of tar" so this isn't going to be fixed - tar:1.30+dfsg-6 CVE-2021-39537 # Response from bug finder: might be a CVE, but the impact should be much lower. There is no code execution. - libncursesw6:6.1+20181013-2+deb10u2, libtinfo6:6.1+20181013-2+deb10u2, ncurses-base:6.1+20181013-2+deb10u2, ncurses-bin:6.1+20181013-2+deb10u2 +CVE-2020-7608 # Recommended to require schema validation and avoid unsafe - yargs-parser:11.1.1 +CVE-2021-33560 # Patch not backported - libgcrypt20:1.8.4-5+deb10u1 +CVE-2021-43618 # Patch not backported - libgmp10:2:6.1.2+dfsg-4 +CVE-2020-16156 # # Recommendation: The first line of protection is to not use untrusted mirrors - perl-base:5.28.1-6+deb10u1 +CVE-2022-23218 # Buffer copy issue. Patch created, not yet implemented. We also are diligent about adding character caps on our inputs. This should be irrelivent to us - libc-bin:2.28-10, libc6:2.28-10 +CVE-2022-23219 # Buffer copy issue. Patch created, not yet implemented. We also are diligent about adding character caps on our inputs. This should be irrelivent to us - libc-bin:2.28-10, libc6:2.28-10 +CVE-2021-3999 # Does not exist in NVD - libc-bin:2.28-10, libc6:2.28-10 diff --git a/images/post_images/platform/org-first-1627948450822.png b/images/post_images/platform/org-first-1627948450822.png new file mode 100644 index 000000000..e4d199f7c Binary files /dev/null and b/images/post_images/platform/org-first-1627948450822.png differ diff --git a/images/post_images/platform/org-first-1628008092400.png b/images/post_images/platform/org-first-1628008092400.png new file mode 100644 index 000000000..e38bec4e5 Binary files /dev/null and b/images/post_images/platform/org-first-1628008092400.png differ diff --git a/images/post_images/platform/org-first-1628008185277.png b/images/post_images/platform/org-first-1628008185277.png new file mode 100644 index 000000000..cc087599f Binary files /dev/null and b/images/post_images/platform/org-first-1628008185277.png differ diff --git a/images/post_images/platform/org-first-1628091096402.png b/images/post_images/platform/org-first-1628091096402.png new file mode 100644 index 000000000..2b9985a93 Binary files /dev/null and b/images/post_images/platform/org-first-1628091096402.png differ diff --git a/images/post_images/platform/org-first-1628091205305.png b/images/post_images/platform/org-first-1628091205305.png new file mode 100644 index 000000000..78b5aab62 Binary files /dev/null and b/images/post_images/platform/org-first-1628091205305.png differ diff --git a/images/post_images/platform/org-first-1628091274591.png b/images/post_images/platform/org-first-1628091274591.png new file mode 100644 index 000000000..109799eba Binary files /dev/null and b/images/post_images/platform/org-first-1628091274591.png differ diff --git a/images/post_images/platform/org-first-1628091378863.png b/images/post_images/platform/org-first-1628091378863.png new file mode 100644 index 000000000..6eb9b1774 Binary files /dev/null and b/images/post_images/platform/org-first-1628091378863.png differ diff --git a/images/post_images/platform/org-first-1628091438177.png b/images/post_images/platform/org-first-1628091438177.png new file mode 100644 index 000000000..e0fa34b2b Binary files /dev/null and b/images/post_images/platform/org-first-1628091438177.png differ diff --git a/images/post_images/platform/org-first-1628091731532.png b/images/post_images/platform/org-first-1628091731532.png new file mode 100644 index 000000000..c88f51a50 Binary files /dev/null and b/images/post_images/platform/org-first-1628091731532.png differ diff --git a/images/post_images/platform/org-first-1628091826008.png b/images/post_images/platform/org-first-1628091826008.png new file mode 100644 index 000000000..8e4585d84 Binary files /dev/null and b/images/post_images/platform/org-first-1628091826008.png differ diff --git a/package.json b/package.json index add3f51d0..0325d1fd7 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,11 @@ "reset:cache": "rm -rf .jekyll-cache && rm -rf .jekyll-metadata && rm -rf _site" }, "devDependencies": { - "axios": "^0.21.1", + "axios": "^0.21.2", "chai": "^4.3.4", "http-proxy-middleware": "^0.20.0", "mocha": "^6.2.0", - "shelljs": "^0.8.4", + "shelljs": "^0.8.5", "stylelint": "^13.12.0", "stylelint-config-sass-guidelines": "^8.0.0" }, @@ -31,7 +31,11 @@ "request-stats": "^3.0.0" }, "engines": { - "node": "14.17", + "node": "17.3", "yarn": ">=1.22.4" - } + }, + "resolutions": { + "mkdirp": "0.5.3", + "minimist": "^1.2.6" +} } diff --git a/yarn.lock b/yarn.lock index b1cfbbf58..0d0f43e8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -422,12 +422,12 @@ autoprefixer@^9.8.6: postcss "^7.0.32" postcss-value-parser "^4.1.0" -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" bail@^1.0.0: version "1.0.5" @@ -749,13 +749,6 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^4.0.0, debug@^4.1.0, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -1133,17 +1126,10 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== -follow-redirects@^1.0.0: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.10.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.14.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== foreach@^2.0.4: version "2.0.5" @@ -1232,19 +1218,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: +glob@^7.0.0, glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1673,11 +1647,9 @@ json-schema-traverse@^1.0.0: integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" @@ -1936,22 +1908,17 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -mkdirp@0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +mkdirp@0.5.1, mkdirp@0.5.3, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" mobx-react-lite@^3.2.0: version "3.2.1" @@ -2064,9 +2031,9 @@ node-fetch-h2@^2.3.0: http2-client "^1.2.5" node-fetch@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -2856,10 +2823,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" interpret "^1.0.0"