# License Utilization Checks

## License Utilization Requests

When deploying a Docker container or cloud-based environment with Form.io, it's essential to ensure outbound internet connectivity to the license validation endpoint:\
\
&#x20;`license.form.io`

License server communication is outbound in nature and is required to validate your Form.io license and ensure correct platform functionality within the containerized environment. A failed connection to the license endpoint could result in a 'restricted' license state, removing some functionality from the portal or forms.&#x20;

Certain API server requests will perform license checks prior to execution. These checks occur in two forms:

* **Cached checks** – performed against a locally cached license state.
* **Blocking checks** – require a real-time validation check to the license server.

### Cached License Utilization&#x20;

These license checks are cached for a duration of 3 hours. Upon a cache miss, a [**blocking** **validation** **request**](#blocking-utilization-checks) is triggered. Within the cache window, subsequent license checks are performed in the background.

| Utilization Type   | Notes                                                                                                                                                                                                                                                                                                |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Submission Request | <p></p><ul><li>Listing Submissions</li><li>Creating Submissions</li><li>Patching Submissions</li><li>Updating Submissions</li><li>Retrieving Submission by ID</li></ul><p>Interacting with some pages in the portal use several of these requests in a single page load to display / modify data</p> |
| Form Request       | <p></p><ul><li>Retrieve Form</li><li>Retrieve form Draft</li></ul><p>Updating / Creating new forms does not incur a utilization</p>                                                                                                                                                                  |

### Blocking Utilization Checks

{% hint style="warning" %}
All other utilization checks are blocking in nature. They must receive a response from the license server before allowing the action to proceed.
{% endhint %}

This is a listing of portal routes, and relevant license utilization checks that may be made as part of it. Which checks are made depend on individual setup.

| Action                                                                          | Potential License Checks                                   |
| ------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| GET /project                                                                    | tenant \| stage                                            |
| GET /project/:projectId                                                         | formManager \| Accessibility \| project \| stage \| tenant |
| POST /project                                                                   | project \| stage \| tenant                                 |
| PUT /project/:projectId                                                         | project \| stage \| tenant                                 |
| DELETE /project/:projectId                                                      | project \| stage \| tenant                                 |
| GET /project/:projectId/manage                                                  | formManager                                                |
| POST /form                                                                      | form                                                       |
| <p>PUT /form/formId</p><p>PUT /form/:formId/draft</p><p>PATCH /form/:formId</p> | form                                                       |
| DELETE /form/:formId                                                            | form                                                       |
