Skip to content

Commit

Permalink
v1.16.0 (#90)
Browse files Browse the repository at this point in the history
* updated Features

* Added Document Generation FreeMarker

* updated E-Signature

* Added Document Action EventBridge docs

* Add 1.16.0 links
  • Loading branch information
mfriesen authored Nov 24, 2024
1 parent 426d5e9 commit 0e2ea41
Show file tree
Hide file tree
Showing 298 changed files with 8,362 additions and 2,678 deletions.
10 changes: 10 additions & 0 deletions docs/add-on-modules/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"label": "Add-On Modules",
"collapsible": true,
"collapsed": true,
"position": 10,
"link": {
"type": "generated-index",
"description": "FormKiQ Add-On Modules."
}
}
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ The template requires the following parameters to be defined:
- **KeyCertificateArn:** The ARN of the ACM certificate for the FormKiQ Key API.
- **AuthCertificateArn:** The ARN of the ACM certificate for the FormKiQ Auth API.

:::note
The ACM certificate for the FormKiQ Console must be in the us-east-1 region due to Amazon CloudFront requirements
:::

### Optional Parameters
- **HostedZoneId:** (Optional) The Route 53 Hosted Zone ID where the A records will be added. This parameter is used if you want the template to automatically create DNS records in Route 53.

Expand Down
222 changes: 222 additions & 0 deletions docs/add-on-modules/modules/document-generation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
---
sidebar_position: 1
---

# Document Generation

The Document Generation feature in the FormKiQ Document Management Platform enables the creation of dynamic documents by combining a predefined document template with one or more data sources. The document generation process uses the Apache FreeMarker templating engine, offering robust capabilities for customizing document content.

## Benefits

- **Efficiency**: Streamline document creation workflows by automating repetitive tasks.
- **Customization**: Use powerful templating features with Apache FreeMarker to create tailored outputs.
- **Scalability**: Handle large volumes of document generation requests with ease.
- **Flexibility**: Generate documents in multiple output formats, such as DOCX and PDF.


## Apache FreeMarker Syntax

Here are a few examples of Apache FreeMarker syntax commonly used in templates:

For the complete reference, visit the official [Apache FreeMarker Documentation](https://freemarker.apache.org/docs/index.html).

### Variable Insertion

Insert variables directly into the template.
```ftl
Hello, ${user.name}!
```

### Conditional Logic

Use conditional statements to customize output based on data values.

```
<#if user.age >= 18>
Welcome to the adult portal.
<#else>
Welcome to the kids' section.
</#if>
```

### Looping Through a List

Iterate over a collection to display repeated content.

```
<#list products as product>
- ${product.name}: ${product.price}
</#list>
```

### Nested Loops

Handle nested data structures for complex templates.

```
<#list orders as order>
Order ID: ${order.id}
<#list order.items as item>
- ${item.name} (${item.quantity})
</#list>
</#list>
```

### Default Values

Provide default values for missing data.

```
Customer Name: ${customer.name!"Unknown Customer"}
```

### String Manipulation

Perform basic string operations.

```
Customer Name (Uppercase): ${customer.name?upper_case}
Order Total (Formatted): ${order.total?string.currency}
```

### Date Formatting

Format dates for better readability.

```
Order Date: ${order.date?string("yyyy-MM-dd")}
```

### Conditional Assignments

Assign values based on conditions.

```
<#assign status = (order.total > 100) ? "Premium" : "Standard">
Order Status: ${status}
```

### Comments

Add comments to templates for clarity.

```
<#-- This is a single-line comment -->
```


## API Endpoints

POST `/documents/{documentId}/generate`

where the documentId is the template document id.

For full API documentation, See [full documentation here](/docs/api-reference/add-document-generate).

### Sample API Requests

#### Request

```json
POST /documents/{documentId}/generate
{
"locale": {
"language": "en",
"country": "US"
},
"datasources": [
{
"name": "customerData",
"documentId": "12345",
"dataRoot": "data"
}
],
"outputType": "PDF",
"saveAsDocumentId": "67890",
"path": "/output/reports/customer_report.pdf"
}
```

#### Explanation of Fields

* locale: Specifies the language and country for locale-specific data formatting.

* language: Language code (e.g., en (English), fr (French), de (German)) following the ISO 639-1 standard.
* country: Country code (e.g., "US" for the United States) following the ISO 3166-1 standard.
* datasources: A list of data sources to merge with the template.
* name: Name of the data source.
* documentId: Document ID of the data source file.
* dataRoot: Root key in the data source to use as the base.
* outputType: Format of the generated document. Supported values: DOCX, PDF.
* saveAsDocumentId: Specific Document ID for saving the generated document.
* path: File path to save the generated document.


## DataSource

The DataSource is a JSON document that provides the values used to populate the placeholders and logic within the Apache FreeMarker template. This enables dynamic content generation by combining the static structure of the template with the dynamic data from the DataSource.

### Key Attributes of a DataSource

- **JSON Document**: The data source must be structured as a JSON document. Each key-value pair in the document corresponds to a variable or object used in the template.
- **`dataRoot` Parameter**: Controls the root node of the JSON document to load into the template. This allows flexibility in selecting the portion of the document to use for rendering.

### Example of a DataSource

#### JSON DataSource
```json
{
"company": {
"name": "Acme Corp",
"location": "New York",
"employees": [
{
"name": "John Doe",
"position": "Manager",
"age": 35
},
{
"name": "Jane Smith",
"position": "Engineer",
"age": 29
}
]
}
}
```

### Using dataRoot

By specifying dataRoot: **company**, only the data under the company key is accessible in the template.

```
Company Name: ${name}
Location: ${location}
<#list employees as employee>
- ${employee.name}, ${employee.position}
</#list>
```

## Document Attributes

In addition to the user-provided DataSource, **Document Attributes** associated with the document are automatically loaded and added to the DataSource. This ensures that metadata and other predefined attributes related to the document can be directly utilized in the template without additional configuration.

### Example

**Document Attributes**

| **Attribute Key** | **Value** |
|--------------------|------------------------------------|
| title | Quarterly Financial Report |
| author | Jane Doe |
| createdDate | 2024-01-15 |
| department | Finance |

**Template**

```ftl
Document Title: ${title}
Author: ${author}
Date Created: ${createdDate}
Department: ${department}
```
94 changes: 94 additions & 0 deletions docs/add-on-modules/modules/e-signature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
sidebar_position: 1
---

# E-Signature Module

✅ Powered by [DocuSign API](https://www.docusign.com/) to enable electronic signatures for any PDF or MS Office document

The E-Signature Module is a FormKiQ Enterprise Add-On Module that enables electronic signature integration; at this time, only DocuSign is supported, but other e-signature integrations can be performed for FormKiQ Enterprise customers.

## Use Cases

* **Contract Management**: Send contracts to clients or partners for signature and ensure compliance with legal standards.
* **HR Onboarding**: Facilitate signing of employment agreements and onboarding documents for new hires.
* **Approval Workflows**: Obtain approvals on proposals, purchase orders, or project documents.
* **Real Estate Transactions**: Manage the signing of real estate contracts and agreements.
* **Healthcare Forms**: Digitally sign patient consent forms and medical records.

## Benefits

* **Ease of Use**: Simplifies the process of sending and managing electronic signature requests.
* **Security**: Leverages DocuSign’s secure platform for legally binding e-signatures.
* **Flexibility**: Supports both remote and in-person signing workflows.
* **Customizable Notifications**: Provides options for reminders and expiration settings to manage pending signatures.
* **Seamless Integration**: Integrates DocuSign settings into the FormKiQ platform for smooth operation.

## Setup DocuSign

To send a document to DocuSign for signing, you need to interact with the DocuSign API. Below is how to configure FormKiQ to use your DocuSign account to send a document for signature using the DocuSign eSignature REST API.

### Set Up a DocuSign Developer Account

* Visit the [DocuSign Developer Center](https://developers.docusign.com/).
* Create an account and log in.

### Create an Integration Key

* Navigate to **Settings** in your DocuSign Developer account.
* Under the **Integrations** section, select **Apps and Keys**.
* Click **Add App & Integration Key**.
* Enter a name for your app and save it. This generates your **Integration Key**, a unique identifier for your application.

### Generate an RSA Private Key

* After creating the Integration Key, locate the **RSA Keypairs** section under the app details.
* Click **Add RSA Keypair**.
* DocuSign will generate a public-private key pair for you. Download the **RSA Private Key** immediately, as it will not be accessible later.
* This key is essential for securing the communication between your application and DocuSign.

### Get Your User ID

* Navigate to your **Profile** in the DocuSign Developer account.
* Look for your **User ID** (sometimes referred to as API Username or Account ID) under the **API and Keys** section.
* Note this value, as it will be used in the configuration.

## Setup FormKiQ

Use the following API to set up DocuSign with FormKiQ:

**PATCH `/sites/{siteId}/configuration`**

#### Request Body
```json
{
"docusign": {
"userId": "your-docuSign-userId",
"integrationKey": "your-docuSign-integrationKey",
"rsaPrivateKey": "your-docuSign-rsaPrivateKey"
}
}
```

## API

The following endpoints are available for DocuSign e-signature functionality, for full API documentation, See [full documentation here](/docs/api-reference/add-docusign-envelopes):

### Create DocuSign Envelope

POST `/esignature/docusign/{documentId}/envelopes`

Creates a DocuSign envelope to send documents for electronic signing.

### Create DocuSign Recipient View

POST `/esignature/docusign/{documentId}/envelopes/{envelopeId}/views/recipient`

Creates a URL for a recipient to view and sign a document.

### DocuSign Callback URL Handler

POST `/esignature/docusign/events`

Handles callback events from DocuSign, such as envelope completion or recipient actions.

File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes.
52 changes: 52 additions & 0 deletions docs/add-on-modules/modules/module-template.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
Create a markdown page to describe the FormKiQ Document Management Platform feature <FEATURE NAME>. The feature provides <...>. The feature has the following API <...>

# <Feature Name>

Briefly describe what the feature is and what it does.

## Use Cases

Outline scenarios or business cases where the feature is most beneficial.

## Benefits
Highlight specific advantages of using this feature to help customers understand its value.

## Prerequisites
List any requirements needed before using the feature, like specific configurations or permissions.

## Getting Started
Step-by-step instructions to enable or activate the feature.

## How It Works
Explain the functionality in more depth, possibly including architecture, workflows, or data flow where relevant.

## API Endpoints

The API Endpoints can be found under the path **/feature**. [See full documentation here](#)

## Sample API Requests
Provide example API requests and responses in JSON, with explanations of each field.

## Usage Instructions
Detailed steps or procedures on how to use the feature effectively, possibly with subheadings like:
- **Basic Usage**
- **Advanced Usage**
- **Best Practices**

## Configuration Options
Describe configurable parameters with explanations of each setting and its impact.

## Examples
Include example use cases, code snippets, or sample configurations to illustrate common applications.

## Common Issues and Troubleshooting
Document known issues or challenges with steps to troubleshoot.

## FAQs
Address frequently asked questions related to the feature.

## Related Features and Integrations
Mention related features or integrations within the platform that complement this feature.

## Additional Resources
Link to external resources, API references, or relevant documentation for further reading.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 0e2ea41

Please sign in to comment.