---
title: "Rest PKI samples - Availability per project"
description: "Matrix of which Rest PKI feature samples are available in each samples project (PHP, .NET, Python, Java, Node.js, Ruby on Rails), with links."
canonical: "https://docs.lacunasoftware.com/en-us/articles/rest-pki/samples-availability"
locale: "en"
product: "Rest PKI (legacy)"
last_updated: "2026-10-12"
---

# Rest PKI samples - Availability per project

Since we have several samples projects and we are always adding new feature samples, not all feature samples are
available on a given project. The matrix below shows which samples are available on which projects.

We also have some legacy samples projects no longer updated in [PHP 5.3/5.4](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/legacy), [PHP 5.2](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/legacy52), and [Node.js SPA](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/spa).

|      | [PHP 5.5+](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current) | [ASP.NET MVC](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc) | [ASP.NET Web Forms](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms) | [ASP.NET Core](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore) | [Python Flask](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask) | [Java 7+ Spring MVC](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc) | [Java 6 Spring MVC](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6) | [Node.js MVC](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc) | [Ruby on Rails](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails) |
| ---- |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| **Authentication**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#auth) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#auth) |
| **PAdES**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#pades) |
| **PAdES Upload**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#pades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#pades-upload) |
| **PAdES Co-Sign**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#pades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#pades-cosign) |
| **PAdES Marks**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#pdf-marks) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#pdf-marks) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#pdf-marks) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#pdf-marks) |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#pdf-marks) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#pdf-marks) |   |   |
| **PAdES Server Key**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#pades-server) | ✗ |   | Testing |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#pades-server) |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#pades-server) |   |
| **PAdES w/o client comm.** |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#pades-wo-client) |   |   |   |                                   |   |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#pades-wo-client) |
| **Open PAdES**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#open-pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#open-pades) |   | Preview | Dev | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#open-pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#open-pades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#open-pades) |   |
| **Printer-friendly v.**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#print) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#print) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#print) |   |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#print) |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#print) |   |
| **CAdES**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#cades) |
| **CAdES Upload**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#cades-upload) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#cades-upload) |
| **CAdES Co-Sign**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#cades-cosign) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#cades-cosign) |
| **CAdES Server Key**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#cades-server) | ✗ |   | Testing |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#cades-server) |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#cades-server) |   |
| **Open CAdES**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#open-cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#open-cades) |   | Preview | Dev | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#open-cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#open-cades) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#open-cades) |   |
| **XML Element**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#xml-element) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#xml-element) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#xml-element) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/netcore#xml-element)  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#xml-element)  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#xml-element) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#xml-element) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#xml-element)  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#xml-element) |
| **XML Full**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#xml-full) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#xml-full) |   | Preview | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#xml-full) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#xml-full) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#xml-full) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/nodejs/mvc#xml-full) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#xml-full) |
| **Open Xml**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#open-xml) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#open-xml) |   | Preview |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#open-xml) |   |   |   |
| **Batch (PAdES)**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#batch) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#batch) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#batch) | Preview | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#batch) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc#batch) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/java/mvc-java6#batch) |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#batch) |
| **Batch Optimized (PAdES)**| Dev | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#batch-optimized) | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/web-forms#batch-optimized) |   |   |                                   |   |   |   |
| **Batch (CAdES)**  |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/dotnet/mvc#batch-cades)  |   |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/python/flask#batch-cades)  |   |   |   | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/ruby/rails#batch-cades) |
| **Batch (XML Element)**  | [✔](https://docs.lacunasoftware.com/en-us/articles/rest-pki/php/current#batch-xml-element) |   |   |   |   |   |   | Testing | Testing |

> **Tip**
>
> Some of the `✓` symbols above are links, which take to a description of the relevant files of the corresponding
> sample on the corresponding samples project.

## Legend

| Symbol  | Description                                                         |
| ------- | --------------                                                      |
| ✓       | Available                                                           |
|         | Not available (coming soon)                                         |
| Dev     | In development                                                      |
| Preview | Implemented but pending review, can be previewed on separate branch |
| ✗       | Not Planned (won't implement)                                       |
