From 045961be02c879bd3a042cca3e24a8490d89544f Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:28:14 +0530 Subject: [PATCH 01/10] update testing url --- docs/docs/API-docs/opensign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index 3def9d328..f5a9db2b4 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -15,7 +15,7 @@ externalDocs: url: http://docs.opensignlabs.com servers: - url: https://app.opensignlabs.com/api/v1 -- url: https://staging-app.opensignlabs.com/api/v1 +- url: https://sandbox.opensignlabs.com/api/v1 tags: - name: OpenSign description: OpenSource DocuSign alternative From 305a5f6fdab5420b4f1270a49abbb5f868b4a7a8 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:06:33 +0530 Subject: [PATCH 02/10] added staging url --- docs/docs/API-docs/opensign.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index f5a9db2b4..2dbf08507 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -15,6 +15,7 @@ externalDocs: url: http://docs.opensignlabs.com servers: - url: https://app.opensignlabs.com/api/v1 +- url: https://staging-app.opensignlabs.com/api/v1 - url: https://sandbox.opensignlabs.com/api/v1 tags: - name: OpenSign From 0aaeb28eb7fd0c16b56a2e2f3eb4837fc111e087 Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 3 Sep 2024 22:32:08 +0530 Subject: [PATCH 03/10] change branches in command --- docs/docs/self-host/docker/run-locally.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/self-host/docker/run-locally.md b/docs/docs/self-host/docker/run-locally.md index 7ffc79f3e..60f757bd3 100644 --- a/docs/docs/self-host/docker/run-locally.md +++ b/docs/docs/self-host/docker/run-locally.md @@ -9,15 +9,15 @@ import ReactPlayer from 'react-player'; Command for linux/MacOS ``` -export HOST_URL=https://opensign.yourdomain.com && curl --remote-name-all https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/docker-compose.yml https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/Caddyfile https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/.env.local_dev && mv .env.local_dev .env.prod && docker compose up --force-recreate +export HOST_URL=https://opensign.yourdomain.com && curl --remote-name-all https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/docker-compose.yml https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/Caddyfile https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/.env.local_dev && mv .env.local_dev .env.prod && docker compose up --force-recreate ``` Command for Windows (Powershell) ``` -$env:HOST_URL="https://opensign.yourdomain.com"; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/docker-compose.yml -OutFile docker-compose.yml; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/Caddyfile -OutFile Caddyfile; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/.env.local_dev -OutFile .env.local_dev; Rename-Item -Path .env.local_dev -NewName .env.prod; docker compose up --force-recreate +$env:HOST_URL="https://opensign.yourdomain.com"; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/docker-compose.yml -OutFile docker-compose.yml; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/Caddyfile -OutFile Caddyfile; Invoke-WebRequest -Uri https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/.env.local_dev -OutFile .env.local_dev; Rename-Item -Path .env.local_dev -NewName .env.prod; docker compose up --force-recreate ``` Command for Windows (CMD/Terminal) ``` -set HOST_URL=https://opensign.yourdomain.com && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/docker-compose.yml && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/Caddyfile && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/docker_beta/.env.local_dev && rename .env.local_dev .env.prod && docker compose up --force-recreate +set HOST_URL=https://opensign.yourdomain.com && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/docker-compose.yml && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/Caddyfile && curl -O https://raw.githubusercontent.com/OpenSignLabs/OpenSign/main/.env.local_dev && rename .env.local_dev .env.prod && docker compose up --force-recreate ``` and Hit Enter to start the containers automatically. Make sure to replace the host URL with your subdomain where OpenSign will be accessible. You need to point the subdomain to the server where you are running these commands by adding the necessary A record to your DNS. From e73b8ed5a54666dfedc4388dcab216f86e2fd06d Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Fri, 6 Sep 2024 21:01:18 +0530 Subject: [PATCH 04/10] Update opensign.yaml --- docs/docs/API-docs/opensign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index 2dbf08507..0d73c0b4e 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -14,9 +14,9 @@ externalDocs: description: Find out more about OpenSign url: http://docs.opensignlabs.com servers: +- url: https://sandbox.opensignlabs.com/api/v1 - url: https://app.opensignlabs.com/api/v1 - url: https://staging-app.opensignlabs.com/api/v1 -- url: https://sandbox.opensignlabs.com/api/v1 tags: - name: OpenSign description: OpenSource DocuSign alternative From f9f25dc0c32395a4c6d9182684decd80ea87f3fd Mon Sep 17 00:00:00 2001 From: Andrew <148278535+andrew-opensignlabs@users.noreply.github.com> Date: Mon, 9 Sep 2024 02:45:33 +0530 Subject: [PATCH 05/10] Update run-locally.md --- docs/docs/self-host/docker/run-locally.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/self-host/docker/run-locally.md b/docs/docs/self-host/docker/run-locally.md index 60f757bd3..fb2076ec5 100644 --- a/docs/docs/self-host/docker/run-locally.md +++ b/docs/docs/self-host/docker/run-locally.md @@ -86,6 +86,7 @@ openssl req -key ./local_dev.key -new -x509 -days 365 -out ./local_dev.crt openssl pkcs12 -inkey ./local_dev.key -in ./local_dev.crt -export -out ./local_dev.pfx openssl base64 -in ./local_dev.pfx -out ./base64_pfx ``` +Please note that when signing a document using a certificate generated through this process, it won’t be recognized as valid by Adobe Acrobat. To get the green tick on your signed documents, you'll need to purchase a document signing certificate (a p12 certificate in pfx format) from an [AATL-approved Certificate Authority](https://helpx.adobe.com/in/acrobat/kb/approved-trust-list1.html). # CORS Configuration From 743e89038c364c7667e8960353aa0957f5aa6d24 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Mon, 9 Sep 2024 20:19:36 +0530 Subject: [PATCH 06/10] webhook response schema updated --- docs/docs/API-docs/opensign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index 0d73c0b4e..e6d75637c 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -866,7 +866,7 @@ paths: tags: - Webhook summary: Save or Update Webhook - description: "The save or update Webhook API allow you to save webhook url which is used to trigger events\n### events:\n\n1. **viewed:**\n - When signer viewed document this event will trigger.\n ```\n {\n \"event\": \"viewed\",\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"viewedBy\": \"SIGNER_EMAIL\",\n \"viewedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n2. **created:**\n - When document is created this event will trigger.\n ```\n {\n \"event\": \"created\",\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"createdAt\": \"TIMESTAMP\"\n }\n \n3. **signed:**\n - When document is signed by signer this event will trigger.\n ```\n {\n \"event\": \"signed\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n },\n ]\n \"signedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n } \n4. **completed:**\n - When document is signed by all signers this event will trigger.\n ```\n {\n \"event\": \"completed\",\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"completedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n \n5. **declined:**\n - When document is declined by signer this event will trigger.\n ```\n {\n \"event\": \"declined\",\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"declinedBy\": \"SIGNER_EMAIL\",\n \"declinedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n" + description: "The save or update Webhook API allow you to save webhook url which is used to trigger events\n### events:\n\n1. **viewed:**\n - When signer viewed document this event will trigger.\n ```\n {\n \"event\": \"viewed\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"viewedBy\": \"SIGNER_EMAIL\",\n \"viewedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n2. **created:**\n - When document is created this event will trigger.\n ```\n {\n \"event\": \"created\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"createdAt\": \"TIMESTAMP\"\n }\n \n3. **signed:**\n - When document is signed by signer this event will trigger.\n ```\n {\n \"event\": \"signed\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n },\n ]\n \"signedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n } \n4. **completed:**\n - When document is signed by all signers this event will trigger.\n ```\n {\n \"event\": \"completed\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"completedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n \n5. **declined:**\n - When document is declined by signer this event will trigger.\n ```\n {\n \"event\": \"declined\",\n \"objectId\":\"DOCUMENT_ID\"\n \"file\": \"DOCUMENT_URL\",\n \"name\": \"DOCUMENT_NAME\",\n \"note\": \"Please review and sign this document\",\n \"description\": \"\",\n \"signers\": [\n {\n \"name\": \"SIGNER_NAME\",\n \"email\": \"SIGNER_EMAIL\",\n \"phone\": \"SIGNER_PHONE\"\n }\n ],\n \"declinedBy\": \"SIGNER_EMAIL\",\n \"declinedAt\": \"TIMESTAMP\",\n \"createdAt\": \"TIMESTAMP\"\n }\n" operationId: save&updateWebhook requestBody: description: Provide url to create Webhook From 2dcb7eb7a2bac87765bdf501b7dac12d3ff59dbb Mon Sep 17 00:00:00 2001 From: pravin Date: Wed, 18 Sep 2024 11:56:53 +0530 Subject: [PATCH 07/10] Create upgrade-deployment.md Added deployment upgrade help document. --- .../self-host/docker/upgrade-deployment.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/docs/self-host/docker/upgrade-deployment.md diff --git a/docs/docs/self-host/docker/upgrade-deployment.md b/docs/docs/self-host/docker/upgrade-deployment.md new file mode 100644 index 000000000..6532ed1e4 --- /dev/null +++ b/docs/docs/self-host/docker/upgrade-deployment.md @@ -0,0 +1,57 @@ +--- +title: OpenSign™ Self-Hosted 'Upgrade Deployment' Guide Using Docker on Linux, macOS, or Windows +--- +import ReactPlayer from 'react-player'; + +This guide provides step-by-step instructions to upgrade the deployment of OpenSign using Docker. + +### Step 1: Open the Terminal + - **Windows:** Press Win + X and select Windows PowerShell or Windows Terminal from the menu. + - **macOS:** Go to Applications > Utilities > Terminal or search for "Terminal" using Spotlight (Cmd + Space). + - **Linux:** Open the terminal from the application menu or by pressing Ctrl + Alt + T. + +### Step 2: Pull the Latest Docker Images +1) Before executing the commands below, make sure Docker is running on your machine. +2) Ensure that you are in the same directory where you executed the `build` or `compose` Docker command. + +Run the following command to pull the latest OpenSign Docker images: + +``` +docker compose pull +``` + - This command will fetch the most recent versions of the Docker images required by OpenSign. + - Wait for the pulling process to complete. You should see messages indicating the progress and completion of the download. + +Pulling completed + +### Step 3: Start the Updated OpenSign Deployment +After the images have been successfully pulled, run the following command to start the updated OpenSign deployment: +``` +docker compose up +``` + - This command will recreate and start all the necessary containers with the updated images. + - You should see logs indicating that the containers are being created or updated, and eventually, that they are up and running. + +### Running Docker Compose in Detached Mode + +To start your Docker Compose services in detached mode (running in the background), use the following command: + +``` +docker-compose up -d +``` +**Explanation:** + - docker-compose up: This command starts the services defined in your docker-compose.yml file. + - -d: The detached mode flag, which runs the containers in the background and frees up your terminal. + +Docker compose up + +## Notes: + - The docker compose pull command ensures that you have the latest version of the Docker images, while the docker compose up command applies any updates and starts the containers. + +## Troubleshooting: + - If you encounter any errors, check Docker logs by running docker compose logs to get more details. + - Verify that your environment variables and Docker configuration files are set correctly. + +If you require more help, feel free to reach out to our customer support on support@opensignlabs.com. + +For instant help and support, **[join our Discord community!](https://discord.com/invite/xe9TDuyAyj)** From 6ebfa038b301f110844b760edd38312119247ea2 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:53:47 +0530 Subject: [PATCH 08/10] Update opensign.yaml --- docs/docs/API-docs/opensign.yaml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index e6d75637c..9ef48b611 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -1464,6 +1464,9 @@ components: sendInOrder: type: boolean example: false + enableOTP: + type: boolean + example: false createdocument_body: required: - file @@ -1514,6 +1517,9 @@ components: sendInOrder: type: boolean example: false + enableOTP: + type: boolean + example: false inline_response_200_d: type: object properties: @@ -1585,6 +1591,9 @@ components: description: time to complete days is used to calculate expiry date of your document format: number example: 15 + enableOTP: + type: boolean + example: false resendmail_body: required: - document_id @@ -1645,7 +1654,10 @@ components: example: document description folderId: type: string - example: "" + example: "", + enableOTP: + type: boolean + example: false inline_response_200_3: type: object properties: @@ -1712,6 +1724,9 @@ components: sendInOrder: type: boolean example: false + enableOTP: + type: boolean + example: false inline_response_200_5: type: object properties: @@ -1745,6 +1760,9 @@ components: folderId: type: string example: "" + enableOTP: + type: boolean + example: false inline_response_404_7: type: object properties: From 0b9074611abd3d16412bf7b26276c5f1451a2c5e Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:56:23 +0530 Subject: [PATCH 09/10] Update opensign.yaml --- docs/docs/API-docs/opensign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index 9ef48b611..4f56dfaab 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -1654,7 +1654,7 @@ components: example: document description folderId: type: string - example: "", + example: "" enableOTP: type: boolean example: false From 786b674db3d1a0e684d3a38041692cab923c5696 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs <93375423+prafull-opensignlabs@users.noreply.github.com> Date: Wed, 18 Sep 2024 19:11:20 +0530 Subject: [PATCH 10/10] Update opensign.yaml --- docs/docs/API-docs/opensign.yaml | 53 ++++---------------------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/docs/docs/API-docs/opensign.yaml b/docs/docs/API-docs/opensign.yaml index 4f56dfaab..0a278c362 100644 --- a/docs/docs/API-docs/opensign.yaml +++ b/docs/docs/API-docs/opensign.yaml @@ -245,47 +245,6 @@ paths: $ref: '#/components/schemas/invalidtoken' security: - x-api-token: [] - /draftdocument: - post: - tags: - - Documents - summary: Draft Document - description: | - The Draft Document API enables you to create and manage document drafts. These drafts can be further enriched by adding signers and incorporating interactive widgets through our user interface at [ https://app.opensignlabs.com]( https://app.opensignlabs.com) (for cloud version). This API is designed to streamline the process of document preparation, allowing for a seamless transition from draft to final document. - - ### Features: - - Save Document Drafts: Securely save your documents in a draft state. - - Add Signers: Assign signers to your document directly from the API. - ### Note: - You cannot add roles and widgets from this API. You will have to do it from the link received in the response. - operationId: draftedocument - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/draftdocument_body' - required: true - responses: - "200": - description: Document created successfully! - content: - application/json: - schema: - $ref: '#/components/schemas/inline_response_200_d' - "400": - description: "Something went wrong, please try again later!" - content: - application/json: - schema: - $ref: '#/components/schemas/inline_response_400_1' - "405": - description: Invalid API Token! - content: - application/json: - schema: - $ref: '#/components/schemas/invalidtoken' - security: - - x-api-token: [] /createdocument: post: tags: @@ -1200,7 +1159,7 @@ components: $ref: '#/components/schemas/template_Signers' sendInOrder: type: boolean - example: false + example: true createdAt: $ref: '#/components/schemas/date' updatedAt: @@ -1340,7 +1299,7 @@ components: $ref: '#/components/schemas/template_Signers' sendInOrder: type: boolean - example: false + example: true createdAt: $ref: '#/components/schemas/date' updatedAt: @@ -1463,7 +1422,7 @@ components: $ref: '#/components/schemas/draftdocument_body_signers' sendInOrder: type: boolean - example: false + example: true enableOTP: type: boolean example: false @@ -1516,7 +1475,7 @@ components: example: "" sendInOrder: type: boolean - example: false + example: true enableOTP: type: boolean example: false @@ -1585,7 +1544,7 @@ components: example: "" sendInOrder: type: boolean - example: false + example: true timeToCompleteDays: type: number description: time to complete days is used to calculate expiry date of your document @@ -1723,7 +1682,7 @@ components: $ref: '#/components/schemas/createtemplate_body_signers' sendInOrder: type: boolean - example: false + example: true enableOTP: type: boolean example: false