From ff2e8a4a877c2ae0b072822319aaa581fd907733 Mon Sep 17 00:00:00 2001 From: Katrina Prosise Date: Mon, 14 Aug 2023 12:39:38 -0400 Subject: [PATCH] Cleanup user guide sections d-f Three pages were cleaned up to meet style guidelines, and updated where needed. This included removing dead internal references/links and simplifying wording. Semantic newlines were added. Note that not all information was verified for being up to date, as the focus was primarily on style. The issues stated in FFTK 2174 have been addressed except for item 3, which is out of our control. QA Steps: vale linter, linkcheck, viewed rendered HTML. This commit addresses FFTK 2527 This commit addresses FFTK 2174 This commit applies to FFTK 988 Signed-off-by: Katrina Prosise --- source/user-guide/el2g.rst | 58 +++++---- source/user-guide/fioctl/index.rst | 78 +++++------ .../foundriesio-rest-api.rst | 122 ++++++++---------- 3 files changed, 118 insertions(+), 140 deletions(-) diff --git a/source/user-guide/el2g.rst b/source/user-guide/el2g.rst index da2b173eb..cfaab7cb4 100644 --- a/source/user-guide/el2g.rst +++ b/source/user-guide/el2g.rst @@ -3,7 +3,7 @@ Integrating NXP EdgeLock 2GO ============================ -EdgeLock® 2GO is an add-on service from NXP® that is integrated into FoundriesFactory as an option to simplify the securing of devices during manufacturing. +EdgeLock® 2GO is an add-on service from NXP®, integrated into FoundriesFactory® to simplify the securing of devices during manufacturing. The service enables the automated installation and secure storage of required keys, certificates, and credentials when the end device first connects to the internet. .. admonition:: Key Benefits @@ -13,26 +13,26 @@ The service enables the automated installation and secure storage of required ke - simplified management of keys and certificates for devices and fleets in the field. EdgeLock 2GO requires that the device hardware includes an NXP SE05x hardware security element, or uses an i.MX 8ULP or 9 series SoC. -We offer a free evaluation of the service on the `i.MX 8M Plus EVK `_ with a connected SE050 evaluation, or on the Arduino Portenta X8 (early Q4 2022). - +We offer a free evaluation for the `i.MX 8M Plus EVK `_ with a connected SE050 evaluation, +or on the `Arduino Portenta X8 `_. Prerequisites ------------- * An :ref:`NXP SE05X secure element ` - * A FoundriesFactory that has been registered with EdgeLock 2GO. Please `contact our support team `_. + * A Factory registered with EdgeLock 2GO. Please `contact our support team `_. * Access to your Factory PKI :ref:`root of trust `. -Enabling Auto-connect to Foundries.io --------------------------------------------------- +Enabling Auto-connect to Your Factory +------------------------------------- -Fioctl® includes commands that will configure EdgeLock 2GO to give out credentials that automatically connect aktualizr-lite to the device gateway, removing the need to run ``lmp-device-register``: +Fioctl® can configure EdgeLock 2GO to give out credentials that automatically connect aktualizr-lite to the device gateway, removing the need to run ``lmp-device-register``: .. prompt:: bash host:~$, auto host:~$ fioctl el2g config-device-gateway --pki-dir -Now EdgeLock 2GO will have an intermediate CA that can create device client certificates acceptable to the Foundries.io device gateway. +Now EdgeLock 2GO will have an intermediate CA that can create device client certificates acceptable to the Foundries.io™ device gateway. Running ``fioctl el2g status`` will show something similar to:: # Subdomain: yaytcakbhsmvi0cy.device-link.edgelock2go.com @@ -55,10 +55,10 @@ Running ``fioctl el2g status`` will show something similar to:: MIIBmjCCAUCgAwIBAgIUfFokkHTzV2GHUc+P2gKWfe5rWu4wCgYIKoZIzj0EAwIw ... -Optional: Enabling Devices to Connect with AWS IoT +Optional: Enabling Devices to Connect With AWS IoT ---------------------------------------------------- -Users interested in integrating with AWS IoT can follow these steps to enlist their devices. +Integrate with AWS IoT using the following steps to enlist devices. Configure the integration by running: @@ -77,11 +77,11 @@ complete the process. .. note:: - If this command is run **after** a device has been initially provisioned, you will have to perform a manual step on the device to pick up the change: + If this command is run **after** a device has been initially provisioned, you need to perform a manual step on the device to pick up the change: .. prompt:: bash device:~$, auto - device:~$ sudo REPOID=$(cat /etc/default/lmp-el2go-auto-register) lmp-el2go-auto-register + device:~$ sudo $(cat /etc/default/lmp-el2go-auto-register) lmp-el2go-auto-register At this point you have two options: Manual device registration or Just-In-Time-Provisioning (JITP). @@ -96,10 +96,10 @@ JITP ~~~~ JITP automates the device registration process with AWS IoT. Setting up JITP is specific to a user's AWS deployment, requiring an IAM policy template to define what a device may do. -The `Integrating with AWS IoT using Just-in-Time Provisioning`_ blog shows one way to set this up, and includes a template_ that *can* be used here. -With a policy in-hand, enable JITP using the CA created above with `fioctl el2g config-aws` by running something like: +`Integrating with AWS IoT using Just-in-Time Provisioning`_ shows one way to do this, and includes a template_ that *can* be used here. +With a policy in-hand, enable JITP using the CA created above with ``fioctl el2g config-aws`` by running something like: -.. prompt:: bash host:~$, auto +.. code-block:: bash host:~$ aws iot update-ca-certificate --certificate-id --registration-config='{"templateBody": "{\"Parameters\": {\"AWS::IoT::Certificate::Id\": {\"Type\": \"String\"}, \"AWS::IoT::Certificate::CommonName\": {\"Type\": \"String\"}, \"AWS::IoT::Certificate::SerialNumber\": {\"Type\": \"String\"}}, \"Resources\": {\"thing\": {\"Type\": \"AWS::IoT::Thing\", \"Properties\": {\"ThingName\": {\"Ref\": \"AWS::IoT::Certificate::CommonName\"}, \"AttributePayload\": {\"SerialNumber\": {\"Ref\": \"AWS::IoT::Certificate::SerialNumber\"}}}}, \"certificate\": {\"Type\": \"AWS::IoT::Certificate\", \"Properties\": {\"CertificateId\": {\"Ref\": \"AWS::IoT::Certificate::Id\"}, \"Status\": \"ACTIVE\"}}, \"policy\": {\"Type\": \"AWS::IoT::Policy\", \"Properties\": {\"PolicyName\": \"\"}}}}", "roleArn": ""}' @@ -124,7 +124,7 @@ This can be retrieved by running:: For example:: # conf/machine/include/lmp-factory-custom.inc - EL2GO_HOSTNAME = XXXXXXXXXXXXX.device-link.edgelock2go.com + EL2GO_HOSTNAME = "XXXXXXXXXXXXX.device-link.edgelock2go.com" You'll now need to enable the device auto registration recipe_. First, include the package in your factory image with:: @@ -157,7 +157,7 @@ Once built with these configuration options a device will start the ``lmp-el2go- * Download configured key pairs * Configure/start aktualizr-lite -Enlisting devices +Enlisting Devices ----------------- Devices must be added to an EdgeLock 2GO allow-list so that they will be authorized to obtain client credentials. A device with an SE05X, product ID ``935389312472``, can be added with: @@ -168,7 +168,7 @@ A device with an SE05X, product ID ``935389312472``, can be added with: The status of the device will look similar to:: - host:~$ fioctl el2g devices + host:~$ fioctl el2g devices list GROUP ID LAST CONNECTION ----- -- --------------- fio-935389312472 348555492004256518532939906410866457667712 @@ -205,7 +205,7 @@ If needed, you can troubleshoot this by running: Testing AWS IoT --------------- -If your devices are configured to use AWS IoT, you can test things out with our example container that publishes an MQTT message to your instance:: +If your devices are configured to use AWS IoT, you can test using our example container, which publishes an MQTT message to your instance:: device:~$ docker run --rm -it \ -e AWS_ENDPOINT=.amazonaws.com \ @@ -219,22 +219,23 @@ The message is published to the topic ``se050/demo`` with a payload of EdgeLock 2GO Concepts --------------------- - * **Device Group** - EdgeLock 2GO manages devices by device groups. + + * **Device Group** — EdgeLock 2GO manages devices by device groups. A device group is fixed to a specific product ID (e.g. an SE050 or SE051). The ``fioctl el2g`` commands create two device groups for a factory to make it easy to manage a homogenous security policy. One device group is for CI devices and the other is for production devices. - * **Secure Object** - Secure objects are assigned to device groups to tell the EdgeLock 2GO what x509 key pairs should be assigned to devices. + * **Secure Object** — Secure objects are assigned to device groups to tell the EdgeLock 2GO what x509 key pairs should be assigned to devices. The most common use of a secure object combines a "Keypair" with a "Certificate". The certificate object is linked to an X509 Certificate Authority configured in the service. It can then sign certificate signing requests for a device key pair in order to generate client certificates. - * **Subdomain** - Every EdgeLock 2GO account has a "device-link" subdomain that a device's ``nxp_iot_agent_demo`` binary connects to. + * **Subdomain** — Every EdgeLock 2GO account has a "device-link" subdomain that a device's ``nxp_iot_agent_demo`` binary connects to. This is the service where secure objects will be exchanged. -Further details +Further Details --------------- -Foundries includes a set of convenience APIs for working with EdgeLock 2GO which are used by fioctl. -They are documented at -https://api.foundries.io/ota/ + +FoundriesFactory includes a convenient APIs for working with EdgeLock 2GO, which are used by fioctl. +They are documented at https://api.foundries.io/ota/ You may also access the full EdgeLock 2GO API via a reverse proxy: @@ -245,4 +246,7 @@ API documentation links: * `Developer Guide `_ * `OpenAPI Swagger `_ -The default FoundriesFactory EdgeLock 2GO implementation provides a free of charge evaluation for 30 days. Once enabled for commercial use the standard package limits usage to 50,000 devices per subscription year and 2x key pairs and 2x X.509 certificates per device - i.e. the FoundriesFactory key pair and certificate, and one additional set for authentication to a third party service such as AWS. If you require additional devices, or more key pairs per device, please contact us. +The default FoundriesFactory EdgeLock 2GO implementation provides a free of charge evaluation for 30 days. +Once enabled for commercial use, the standard package limits usage to 50,000 devices per subscription year and 2x key pairs and 2x X.509 certificates per device. +This covers the FoundriesFactory key pair and certificate and one additional set for authentication to a third-party service such as AWS. +If you require additional devices, or more key pairs per device, please contact us. diff --git a/source/user-guide/fioctl/index.rst b/source/user-guide/fioctl/index.rst index b005c14c5..42b7a8cb2 100644 --- a/source/user-guide/fioctl/index.rst +++ b/source/user-guide/fioctl/index.rst @@ -3,18 +3,20 @@ Fioctl ====== -This section assumes you have followed :ref:`sec-learn` to its completion. The -aim of this section is to provide you with a template for using -:ref:`ref-fioctl` by way of example. +This section provides details on using :ref:`Fioctl® ` by way of example. + +Prerequisites +------------- + +* Completion of the getting started guide. .. _ug-fioctl-enable-apps: Enabling/Disabling Apps ----------------------- -By default all apps defined in :term:`containers.git` for any given tag are -enabled. To change this behaviour, a list of allowed apps can be given **per -device**, enabling only those apps that are in a comma separated list. +All apps defined in :term:`containers.git` for any given tag are enabled by default. +To change this behavior, allowed apps can be set **per device**, enabling only those in a comma-separated list. Via Fioctl ~~~~~~~~~~ @@ -22,8 +24,6 @@ Via Fioctl ``fioctl devices config updates --apps ,`` Set the app(s) a device will run. -**Example** - .. code-block:: console # First, list Targets and ensure app(s) are available in the latest Target. @@ -41,11 +41,10 @@ Via Fioctl # Now only the app(s) supplied in the list will run on the device. -Via lmp-device-register -~~~~~~~~~~~~~~~~~~~~~~~ +Via the LmP Device Register Script +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When registering a device, ``lmp-device-register`` can set a list of apps to -enable. +When registering a device, ``lmp-device-register`` can set a list of apps to enable. ``lmp-device-register --api-token= --apps ,`` Set the app(s) a device will run, during registration. @@ -55,23 +54,21 @@ enable. Inspecting Targets ------------------ -A Factory produces Targets whenever a -change is pushed to the :ref:`ref-factory-sources`. A Target is a description of -the software a device should run, as defined by a list of metadata which -includes an **OSTree Hash** and one or more **Docker-Compose App URIs**. +.. hint:: + A Factory produces Targets when a change is pushed to the :ref:`ref-factory-sources`. + A Target is a description of the software a device should run. + It is defined by a list of metadata which includes an **OSTree Hash** and one or more **Docker-Compose App URIs**. -This metadata is recorded upon Target creation, making the Target an -**immutable** description of the Factory at a point in time. + This metadata is recorded upon Target creation, making the Target an **immutable** description of the Factory at a point in time. -:ref:`ref-fioctl` provides many methods of viewing Target metadata, which can -reveal: +:ref:`Fioctl ` provides many methods of viewing Target metadata, which can reveal: -* What **apps** are available inside the Target. -* What **tag** a Target has. -* What **MACHINE** a Target has been produced for **(HARDWARE ID).** -* What **git commits** caused the Target to be produced. +* The available **apps** inside a Target. +* Which **tag** a Target has. +* What **MACHINE** a Target has been produced for (**HARDWARE ID**). +* What **git commits** triggered the Target to be built. -Target metadata can be inspected by using 3 primary commands +Target metadata can be inspected by using 3 primary commands: ``fioctl targets list`` Lists the Targets a Factory has produced so far. @@ -92,9 +89,8 @@ Target metadata can be inspected by using 3 primary commands Lists the Targets a Factory has produced in ``-r`` (raw) json format. This is often piped into ``jq`` in order to format the json neatly. - The command output below has highlighted the ``docker_compose_apps`` section, which - contains the **names of apps** that are available in this Target, as well as - their **Docker-Compose App URIs**. + The command output below highlights the ``docker_compose_apps`` section. + This contains the **names of apps** available for the Target, as well as their **Docker-Compose App URIs**. Additionally, the **OSTree Hash** for the Target has been highlighted. @@ -161,13 +157,10 @@ Target metadata can be inspected by using 3 primary commands These details include: - * A web link to the CI build produced for this Target where to view - the **console.log** or **download artifacts**. - * The **hashes for each repo** in the :ref:`ref-factory-sources` at the time - the Target was produced. - * The **OSTree Hash** for this Target. - * The **Docker-Compose App URI** for each available app at the time the Target - was produced. + * A link to the CI build for the Target, where you can view the **console.log** or **download artifacts**. + * The **hashes for each repo** in the :ref:`ref-factory-sources` at the time the Target was produced. + * The **OSTree Hash** for the Target. + * The **Docker-Compose App URI** for each available app at the time the Target was produced. .. toggle-header:: :header: **Click to show command output** @@ -217,8 +210,7 @@ View Targets List devices ``fioctl devices list -f `` - Lists the devices that have connected to a Factory, along with associated - metadata, such as device name, status, Target and enabled apps. + Lists the devices connected to a Factory and metadata, such as device name, status, Target, and enabled apps. .. code-block:: console @@ -229,9 +221,9 @@ List devices Set device tag ``fioctl devices config updates --tag `` - Filter the Targets a device will accept by tag. For example, to move a - device from accepting 'devel' builds to 'main' builds. See the - :ref:`ref-advanced-tagging` section for more examples. + Filter the Targets a device will accept by tag. + For example, to move a device from accepting 'devel' builds to 'main' builds. + See :ref:`ref-advanced-tagging` for more examples. .. code-block:: console @@ -249,10 +241,8 @@ Set app(s) to be enabled Enable :ref:`ref-wireguard` ``fioctl devices config wireguard `` - Enable or disable the Wireguard systemd service on a LmP device. This - requires that you configure a Factory to use an instance of Wireguard you - have set up on your own server as described in the :ref:`ref-wireguard` - guide. + Enable or disable the Wireguard systemd service on a LmP device. + This requires a Factory configured to use a Wireguard instance you have set up on your own server as described in the :ref:`ref-wireguard` guide. .. code-block:: diff --git a/source/user-guide/foundriesio-rest-api/foundriesio-rest-api.rst b/source/user-guide/foundriesio-rest-api/foundriesio-rest-api.rst index a73140ab5..8fa2b1511 100644 --- a/source/user-guide/foundriesio-rest-api/foundriesio-rest-api.rst +++ b/source/user-guide/foundriesio-rest-api/foundriesio-rest-api.rst @@ -3,27 +3,27 @@ Foundries.io REST API ===================== -Foundries.io implements a `REST API`_ that allows users to interact with their -FoundriesFactory and devices. This section shows examples of how to use -the REST API with cURL_, a command-line tool for transferring data using -various network protocols. +Foundries.io™ implements a `REST API`_ that allows users to interact with their Factory and devices. +This section examples use of the REST API with cURL_ (command-line tool for transferring data using various network protocols). To follow this section, it is important to have: -- Completed the :ref:`sec-learn` until the :ref:`gs-flash-device` section. +Prerequisites +------------- + +- Completed the getting started guide up to :ref:`gs-flash-device`. Creating Token -------------- -To interact with the `Foundries.io API `_, you need to create a token. +To interact with the `Foundries.io API `_, create a token. Go to `Tokens `_ and create a new **Api Token** by clicking on :guilabel:`+ New Token`. -Complete with a **Description** and the **Expiration date** and select :guilabel:`next`. +Complete with a **Description** and **Expiration date**, and select :guilabel:`next`. -For this tutorial, check the :guilabel:`Use for tools like fioctl` box and -select your **Factory**. +Check the :guilabel:`Use for tools like fioctl` box and select your **Factory**. .. figure:: /_static/userguide/foundriesio-rest-api/token.png :width: 500 @@ -31,14 +31,13 @@ select your **Factory**. Token for REST API -Save the output of this command to your copy buffer. This is your ```` value. +Save the output, as this is is your ```` value. Getting Started --------------- -The `Foundries.io API `_ includes a complete -`OpenAPI `_ definition. To get started, -configure your host terminal with the variables below: +The `Foundries.io API `_ includes a complete `OpenAPI `_ definition. +To get started, configure your host terminal with the variables below: .. prompt:: bash host:~$, auto @@ -47,26 +46,22 @@ configure your host terminal with the variables below: .. note:: - Make sure to replace ```` with the Factory name and ```` with the token created in the last step. - + Make sure to replace ```` with your Factory name and ```` with the token value. Device List ----------- -This function returns a list of devices registered in your Factory. The HTTP response includes -the same data from the :guilabel:`Devices` tab of the Factory. You can find this -resource's documentation at `Foundries.io API `_ -under `devices`. +This function returns a list of devices registered in your Factory. +The HTTP response includes the same data from your Factory's :guilabel:`Devices` tab. +Documentation can be found at `Foundries.io API `_ under `devices`. -Using the terminal, run: +Run: .. prompt:: bash host:~$, auto host:~$ curl -H "OSF-TOKEN: $TOKEN" https://api.foundries.io/ota/devices/ - -**Example Output**: -.. prompt:: text +.. code-block:: json "devices": [ { @@ -104,19 +99,17 @@ Using the terminal, run: Targets List ------------ -This function returns a list of your Factory targets. The HTTP response includes -the same data from the :guilabel:`Targets` tab of the Factory. You can find this -resource's documentation at `Foundries.io API `_ under `factories`. +This function returns a list of your Factory targets. +The HTTP response includes the same data from the :guilabel:`Targets` tab of the Factory. +You can find documentation at `Foundries.io API `_ under `factories`. -Using the terminal, run: +Run: .. prompt:: bash host:~$, auto host:~$ curl -H "OSF-TOKEN: $TOKEN" https://api.foundries.io/ota/factories/$FACTORY/targets/ -**Example Output**: - -.. prompt:: text +.. code-block:: json { "raspberrypi3-64-lmp-3": { @@ -175,41 +168,37 @@ Configure Device ---------------- It is also possible to send configuration files to your device or fleet. -You can find more about it in the tutorial section: :ref:`tutorial-dynamic-configuration-file`. - -Assuming you want to send a configuration file named as ``app.config`` to your device: +To send a configuration file named ``app.config`` to your device. -**app.config**: +``app.config``: .. prompt:: text [page] url = "https://foundries.io/" -First, you have to convert the file contents into properly escaped JSON string: +#. Convert the file contents into properly escaped JSON string: -.. prompt:: text + .. code-block:: text - [page]\nurl = \"https://foundries.io/\"\n" + [page]\nurl = \"https://foundries.io/\"\n" -Now use the command below to create the ``API_DATA`` variable. +#. Use the command below to create the ``API_DATA`` variable. -Note that the file content is on ``value`` and the file name on ``name``. + Note that ``value`` is set with the file content, and ``name`` with the file name. -.. prompt:: bash host:~$, auto + .. prompt:: bash host:~$, auto - host:~$ export API_DATA='{ "reason": "API test", "files": [{"name":"app.config","unencrypted":true,"value":"[page]\nurl = \"https://foundries.io/\"\n"}]}' + host:~$ export API_DATA='{ "reason": "API test", "files": [{"name":"app.config","unencrypted":true,"value":"[page]\nurl = \"https://foundries.io/\"\n"}]}' -Define the variable ``DEVICE_NAME`` and configure your device using cURL_ with ``-X PATCH``: +#. Define ``DEVICE_NAME`` and configure your device using cURL_ with ``-X PATCH``: -.. prompt:: bash host:~$, auto + .. prompt:: bash host:~$, auto - host:~$ export DEVICE_NAME= - host:~$ curl --data "$API_DATA" -H "Content-Type: application/json" -H "OSF-TOKEN: $TOKEN" -X PATCH https://api.foundries.io/ota/devices/$DEVICE_NAME/config/ + host:~$ export DEVICE_NAME= + host:~$ curl --data "$API_DATA" -H "Content-Type: application/json" -H "OSF-TOKEN: $TOKEN" -X PATCH https://api.foundries.io/ota/devices/$DEVICE_NAME/config/ -**Example Output**: - -.. prompt:: text +.. code-block:: json { "created-at": "2021-11-11T15:59:07", @@ -224,15 +213,12 @@ Define the variable ``DEVICE_NAME`` and configure your device using cURL_ with ` ] } -After some time, ``fioconfig`` receives all the changes and you can find the configuration file -on your device at ``/var/run/secrets/``. +After a moment, ``fioconfig`` receives the changes, and you can find the configuration file on your device under ``/var/run/secrets/``. .. prompt:: bash device:~$, auto device:~$ sudo cat /var/run/secrets/app.config -**Example Output**: - .. prompt:: text [page] @@ -241,10 +227,10 @@ on your device at ``/var/run/secrets/``. Enabling/Disabling Application ------------------------------ -It is also possible to configure what application or tag the device should use. -For example, to enable the ``shellhttpd`` application, you have to send a JSON file similar to: +You can configure what application or tag the device should use. +For example, to enable the ``shellhttpd`` application, you send a JSON file similar to: -.. prompt:: text +.. code-block:: json { "name": "z-50-fioctl.toml", @@ -255,7 +241,7 @@ For example, to enable the ``shellhttpd`` application, you have to send a JSON f "value": "\n[pacman]\n compose_apps = \"shellhttpd\"\n" } -The command below adds the json file into the ``API_DATA`` variable: +The command below adds the JSON to the ``API_DATA`` variable: .. prompt:: bash host:~$, auto @@ -268,27 +254,25 @@ Define the variable ``DEVICE_NAME`` and configure your device using cURL_ with ` host:~$ export DEVICE_NAME= host:~$ curl --data "$API_DATA" -H "Content-Type: application/json" -H "OSF-TOKEN: $TOKEN" -X PATCH https://api.foundries.io/ota/devices/$DEVICE_NAME/config/ -**Example Output**: - -.. prompt:: text +.. code-block:: text {"created-at": "2021-11-10T19:02:30", "applied-at": null, "reason": "API test", "files": [{"name": "wireguard-client", "value": "enabled=0\n\npubkey=J0H7CMG10TsTEai2Ui35KV0fb5oaJ8qd+mnWgIu091s=", "unencrypted": true}, {"name": "z-50-fioctl.toml", "on-changed": ["/usr/share/fioconfig/handlers/aktualizr-toml-update"], "value": "\n[pacman]\n compose_apps = \"shellhttpd\"\n", "unencrypted": true}]} -Finding More about REST API ---------------------------- +Learning More About the REST API +-------------------------------- -Once logged into http://app.foundries.io, you may interact and play with the REST API -from your browser at http://api.foundries.io/ota. +Logged into http://app.foundries.io, you may interact with the REST API from your browser at http://api.foundries.io/ota. -1 - Click on the operation to test. That shows the :guilabel:`Try it out` option. Click on it. +1. Click on the operation to test. + This shows the :guilabel:`Try it out` option. -2 - Customize parameters as you like. +2. Customize parameters. -3 - :guilabel:`Execute` to test. +3. :guilabel:`Execute` to test. -4 - Once it is executed, it shows you a cURL_ command reference. +4. Once executed, it displays a cURL_ command reference. -5 - Finally, you can also check the response. +5. Check the response: .. figure:: /_static/userguide/foundriesio-rest-api/api_example.png :width: 900 @@ -296,7 +280,7 @@ from your browser at http://api.foundries.io/ota. Foundries.io REST API page illustration -This is a very interesting way to explore the Foudries.io REST API and all its possibilities. +This allows you to explore the Foundries.io REST API and its possibilities. .. _REST API: https://en.wikipedia.org/wiki/Representational_state_transfer .. _cURL: https://curl.se/