Compare commits

..
Author SHA1 Message Date
prafull-opensignlabsandGitHub 0b8fb87a29 add certificate parameter in completed webhook event 2024-12-23 17:54:39 +05:30
prafull-opensignlabsandGitHub e0249211d2 update webhook event for draft template and readonly for dropdown, textbox widget 2024-12-19 19:11:55 +05:30
prafull-opensignlabsandGitHub a244c1ba3d docs: update info of drodown, radio button, checkbox 2024-12-13 20:49:53 +05:30
prafull-opensignlabsandGitHub 0a79807cb4 feat: add api documentation for selfsign 2024-12-11 19:10:11 +05:30
prafull-opensignlabsandGitHub b70c473002 docs: change parameter from size to fontsize in api docs 2024-11-12 15:28:15 +05:30
prafull-opensignlabsandGitHub 937390fca0 docs: update font size in api documentation 2024-11-12 12:25:12 +05:30
prafull-opensignlabsandGitHub 1140318719 Update info 2024-11-11 17:09:24 +05:30
prafull-opensignlabsandGitHub 655371c6d9 added draft template and color for widget cotent 2024-11-11 16:23:11 +05:30
AmolandGitHub f07fc78eff Update enforce-email-verification.md 2024-11-07 00:53:23 +05:30
AmolandGitHub 60034a4ad8 Create enforce-email-verification.md 2024-11-07 00:49:49 +05:30
RaktimaandGitHub ead7bf8841 Merge pull request #1421 from pravinOpenSign/patch-26
Update run-locally.md
2024-11-06 17:25:31 +05:30
pravinandGitHub 15d2798aab Update run-locally.md 2024-11-06 17:22:44 +05:30
prafull-opensignlabsandGitHub 58a0af40e6 Merge pull request #1397 from pravinOpenSign/patch-22
Update embed-template.md
2024-10-29 16:21:49 +05:30
prafull-opensignlabsandGitHub 1b79b45b1f Update embed-template.md 2024-10-29 16:21:29 +05:30
pravinandGitHub f831ff3b7a Update embed-template.md
Updated the react player settings, default playing set to False,  playing ={false}
2024-10-29 16:17:16 +05:30
prafull-opensignlabsandGitHub f1b6859e9c remove import statement from publictemplate doc 2024-10-29 14:11:16 +05:30
ZathielandGitHub 2148f5196c Merge pull request #1395 from pravinOpenSign/patch-15 2024-10-29 09:15:28 +01:00
pravinandGitHub 5495e569df Update publicTemplate.md
Added dependency import ReactPlayer from 'react-player';
2024-10-29 13:36:51 +05:30
pravinandGitHub e121df48fe Update embed-template.md
added the dependency import ReactPlayer from 'react-player'
2024-10-29 13:33:05 +05:30
prafull-opensignlabsandGitHub 39c05b1eb3 Merge pull request #1394 from pravinOpenSign/patch-12
Patch 12
2024-10-29 12:56:29 +05:30
pravinandGitHub 78892a497d Update embed-template.md
Updated the content for embeding the template
2024-10-29 12:19:22 +05:30
pravinandGitHub ccb08949ff Update sign-yourself.md
Added the details about My signature
2024-10-28 17:37:28 +05:30
pravinandGitHub 74b091b1eb Create embed-template.md
Added a new help document for embedding the template.
2024-10-24 19:13:22 +05:30
AmolandGitHub 264214babd Update opensign.yaml 2024-10-24 17:30:37 +05:30
pravinandGitHub 38930133f7 Update publicTemplate.md
Updated the steps
2024-10-24 16:29:58 +05:30
pravinandGitHub 758cfc8e8d Update publicTemplate.md 2024-10-24 16:15:37 +05:30
pravinandGitHub 2a9ae74c33 Update publicTemplate.md
Updated the page content
2024-10-24 16:14:48 +05:30
pravinandGitHub 2f73ba974c Update publicTemplate.md
updated the content
2024-10-24 16:08:25 +05:30
pravinandGitHub 7c0b744c40 Update publicTemplate.md
Update the header font
2024-10-24 15:07:08 +05:30
pravinandGitHub 010d2dba60 Update publicTemplate.md
Updated the content
2024-10-24 15:04:58 +05:30
pravinandGitHub c0b45e97ea Create publicTemplate.md
help document for public template
2024-10-23 17:04:02 +05:30
RaktimaandGitHub 7316fcd18a Merge pull request #1370 from pravinOpenSign/patch-25
Patch 25
2024-10-22 10:21:25 +05:30
pravinandGitHub 08a2d8a1a4 Update create-template.md
Correct the spelling
2024-10-21 18:24:54 +05:30
pravinandGitHub dbd53ba0d2 Update create-template.md
Updated the document content and Images.
2024-10-21 17:54:53 +05:30
pravinandGitHub 8b0c73c58e Update need-your-sign.md 2024-10-21 14:28:45 +05:30
pravinandGitHub a292687a8c Update expired.md 2024-10-21 14:28:16 +05:30
pravinandGitHub 8659c1f4dc Update contactbook.md
update the label actions button to Action buttons
2024-10-21 14:27:45 +05:30
pravinandGitHub 8ed73ba07b Create contactbook.md
Added the new contact book report
2024-10-21 14:26:20 +05:30
pravinandGitHub a41a31176d Update expired.md
Update the report name from Expired Documents Report to Expired documents report
2024-10-21 13:40:13 +05:30
pravinandGitHub d6740efaf9 Update declined.md
Updated the report name "Declined Documents Report"  to "Declined documents report"
2024-10-21 13:37:23 +05:30
pravinandGitHub aac4ea8e2a Update drafts.md
update the report name from "Draft Documents Report" to Draft documents report"
2024-10-21 13:34:51 +05:30
pravinandGitHub 3fe26cfb07 Update need-your-sign.md
Updated the header from # Need your sign report in OpenSign  to # Need your sign report to maintain the consistency in all report.
2024-10-21 13:30:23 +05:30
pravinandGitHub c837df6540 Update completed.md
Updated the word from 
"Completed Documents Report" to ""Completed documents report"
2024-10-21 13:28:43 +05:30
pravinandGitHub 03b6b567fc Update in-progress.md
Updated the sentence "In progress document Interface  " to  "In progress document report"
2024-10-21 13:22:58 +05:30
pravinandGitHub 09fbd442be Update need-your-sign.md
Updated the sentence "Understanding the Need your sign Interface  " to  "Understanding the Need your sign report"
2024-10-21 13:22:15 +05:30
pravinandGitHub 5f32ca0140 Update in-progress.md
Updated the Document and The latest Images in in-progress report.
2024-10-21 13:12:12 +05:30
pravinandGitHub 46e5aa2815 Update run-locally.md
Updated the sentence 
"Create a Docker Hub account if you don't already have one."
2024-10-21 12:31:15 +05:30
pravinandGitHub db635f80f8 Update need-your-sign.md
Update the Word "Need Your Signature" to "Need your signature.
2024-10-21 12:21:19 +05:30
prafull-opensignlabsandGitHub c3a101bc18 Merge pull request #1352 from pravinOpenSign/patch-23
Update upgrade-deployment.md
2024-10-18 19:47:26 +05:30
pravinandGitHub 1af4bd430f Update upgrade-deployment.md
Update the command to pull upgrade the opensign deployment
2024-10-18 17:18:13 +05:30
AmolandGitHub 0459c404f5 Update completed.md 2024-10-18 16:16:51 +05:30
prafull-opensignlabsandGitHub 492f242e4d update local command 2024-10-16 13:21:44 +05:30
prafull-opensignlabsandGitHub e06d6d5427 update command of local 2024-10-16 13:16:44 +05:30
prafull-opensignlabsandGitHub 747c7c549c Merge pull request #1344 from OpenSignLabs/update-doc
feat: update doc add enableTour variable
2024-10-15 11:51:03 +05:30
RaktimaNXG e91d615e68 feat: update doc add enableTour variable 2024-10-15 11:14:10 +05:30
prafull-opensignlabsandGitHub 2d527d59b0 Merge pull request #1310 from OpenSignLabs/revert-1303-update-doc
Revert "feat: update doc add enableTour variable"
2024-10-09 10:08:00 +05:30
prafull-opensignlabsandGitHub 340947a36d Revert "feat: update doc add enableTour variable" 2024-10-09 10:07:44 +05:30
prafull-opensignlabsandGitHub 91d098ef65 Merge pull request #1303 from OpenSignLabs/update-doc
feat: update doc add enableTour variable
2024-10-09 10:04:27 +05:30
RaktimaNXG d9f8ea8aca refactor code 2024-10-07 10:23:28 +05:30
AndrewandGitHub 33bcb55124 Update s3.md 2024-10-03 12:59:28 +05:30
AndrewandGitHub 5a93207dc2 Update s3.md 2024-10-03 12:55:03 +05:30
AndrewandGitHub fa7c36dbe2 fix syntax issue 2024-10-03 12:26:13 +05:30
prafull-opensignlabsandGitHub faba8b8201 Merge pull request #1286 from OpenSignLabs/docs_s3
update s3 doc
2024-10-03 10:52:42 +05:30
prafull-opensignlabsandGitHub 3422bc6f9e Update s3.md 2024-10-03 10:51:19 +05:30
prafull-opensignlabsandGitHub a195b758e6 Update s3.md 2024-10-03 10:49:26 +05:30
ZathielandGitHub 083cd60f2d Merge pull request #1284 from pravinOpenSign/patch-15 2024-10-01 10:19:21 +02:00
pravinandGitHub f4b7449262 Update run-locally.md 2024-10-01 13:19:00 +05:30
prafull-opensignlabsandGitHub fb68931538 Merge pull request #1281 from OpenSignLabs/docs_s3
Docs: Update s3 documentation
2024-09-30 21:28:55 +05:30
prafull-opensignlabsandGitHub be07fcec24 Update s3 documentation 2024-09-30 21:24:58 +05:30
RaktimaNXG f6245cfada feat: update doc add enableTourvariable 2024-09-30 16:47:08 +05:30
prafull-opensignlabsandGitHub 77cf6de722 Update run-locally.md 2024-09-26 10:11:25 +05:30
prafull-opensignlabsandGitHub 2b17c26722 Merge pull request #1177 from EDIflyer/feature/ediflyer-docs
docs: update install guidance
2024-09-25 20:07:19 +05:30
RaktimaNXG 9862921297 Merge branch 'feat-docs' of https://github.com/OpenSignLabs/OpenSign into feat-docs 2024-09-19 14:56:55 +05:30
RaktimaNXG 685b2ceabd update opensign-demo video 2024-09-19 14:55:20 +05:30
prafull-opensignlabsandGitHub 786b674db3 Update opensign.yaml 2024-09-18 19:11:20 +05:30
prafull-opensignlabsandGitHub 0b9074611a Update opensign.yaml 2024-09-18 14:56:23 +05:30
prafull-opensignlabsandGitHub 6ebfa038b3 Update opensign.yaml 2024-09-18 14:53:47 +05:30
prafull-opensignlabsandGitHub 4c809bb8d3 Merge pull request #1214 from pravinOpenSign/patch-62
Create upgrade-deployment.md
2024-09-18 14:33:56 +05:30
pravinandGitHub 2dcb7eb7a2 Create upgrade-deployment.md
Added deployment upgrade help document.
2024-09-18 11:56:53 +05:30
prafull-opensignlabsandGitHub 743e89038c webhook response schema updated 2024-09-09 20:19:36 +05:30
AndrewandGitHub f9f25dc0c3 Update run-locally.md 2024-09-09 02:45:33 +05:30
EDIflyerandEDIflyer ca75698328 better differentiate between custom domain and local 2024-09-08 16:26:01 +01:00
EDIflyerandEDIflyer f117aeb7c4 Add comment re CPU architecture
As per Discord discussions
2024-09-08 16:25:54 +01:00
EDIflyerandEDIflyer e36557e844 Update run-locally.md
Remove reference to NodeJS and Git as these aren't required for Docker as are included within it.
2024-09-08 16:25:39 +01:00
prafull-opensignlabsandGitHub e73b8ed5a5 Update opensign.yaml 2024-09-06 21:01:18 +05:30
AmolandGitHub 0aaeb28eb7 change branches in command 2024-09-03 22:32:08 +05:30
prafull-opensignlabsandGitHub 305a5f6fda added staging url 2024-09-02 11:06:33 +05:30
prafull-opensignlabsandGitHub 045961be02 update testing url 2024-09-02 10:28:14 +05:30
RaktimaNXG c612dd3e70 feat: replace opensign video to gif 2024-08-30 19:02:29 +05:30
RaktimaNXG ea4527e2dd feat: add opensign-react npm demo video 2024-08-30 18:49:55 +05:30
prafull-opensignlabsandGitHub aada33f23f Update run-locally.md 2024-08-30 11:02:17 +05:30
prafull-opensignlabsandGitHub 1f44582658 Update run-locally.md 2024-08-30 10:52:14 +05:30
prafull-opensignlabsandGitHub 198a58e524 Update run-locally.md 2024-08-29 20:01:58 +05:30
prafull-opensignlabsandGitHub 0d78aef414 Update run-locally.md 2024-08-29 20:01:31 +05:30
prafull-opensignlabsandGitHub 8f99cb0514 Update run-locally.md 2024-08-29 19:59:30 +05:30
prafull-opensignlabsandGitHub 9a734d9b3c Merge pull request #1132 from pravinOpenSign/patch-57
Update need-your-sign.md
2024-08-29 19:15:54 +05:30
prafull-opensignlabsandGitHub 7a2c93a3e9 Merge pull request #1133 from pravinOpenSign/patch-58
Update drafts.md
2024-08-29 19:13:23 +05:30
pravinandGitHub a5e1768f7e Update drafts.md
update the title Complete documents report to "draft documents report"
2024-08-29 18:20:49 +05:30
pravinandGitHub 30e27062bd Update need-your-sign.md
Corrected the spelling mistake Spelling mistake Action button  to Actions buttons
2024-08-29 18:19:05 +05:30
prafull-opensignlabsandGitHub 97d28a1b48 Merge pull request #1123 from pravinOpenSign/patch-52
Update declined.md
2024-08-29 10:43:36 +05:30
prafull-opensignlabsandGitHub aade153f1c Merge pull request #1125 from pravinOpenSign/patch-54
Update completed.md
2024-08-29 10:42:38 +05:30
prafull-opensignlabsandGitHub df6f5d4b33 Merge pull request #1126 from pravinOpenSign/patch-55
Update in-progress.md
2024-08-29 10:41:51 +05:30
prafull-opensignlabsandGitHub ab14628769 Merge pull request #1127 from pravinOpenSign/patch-56
Update drafts.md
2024-08-29 10:41:33 +05:30
RaktimaNXG 69effb5af0 feat: replace demo-video 2024-08-28 18:41:17 +05:30
RaktimaNXG 6e9078d64b feat: upload public demo video 2024-08-28 18:22:17 +05:30
pravinandGitHub 9c73b7818f Update drafts.md
title updated
2024-08-28 18:04:23 +05:30
pravinandGitHub c5246d7a83 Update in-progress.md
content updated for shared document popup
2024-08-28 18:03:04 +05:30
pravinandGitHub 35511e08ac Update completed.md
Title updated
2024-08-28 17:57:59 +05:30
pravinandGitHub 39dc8b226a Update declined.md
page title updated
2024-08-28 17:53:52 +05:30
prafull-opensignlabsandGitHub 7cb531b183 Merge pull request #1118 from pravinOpenSign/patch-48
Update drafts.md
2024-08-28 17:42:44 +05:30
prafull-opensignlabsandGitHub 58422b17e5 Merge pull request #1119 from pravinOpenSign/patch-49
Update in-progress.md
2024-08-28 17:42:14 +05:30
prafull-opensignlabsandGitHub 0b2191f97c Merge pull request #1121 from pravinOpenSign/patch-50
Update expired.md
2024-08-28 17:41:40 +05:30
prafull-opensignlabsandGitHub a3e672cde0 Merge pull request #1122 from pravinOpenSign/patch-51
Update declined.md
2024-08-28 17:41:16 +05:30
pravinandGitHub 5a0b10bdff Update declined.md
Declined Document report
2024-08-28 17:18:37 +05:30
pravinandGitHub dfbf4d8a8f Update expired.md
Expired documents report help document completed
2024-08-28 17:15:51 +05:30
pravinandGitHub 4727d622db Update in-progress.md
Updated the help document for in-progress report.
2024-08-28 17:02:43 +05:30
pravinandGitHub e18e62754f Update drafts.md
Draft document report help document updated
2024-08-28 15:28:15 +05:30
prafull-opensignlabsandGitHub bec7af5142 Merge pull request #1117 from pravinOpenSign/patch-47
Update completed.md
2024-08-28 12:58:03 +05:30
pravinandGitHub 0db937eeeb Update completed.md
content updated
2024-08-28 12:57:20 +05:30
prafull-opensignlabsandGitHub c8d26a5ea9 Merge pull request #1114 from pravinOpenSign/patch-46
Update create-document.md
2024-08-28 12:45:54 +05:30
pravinandGitHub 1659ebd2ac Update create-document.md
fixed the end tag <img> issue
2024-08-27 19:34:35 +05:30
prafull-opensignlabsandGitHub 7877d13776 Merge pull request #1113 from pravinOpenSign/patch-45
Update create-document.md
2024-08-27 19:16:39 +05:30
pravinandGitHub 2f7cacb933 Update create-document.md
Added the Missing <img> tag
2024-08-27 16:47:17 +05:30
prafull-opensignlabsandGitHub 16fcbf8a54 Update create-document.md 2024-08-27 16:37:29 +05:30
prafull-opensignlabsandGitHub 719a23c95b Update create-document.md 2024-08-27 16:30:52 +05:30
prafull-opensignlabsandGitHub f4db8af201 Update create-document.md 2024-08-27 16:23:01 +05:30
prafull-opensignlabsandGitHub 3549c63cc0 Merge pull request #1109 from pravinOpenSign/patch-42
Update declined.md
2024-08-27 16:17:25 +05:30
prafull-opensignlabsandGitHub b9ed7e5293 Merge pull request #1100 from pravinOpenSign/patch-34
Update completed.md
2024-08-27 16:16:30 +05:30
prafull-opensignlabsandGitHub e34e2c4386 Merge pull request #1110 from pravinOpenSign/patch-43
Update create-template.md
2024-08-27 16:16:09 +05:30
prafull-opensignlabsandGitHub a09b2e186f Merge pull request #1099 from pravinOpenSign/patch-33
Update list-grid-view.md
2024-08-27 16:15:52 +05:30
prafull-opensignlabsandGitHub cc273261c3 Merge pull request #1111 from pravinOpenSign/patch-44
Update need-your-sign.md
2024-08-27 16:15:17 +05:30
prafull-opensignlabsandGitHub 26c5c951b6 Merge pull request #1098 from pravinOpenSign/patch-32
Update create-document.md
2024-08-27 16:14:59 +05:30
prafull-opensignlabsandGitHub e63178b899 Merge pull request #1105 from pravinOpenSign/patch-39
Update my-signature.md
2024-08-27 16:14:36 +05:30
pravinandGitHub eb42f08640 Update need-your-sign.md
updated the signers description paragraph.
2024-08-27 15:30:36 +05:30
pravinandGitHub 2843bfd5c9 Update create-template.md
Updated the quick send paragraph description
2024-08-27 15:25:10 +05:30
pravinandGitHub b2a838dc4e Update declined.md
Update the signers description
2024-08-27 15:02:01 +05:30
pravinandGitHub c682a6d8eb Update my-signature.md
Updated the Images on my signature page
2024-08-27 13:19:16 +05:30
prafull-opensignlabsandGitHub c4a23b4f1b Merge pull request #1104 from pravinOpenSign/patch-38
Update declined.md
2024-08-27 11:21:50 +05:30
pravinandGitHub 12e74533c7 Update declined.md
updated the heading "Understanding the Completed Documents Report"
2024-08-27 11:20:14 +05:30
prafull-opensignlabsandGitHub 24c8f6012f Merge pull request #1102 from pravinOpenSign/patch-36
Update declined.md
2024-08-27 10:24:08 +05:30
prafull-opensignlabsandGitHub b20fb9ea3f Merge pull request #1103 from pravinOpenSign/patch-37
Update need-your-sign.md
2024-08-27 10:22:24 +05:30
prafull-opensignlabsandGitHub 079e0defc4 Merge pull request #1097 from pravinOpenSign/patch-31
Update my-signature.md
2024-08-27 10:08:02 +05:30
prafull-opensignlabsandGitHub 00ad406e1b Merge pull request #1090 from pravinOpenSign/patch-30
Update quick-send.md
2024-08-27 10:03:59 +05:30
pravinandGitHub 5c7a9e1d08 Update need-your-sign.md
Need your signature report help document completed.
2024-08-26 19:02:23 +05:30
pravinandGitHub ea2c981a7f Update declined.md
help document for decline document reports is completed.
2024-08-26 18:45:08 +05:30
pravinandGitHub ee18d1b317 Update completed.md
Help document added for completed document report
2024-08-26 18:18:23 +05:30
pravinandGitHub 7f6771e56d Update list-grid-view.md
Images updated
2024-08-26 17:21:37 +05:30
pravinandGitHub 1308b143c4 Update create-document.md
Help document for creating and managing folders in OpenSign Drive has been completed
2024-08-26 17:07:42 +05:30
pravinandGitHub 7be2d1f06a Update my-signature.md
Update the signature page image
2024-08-26 14:34:51 +05:30
pravinandGitHub 62021e8870 Update quick-send.md
Help documents finalized for signature requests using Quick Send.
2024-08-23 19:16:54 +05:30
prafull-opensignlabsandGitHub ea5f407786 Merge pull request #1083 from pravinOpenSign/patch-29
Update use-template.md
2024-08-22 13:07:26 +05:30
pravinandGitHub 2ecd1823e1 Update use-template.md
completed help document: create the document from template
2024-08-21 19:02:26 +05:30
prafull-opensignlabsandGitHub 1e2eee63df Update create-template.md 2024-08-19 16:03:45 +05:30
prafull-opensignlabsandGitHub 8fda979870 Update create-template.md 2024-08-19 15:58:24 +05:30
prafull-opensignlabsandGitHub c59002c375 Update create-template.md 2024-08-19 15:55:50 +05:30
prafull-opensignlabsandGitHub 1fe05b402b Update create-template.md 2024-08-19 15:51:48 +05:30
prafull-opensignlabsandGitHub c7d5bef886 Merge pull request #1075 from pravinOpenSign/patch-26
Update create-template.md
2024-08-19 15:45:20 +05:30
pravinandGitHub ca2fc2bd5c Update create-template.md
Create template help document updated.
2024-08-19 15:43:27 +05:30
prafull-opensignlabsandGitHub 8bf9fb6299 Delete docs/docs/self-host/docker/run-locally-windows.md 2024-08-19 10:42:11 +05:30
prafull-opensignlabsandGitHub 031f24180a Merge pull request #1061 from pravinOpenSign/patch-25
Update sign-yourself.md
2024-08-14 21:05:21 +05:30
prafull-opensignlabsandGitHub 8663777097 Update run-locally.md 2024-08-14 21:04:16 +05:30
prafull-opensignlabsandGitHub 342876cd0b Update run-locally.md 2024-08-14 21:02:17 +05:30
prafull-opensignlabsandGitHub beaa256e3f Update run-locally.md 2024-08-14 20:59:06 +05:30
pravinandGitHub 27ae27187d Update sign-yourself.md
updated the Side bar position.
2024-08-14 19:43:38 +05:30
prafull-opensignlabsandGitHub e8d692a707 Merge pull request #1059 from pravinOpenSign/patch-24
Update sign-yourself.md
2024-08-14 17:07:15 +05:30
prafull-opensignlabsandGitHub 4f71d1bd03 Merge pull request #1057 from pravinOpenSign/patch-23
Update request-signatures.md
2024-08-14 13:42:43 +05:30
prafull-opensignlabsandGitHub 8d33d4c44e Update run-locally.md 2024-08-13 20:21:56 +05:30
prafull-opensignlabsandGitHub 8be55a30c1 Update run-locally.md 2024-08-13 20:18:26 +05:30
prafull-opensignlabsandGitHub 46a0cfa1eb Update run-locally.md 2024-08-13 20:16:29 +05:30
prafull-opensignlabsandGitHub 6988bca7f4 Update run-locally.md 2024-08-13 20:13:33 +05:30
prafull-opensignlabsandGitHub 1a2c0ecbfc Update run-locally.md 2024-08-13 20:11:10 +05:30
prafull-opensignlabsandGitHub f2281505a4 Update run-locally.md 2024-08-13 20:10:52 +05:30
prafull-opensignlabsandGitHub 3ff790c57b Update run-locally.md 2024-08-13 20:02:04 +05:30
pravinandGitHub d5b0fc4e3b Update sign-yourself.md
Updated the title and removed some text
2024-08-13 18:52:25 +05:30
pravinandGitHub 69129c2d47 Update request-signatures.md
Image Location Changed and updated the support line add the bottom
2024-08-13 18:46:38 +05:30
prafull-opensignlabsandGitHub 1486d66b9b Update run-locally.md 2024-08-13 18:33:20 +05:30
prafull-opensignlabsandGitHub 67323d01f5 Update run-locally.md 2024-08-13 18:18:17 +05:30
prafull-opensignlabsandGitHub d0566e6645 Update run-locally.md 2024-08-13 18:16:57 +05:30
prafull-opensignlabsandGitHub a3e1fa866e Update request-signatures.md 2024-08-13 17:45:58 +05:30
prafull-opensignlabsandGitHub 6d6b70a888 Update run-locally.md 2024-08-13 17:31:33 +05:30
prafull-opensignlabsandGitHub c152d3bf35 Update sign-yourself.md 2024-08-13 17:24:25 +05:30
prafull-opensignlabsandGitHub 56a0211b03 Update request-signatures.md 2024-08-13 17:20:43 +05:30
prafull-opensignlabsandGitHub 87fb943ddb Update request-signatures.md 2024-08-13 17:12:40 +05:30
prafull-opensignlabsandGitHub dacc9bb27e Update request-signatures.md 2024-08-13 17:07:02 +05:30
prafull-opensignlabsandGitHub 43a9fa6820 Update run-locally.md 2024-08-13 16:52:11 +05:30
prafull-opensignlabsandGitHub 523d7a0896 Update request-signatures.md 2024-08-13 16:06:50 +05:30
prafull-opensignlabsandGitHub df53e243a5 Update request-signatures.md 2024-08-13 15:51:03 +05:30
prafull-opensignlabsandGitHub b30d7e3337 Update request-signatures.md 2024-08-13 15:45:36 +05:30
AmolandGitHub 7a8e2bcd02 Update run-locally.md 2024-08-13 15:35:17 +05:30
AmolandGitHub 7aa505f1a3 Update run-locally.md 2024-08-13 15:34:34 +05:30
AmolandGitHub beecd2d26f Merge pull request #1008 from pravinOpenSign/patch-20
Update request-signatures.md
2024-08-02 17:49:43 +05:30
pravinandGitHub 96ecbe97f1 Update request-signatures.md
The issue with the image closing tag has been fixed.
2024-08-02 17:47:22 +05:30
AndrewandGitHub 7161da4a2f Merge pull request #1004 from pravinOpenSign/patch-17 2024-08-02 17:21:48 +05:30
AndrewandGitHub 462fdfe1be Merge pull request #1005 from pravinOpenSign/patch-18 2024-08-02 17:21:41 +05:30
AndrewandGitHub dc25133b10 Merge pull request #1006 from pravinOpenSign/patch-19 2024-08-02 17:21:21 +05:30
pravinandGitHub bb7552a7bf Update sign-yourself.md
Added padding between images and the subsequent line
2024-08-02 16:58:28 +05:30
pravinandGitHub 79b4ca053a Update sign-yourself.md
The images in the "Sign Yourself" help document have been updated.
2024-08-02 16:44:24 +05:30
pravinandGitHub 8d91bd218b Update request-signatures.md
The request signature flow help document has been updated.
2024-08-02 16:36:50 +05:30
AmolandGitHub 8e0c96589a Update manage-users.md 2024-07-28 12:41:29 +05:30
AmolandGitHub 3ac66ea4c5 Update manage-users.md 2024-07-28 12:39:43 +05:30
AndrewandGitHub acbff61d9e Update run-locally.md 2024-07-25 02:07:01 +05:30
prafull-opensignlabsandGitHub 83a1da04d1 Update run-locally-windows.md 2024-07-25 01:37:30 +05:30
AmolandGitHub b86155de49 Merge pull request #951 from pravinOpenSign/patch-11
Update sign-yourself.md
2024-07-24 23:50:43 +05:30
prafull-opensignlabsandGitHub 2108ce52ca Update how-to-generate-self-signed-document-signing-certificate.md 2024-07-24 22:56:51 +05:30
AmolandGitHub 4af96da515 Create upgrade-to-v2.1.0.md 2024-07-24 15:31:57 +05:30
pravinandGitHub eda2085d4b Update sign-yourself.md
Replace the duplicate step 4 to step 5
2024-07-19 11:49:14 +05:30
AmolandGitHub 6cdcf66e81 Merge pull request #947 from pravinOpenSign/patch-9
Update sign-yourself.md
2024-07-18 18:20:45 +05:30
pravinandGitHub a701522dca Update sign-yourself.md
Completed Sign yourself help document.
2024-07-18 18:19:05 +05:30
AmolandGitHub ddeb31e530 Update opensign.yaml 2024-07-11 08:58:16 +05:30
AmolandGitHub f827ead0b6 Update opensign.yaml 2024-07-11 08:32:19 +05:30
AmolandGitHub ae87703a34 Update index.js 2024-07-11 08:07:54 +05:30
AmolandGitHub 250c2d768b Update DigitalOcean.md 2024-06-14 23:29:24 +05:30
AmolandGitHub e5e6587490 Create env-variables.md 2024-06-12 03:15:47 +05:30
AmolandGitHub 4921152336 Update expired.md 2024-06-10 22:50:29 +05:30
AmolandGitHub 0c7da91fab Update expired.md 2024-06-10 22:49:17 +05:30
AmolandGitHub add07026bc Update Ensure this field is accurately filled and meets all requirements.md 2024-06-06 12:37:37 +05:30
AmolandGitHub 7f64418a6c Create Ensure this field is accurately filled and meets all requirements.md 2024-06-06 12:23:07 +05:30
AmolandGitHub e83ceaa815 Update sign-yourself.md 2024-06-05 00:05:58 +05:30
AmolandGitHub e3dcb99438 Update FAQs.md 2024-06-04 18:48:29 +05:30
AmolandGitHub 78821cb5e4 Update _category_.json 2024-06-04 18:47:55 +05:30
AmolandGitHub 548441dded Create FAQs.md 2024-06-04 18:43:50 +05:30
AmolandGitHub 7c53ae421c Create _category_.json 2024-06-04 18:12:25 +05:30
AmolandGitHub a71a867aea Update opensign.yaml 2024-05-31 20:50:13 +05:30
AmolandGitHub 4d0d2e9a58 Update my-signature.md 2024-05-23 10:37:06 +05:30
AmolandGitHub fcda1e325e Update manage-users.md 2024-05-22 02:59:26 +05:30
AmolandGitHub b41fed0d12 Update my-signature.md 2024-05-22 02:58:14 +05:30
AmolandGitHub ac533d92f6 Create _category_.json 2024-05-22 02:37:55 +05:30
AmolandGitHub 792b48b75a Create how-to-generate-self-signed-document-signing-certificate.md 2024-05-22 02:35:09 +05:30
AmolandGitHub 175eb921c1 Update run-locally-windows.md 2024-05-22 02:27:08 +05:30
prafull-opensignlabsandGitHub 4cd959b34b stop automatic playing 2024-05-16 10:06:42 +05:30
AmolandGitHub 0083efb7dc Update run-locally-windows.md 2024-05-16 00:41:25 +05:30
AmolandGitHub 18738a56c0 Add files via upload 2024-05-15 22:41:11 +05:30
AmolandGitHub 3254fc8199 Rename favicon.ico to favicon-old.ico 2024-05-15 22:40:29 +05:30
prafull-opensignlabsandGitHub 4a52299d35 Update opensign.yaml 2024-05-15 10:28:34 +05:30
prafull-opensignlabsandGitHub 7a1247051c Update opensign.yaml 2024-05-14 10:44:12 +05:30
prafull-opensignlabsandGitHub 71d34dd3d3 Update opensign.yaml 2024-05-13 19:43:09 +05:30
prafull-opensignlabsandGitHub 1971ffd221 Update opensign.yaml 2024-05-13 19:35:17 +05:30
prafull-opensignlabsandGitHub a0af2145f3 Update opensign.yaml 2024-05-13 19:10:31 +05:30
prafull-opensignlabsandGitHub 64bd5cef35 Update opensign.yaml 2024-05-13 19:06:46 +05:30
prafull-opensignlabsandGitHub 4eb511e76e Update opensign.yaml 2024-05-13 19:01:23 +05:30
prafull-opensignlabsandGitHub 6e7fa2a7f8 add documentation for folder api 2024-05-13 18:51:48 +05:30
prafull-opensignlabsandGitHub 1e3765990a Update opensign.yaml 2024-05-13 14:11:53 +05:30
prafull-opensignlabsandGitHub 2ef608fa33 add resend mail api 2024-05-13 11:50:04 +05:30
AmolandGitHub 479878a59d Update primary color 2024-05-07 16:28:09 +05:30
AmolandGitHub 475eba8b7e Update index.js 2024-04-24 18:06:24 +05:30
AmolandGitHub c0ddec8896 Update index.js 2024-04-24 18:02:41 +05:30
prafull-opensignlabsandGitHub 38cd32b8c8 Update opensign.yaml 2024-04-22 19:49:00 +05:30
prafull-opensignlabsandGitHub 9a6ee0397b Update opensign.yaml 2024-04-22 19:29:13 +05:30
prafull-opensignlabsandGitHub 57f7bf6375 add all widgets json 2024-04-22 19:11:46 +05:30
AmolandGitHub 93f3cd7868 Update docusaurus.config.js 2024-04-21 16:11:20 +05:30
AmolandGitHub 157b5a891e Update run-locally.md 2024-04-20 22:12:36 +05:30
AmolandGitHub fcd10703a8 Update sign-yourself.md 2024-04-15 12:15:03 +05:30
AmolandGitHub d17a8524c5 Update sign-yourself.md 2024-04-15 12:12:57 +05:30
AmolandGitHub 2d42013fed Update index.js 2024-04-14 17:23:56 +05:30
AmolandGitHub 5288fe1512 Update index.js 2024-04-14 17:18:40 +05:30
AmolandGitHub 3988361471 Update run-locally-windows.md 2024-04-14 16:45:57 +05:30
AmolandGitHub 62204bda9d Update list-grid-view.md 2024-04-14 16:37:37 +05:30
AmolandGitHub 1ac4418d41 Create run-locally-windows.md 2024-04-14 16:35:09 +05:30
AmolandGitHub 23914274b5 Update run-locally.md 2024-04-14 16:30:27 +05:30
AmolandGitHub a668aa11db Update home page 2024-04-14 16:20:24 +05:30
AmolandGitHub 0aefb792dc Update list-grid-view.md 2024-04-12 17:19:11 +05:30
AmolandGitHub 54de1c1f5a Create navigate-between-pages.md 2024-04-12 17:08:32 +05:30
prafull-opensignlabsandGitHub f53f125e3e Update debugUI url 2024-04-03 09:37:00 +05:30
AmolandGitHub 0269647d75 Update disabledocumentid.md 2024-03-26 19:18:26 +05:30
AmolandGitHub 5fc05e7faa Rename profile.md to disabledocumentid.md 2024-03-26 16:59:44 +05:30
AmolandGitHub 8c3caed1fb Update profile.md 2024-03-26 16:59:15 +05:30
AmolandGitHub fbcb1fc47a fix: spelling mistakes 2024-03-26 16:46:16 +05:30
AmolandGitHub fdd6e64060 Update profile.md 2024-03-26 16:36:27 +05:30
AmolandGitHub 3dd88f2453 Update profile.md 2024-03-26 12:41:38 +05:30
prafull-opensignlabsandGitHub d06bfefc40 Update run-locally.md 2024-03-23 17:16:43 +05:30
prafull-opensignlabsandGitHub 30236206bc remove CI env variables 2024-03-23 15:52:51 +05:30
prafull-opensignlabsandGitHub 24b0231495 Update opensign.yaml 2024-03-19 13:16:14 +05:30
prafull-opensignlabsandGitHub 57946fea6d Update run-locally.md 2024-03-18 17:39:42 +05:30
prafull-opensignlabsandGitHub 187990ce05 Update run-locally.md 2024-03-18 17:29:58 +05:30
AmolandGitHub 8cfcecf440 Update s3.md 2024-03-12 12:35:29 +05:30
AmolandGitHub 041d290f0f Create _category_.json 2024-03-12 12:28:43 +05:30
AmolandGitHub 291791cb08 Update docusaurus.config.js 2024-03-12 12:24:58 +05:30
AmolandGitHub 3d081cb7a0 Create s3.md 2024-03-12 11:58:03 +05:30
AmolandGitHub 0201159b31 Update INSTALLATION.md 2024-03-12 11:55:47 +05:30
AndrewandGitHub 4caaa203bb Update docusaurus.config.js 2024-03-11 10:48:51 +05:30
AndrewandGitHub 783bd63da0 Update docusaurus.config.js 2024-03-11 10:46:06 +05:30
AndrewandGitHub 82a187fe46 Add sitemap 2024-03-11 10:43:09 +05:30
prafull-opensignlabsandGitHub 8ebf96f1e1 Update run-locally.md 2024-03-02 14:44:55 +05:30
prafull-opensignlabsandGitHub b25152a5e8 Update run-locally.md 2024-02-29 19:11:34 +05:30
prafull-opensignlabsandGitHub b1b488a8a0 Update INSTALLATION.md 2024-02-29 19:08:47 +05:30
prafull-opensignlabsandGitHub 8a76b92b5f Update run-locally.md 2024-02-29 15:31:01 +05:30
prafull-opensignlabsandGitHub 724f3a9724 Update run-locally.md 2024-02-29 15:29:40 +05:30
prafull-opensignlabsandGitHub 388d9cb29e Update run-locally.md 2024-02-29 15:22:55 +05:30
prafull-opensignlabsandGitHub 6b463c6f1a Update run-locally.md 2024-02-29 15:15:10 +05:30
prafull-opensignlabsandGitHub 4afca77d1e Update run-locally.md 2024-02-29 15:14:20 +05:30
prafull-opensignlabsandGitHub 53d8e60ec3 Update run-locally.md 2024-02-23 20:43:58 +05:30
prafull-opensignlabsandGitHub 23c22b79d8 Update run-locally.md 2024-02-23 20:40:39 +05:30
prafull-opensignlabsandGitHub 4943517145 Update run-locally.md 2024-02-23 20:12:42 +05:30
prafull-opensignlabsandGitHub c71398c6e3 Update run-locally.md 2024-02-23 20:09:39 +05:30
prafull-opensignlabsandGitHub dfaa278636 Update run-locally.md 2024-02-22 17:24:42 +05:30
prafull-opensignlabsandGitHub 139c3b42f5 Update run-locally.md 2024-02-22 17:18:16 +05:30
prafull-opensignlabsandGitHub d89c28334e Update run-locally.md 2024-02-22 17:15:31 +05:30
prafull-opensignlabsandGitHub 7638bcad02 Update run-locally.md 2024-02-22 17:15:13 +05:30
prafull-opensignlabsandGitHub 63090b82e3 Update run-locally.md 2024-02-22 17:11:07 +05:30
prafull-opensignlabsandGitHub 63b7cb8188 update info of env 2024-02-22 16:58:04 +05:30
prafull-opensignlabsandGitHub ad9dda27ba Update INSTALLATION.md 2024-02-22 16:39:14 +05:30
prafull-opensignlabsandGitHub 3f3137874a change sidebar position of installation instructions 2024-02-22 16:37:00 +05:30
prafull-opensignlabsandGitHub 440eaaeb26 Update title of installation instructiosn 2024-02-22 16:29:39 +05:30
prafull-opensignlabsandGitHub 2d6d8ce2be update run command 2024-02-22 16:25:45 +05:30
prafull-opensignlabsandGitHub 229d0731b8 Update INSTALLATION.md 2024-02-22 16:23:59 +05:30
prafull-opensignlabsandGitHub 418cd92f80 Update opensign.yaml 2024-02-16 19:56:49 +05:30
prafull-opensignlabsandGitHub 6e4ed4bc09 Update opensign.yaml 2024-02-16 16:43:42 +05:30
prafull-opensignlabsandGitHub 51b417aa7e Update opensign.yaml 2024-02-16 16:38:00 +05:30
prafull-opensignlabsandGitHub 0fc895ad17 Update opensign.yaml 2024-02-15 19:11:15 +05:30
prafull-opensignlabsandGitHub 2dea2172bc send in order 2024-02-15 19:04:20 +05:30
prafull-opensignlabsandGitHub fcd3c15ec7 Update opensign.yaml 2024-02-15 15:49:21 +05:30
prafull-opensignlabsandGitHub 4cd9b08698 Update opensign.yaml 2024-02-14 21:26:07 +05:30
prafull-opensignlabsandGitHub b21b641e2a Update opensign.yaml 2024-02-14 21:18:45 +05:30
prafull-opensignlabsandGitHub af9c8d71c6 removed binary api from document and template 2024-02-12 18:01:04 +05:30
prafull-opensignlabsandGitHub 8bd1891fcc Update opensign.yaml 2024-02-12 17:39:09 +05:30
prafull-opensignlabsandGitHub e5a62f17a5 Update opensign.yaml 2024-02-12 17:16:12 +05:30
prafull-opensignlabsandGitHub db383d0e88 Update opensign.yaml 2024-02-12 17:06:21 +05:30
prafull-opensignlabsandGitHub e519d86cad Update opensign.yaml 2024-02-09 17:31:54 +05:30
prafull-opensignlabsandGitHub bf68656d05 Update opensign.yaml 2024-02-09 13:56:43 +05:30
prafull-opensignlabsandGitHub 69913151b6 Update opensign.yaml 2024-02-09 13:47:27 +05:30
prafull-opensignlabsandGitHub 46312eb138 Update opensign.yaml 2024-02-09 12:43:17 +05:30
prafull-opensignlabsandGitHub 1a13936681 Update opensign.yaml 2024-02-09 12:35:33 +05:30
prafull-opensignlabsandGitHub 251ea22f5f Update opensign.yaml 2024-02-09 09:49:48 +05:30
prafull-opensignlabsandGitHub 8f8808ce1c Update opensign.yaml 2024-02-09 09:41:31 +05:30
prafull-opensignlabsandGitHub bb207b953c Update opensign.yaml 2024-02-09 09:35:34 +05:30
prafull-opensignlabsandGitHub 2984d6876d add event description in webhook 2024-02-09 09:25:56 +05:30
prafull-opensignlabsandGitHub 5d2b131c99 remove webhook description 2024-02-09 09:15:08 +05:30
prafull-opensignlabsandGitHub 43c9b4db9c Update opensign.yaml 2024-02-08 10:39:43 +05:30
prafull-opensignlabsandGitHub ce9e27e116 Update opensign.yaml 2024-02-08 10:29:28 +05:30
prafull-opensignlabsandGitHub e25b7deaf3 update description of webhook , create document, create template 2024-02-07 20:51:13 +05:30
prafull-opensignlabsandGitHub 81078073cb Update opensign.yaml 2024-02-02 18:48:59 +05:30
prafull-opensignlabsandGitHub e6e5db95ba Update opensign.yaml 2024-02-02 18:41:50 +05:30
prafull-opensignlabsandGitHub 2cf3af242b Update opensign.yaml 2024-02-02 12:30:49 +05:30
prafull-opensignlabsandGitHub ed664359a6 Update opensign.yaml 2024-02-01 19:46:46 +05:30
prafull-opensignlabsandGitHub 4a5e855b76 Update opensign.yaml 2024-01-29 18:40:43 +05:30
prafull-opensignlabsandGitHub 1e60863a40 Update opensign.yaml 2024-01-29 18:21:44 +05:30
prafull-opensignlabsandGitHub 10ad3ee5bd Update opensign.yaml 2024-01-29 18:20:02 +05:30
prafull-opensignlabsandGitHub 32c5a0a77a Update opensign.yaml 2024-01-29 15:16:37 +05:30
prafull-opensignlabsandGitHub b6651f12e2 Update opensign.yaml 2024-01-25 23:46:25 +05:30
prafull-opensignlabsandGitHub 15ad35bf76 fix: all body parameter must be in lowercase 2024-01-25 18:29:32 +05:30
prafull-opensignlabsandGitHub 9a986dd000 Update title of create template api 2024-01-24 23:40:13 +05:30
prafull-opensignlabsandGitHub 714146f616 update create template API 2024-01-24 23:34:25 +05:30
prafull-opensignlabsandGitHub 96d2b4e9fd Update createdocument api 2024-01-24 18:31:54 +05:30
prafull-opensignlabsandGitHub 122c42153e add webhook api 2024-01-24 12:37:58 +05:30
AmolandGitHub 32c4ee16a0 Create rename-document.md 2024-01-19 15:47:57 +05:30
AmolandGitHub 53cdb411b7 Update organize-documents.md 2024-01-19 15:36:10 +05:30
AmolandGitHub 0708e0ae1c Update intro.md 2024-01-19 15:27:29 +05:30
AmolandGitHub 95db24f8ed Delete docs/docs/help/New-Document/video-tutes.mdx 2024-01-19 15:26:58 +05:30
AmolandGitHub bcdd2e7feb Update REPORTING_GUIDELINES.md 2024-01-19 15:24:10 +05:30
AmolandGitHub 4adfa9f830 Update REPORTING_GUIDELINES.md 2024-01-19 15:23:30 +05:30
AmolandGitHub dcc8f99991 update video link 2024-01-19 14:57:01 +05:30
AmolandGitHub 3bdb56462d Update video-tutes.mdx 2024-01-19 14:47:50 +05:30
AmolandGitHub b8bffe97b5 Update video-tutes.mdx 2024-01-19 14:28:09 +05:30
AmolandGitHub af817b6bc3 Update video-tutes.mdx 2024-01-18 21:18:25 +05:30
nxglabs 8e1cbc65d7 update package lock 2024-01-18 21:10:41 +05:30
nxglabs e38a1f9c1a add help docs 2024-01-18 21:09:17 +05:30
nxglabs 50c3133dae docs updates 2024-01-18 21:09:17 +05:30
AmolandGitHub b1e2a74ad5 Create video-tutes.mdx 2024-01-18 20:40:56 +05:30
AmolandGitHub 7e9dc8cd65 Update package.json 2024-01-18 20:38:19 +05:30
AmolandGitHub 7d87cc27fc Update run-locally.md 2024-01-18 20:30:57 +05:30
AmolandGitHub 25714cde90 Update DigitalOcean.md 2024-01-18 20:28:23 +05:30
AmolandGitHub 8241482c19 Update run-locally.md 2024-01-18 20:23:11 +05:30
AmolandGitHub 3044e010f6 Update run-locally.md 2024-01-18 20:22:19 +05:30
AmolandGitHub 9743b933da Update DigitalOcean.md 2024-01-18 20:19:32 +05:30
AmolandGitHub 1ce8ec4758 Create run-locally.md 2024-01-18 20:16:38 +05:30
AmolandGitHub cb99b7646c Update intro.md 2024-01-18 20:14:56 +05:30
AmolandGitHub 5af7279c67 Delete docs/docs/self-host/tutorial-extras directory 2024-01-18 20:06:23 +05:30
AmolandGitHub 224d9f6787 Rename _category_.json to _category_.json 2024-01-18 20:06:11 +05:30
AmolandGitHub ed7df13f9b Update _category_.json 2024-01-18 20:05:55 +05:30
AmolandGitHub 2c5f6631d7 Delete docs/docs/self-host/tutorial-basics directory 2024-01-18 20:04:56 +05:30
AmolandGitHub a32b88f6b0 Rename docs/docs/self-host/oneclick-install_category_.json to docs/docs/self-host/One-click-Install/oneclick-install_category_.json 2024-01-18 20:02:49 +05:30
AmolandGitHub 88cb271332 Rename DigitalOcean.md to DigitalOcean.md 2024-01-18 20:02:15 +05:30
AmolandGitHub e18d1a7a16 Update DigitalOcean.md 2024-01-18 20:00:59 +05:30
AmolandGitHub b2dfc6f32c Update and rename create-a-page.md to DigitalOcean.md 2024-01-18 19:56:00 +05:30
AmolandGitHub a64e30a94c Update intro.md 2024-01-18 19:52:13 +05:30
AmolandGitHub 6d5b28f75f Update and rename docs/docs/self-host/tutorial-basics/_category_.json to docs/docs/self-host/oneclick-install_category_.json 2024-01-18 19:49:27 +05:30
AmolandGitHub c7decaec02 Update INSTALLATION.md 2024-01-18 19:45:33 +05:30
AmolandGitHub 8600437c5a Update COMMUNITY.md 2024-01-18 19:41:55 +05:30
AmolandGitHub ece3f42ab3 Update COMMUNITY.md 2024-01-18 17:20:06 +05:30
prafull-opensignlabsandGitHub 32be8dfe3a Update opensign.yaml 2024-01-17 17:01:26 +05:30
prafull-opensignlabsandGitHub 2aebceda24 remove duplicate header 2024-01-17 11:55:41 +05:30
prafull-opensignlabsandGitHub 85b463f0e0 Update description of apis 2024-01-17 11:23:43 +05:30
prafull-opensignlabsandGitHub f6c8d4f51a change request body for create document and template 2024-01-17 10:04:49 +05:30
AmolandGitHub b84c1c8821 Update server url 2024-01-16 18:14:10 +05:30
prafull-opensignlabsandGitHub a3334fdf2d remove code from response 2024-01-15 22:17:51 +05:30
prafull-opensignlabsandGitHub d6b12b75b0 Update create template template response 2024-01-15 16:09:15 +05:30
prafull-opensignlabsandGitHub a9e623391b Update response of create contact 2024-01-15 15:35:36 +05:30
prafull-opensignlabsandGitHub fd34ba778c Update opensign.yaml 2024-01-15 13:17:55 +05:30
prafull-opensignlabsandGitHub d00d31eaf2 Update response syntax 2024-01-15 13:03:23 +05:30
prafull-opensignlabsandGitHub 016a0f62bd Update opensign.yaml 2024-01-15 12:11:54 +05:30
prafull-opensignlabsandGitHub cf52292f7c Update documentlist 2024-01-15 11:59:17 +05:30
prafull-opensignlabsandGitHub 8b26c94ada Update document list api 2024-01-12 18:19:02 +05:30
prafull-opensignlabsandGitHub 582b10b5ee Update opensign.yaml 2024-01-12 13:23:34 +05:30
prafull-opensignlabsandGitHub b51e152d10 Update opensign.yaml 2024-01-12 12:35:01 +05:30
prafull-opensignlabsandGitHub 5f197f5f9f Update opensign.yaml 2024-01-12 11:03:13 +05:30
AmolandGitHub 5a3ee25dfd Add clean API docs step 2024-01-12 00:57:03 +05:30
AmolandGitHub 7050138e5e Add build api-docs step 2024-01-12 00:49:06 +05:30
prafull-opensignlabsandGitHub 049d268314 Update template section 2024-01-11 19:59:07 +05:30
prafull-opensignlabsandGitHub 6f71afb418 Update template section name 2024-01-11 17:08:54 +05:30
AndrewandGitHub 7e65692b5a Update CODE_OF_CONDUCT.md 2024-01-01 01:26:47 +05:30
AndrewandGitHub bd1f44479b Delete docs/docs/contribute/tutorial-extras directory 2024-01-01 01:22:47 +05:30
AndrewandGitHub c0935001ce Delete docs/docs/contribute/tutorial-basics directory 2024-01-01 01:22:24 +05:30
AndrewandGitHub f65ab5dfea Update CODE_OF_CONDUCT.md 2024-01-01 01:19:42 +05:30
AndrewandGitHub dbb7fd576f Create REPORTING_GUIDELINES.md 2024-01-01 01:17:56 +05:30
AndrewandGitHub be5cc6126e Update CODE_OF_CONDUCT.md 2024-01-01 01:16:33 +05:30
AndrewandGitHub 6a4eb24630 Update CODE_OF_CONDUCT.md 2024-01-01 01:14:59 +05:30
AndrewandGitHub 61a8bc519f Update sign-yourself.md 2024-01-01 01:10:45 +05:30
AmolandGitHub b15f3c0333 Update request-signatures.md 2023-12-30 00:44:56 +05:30
AmolandGitHub 5830fda578 Update request-signatures.md 2023-12-30 00:44:19 +05:30
AmolandGitHub 102f837263 Update intro.md 2023-12-28 01:30:14 +05:30
AmolandGitHub 5cee42a76e Update intro.md 2023-12-28 01:29:32 +05:30
AmolandGitHub 8fc7cc924a Update sign-yourself.md 2023-12-28 01:20:25 +05:30
AmolandGitHub 80170b814f Create COMMUNITY.md 2023-12-28 01:17:24 +05:30
AmolandGitHub 91fcb71bc3 Update intro.md 2023-12-28 01:13:45 +05:30
AmolandGitHub eb13d91bbb Create INSTALLATION.md 2023-12-28 01:11:46 +05:30
AmolandGitHub a464437b3a Create CODE_OF_CONDUCT.md 2023-12-28 01:10:31 +05:30
AmolandGitHub 3a67dc9b08 Update intro.md 2023-12-28 01:07:49 +05:30
AmolandGitHub a6ff20a657 Update intro.md 2023-12-28 01:00:24 +05:30
AmolandGitHub 4bf380edf8 Update intro.md 2023-12-28 00:58:03 +05:30
AmolandGitHub ab3148b705 Update intro.md 2023-12-28 00:55:20 +05:30
AmolandGitHub 2ffd1ebf2a Update sign-yourself.md 2023-12-28 00:54:17 +05:30
AmolandGitHub d1155bc8ef Update intro.md 2023-12-28 00:44:42 +05:30
AmolandGitHub 33ff706803 docs: Update dropbox icon documentation 2023-12-27 16:46:47 +05:30
nxglabs 7fdd819722 docs: update docs 2023-12-27 02:35:12 +05:30
AmolandGitHub aeaea23098 docs: fix build issue due to no closing img tag 2023-12-27 02:28:55 +05:30
AmolandGitHub ff7f45f055 docs: update screenshot 2023-12-27 02:26:04 +05:30
nxglabs 40665684a8 docs: update intro 2023-12-27 02:23:40 +05:30
nxglabs 861f822151 docs: update docs 2023-12-27 02:19:58 +05:30
nxglabs 62541f1450 docs: fix broken link 2023-12-25 03:30:46 +05:30
nxglabs a356e77f54 docs: fix broken link 2023-12-25 03:29:29 +05:30
nxglabs 74abeff8d9 docs: OpenAPI setup 2023-12-25 03:22:18 +05:30
AmolandGitHub 78dfaccd38 docs: fix broken link 2023-12-24 18:39:33 +05:30
AmolandGitHub 757b72161a docs: add closing img tag 2023-12-24 18:20:26 +05:30
AmolandGitHub c2065bf752 docs: move to other directory 2023-12-24 18:09:30 +05:30
AmolandGitHub 5608dae6e3 docs: add sign yourself documentation 2023-12-24 18:05:03 +05:30
AmolandGitHub 2288880eba docs: update intro 2023-12-24 17:25:32 +05:30
nxglabs ba7d0a9723 chore: add CNAME file for setting up custom domain 2023-12-18 23:09:19 +05:30
nxglabs 1ac8800b40 docs: setup help docs 2023-12-18 23:00:04 +05:30
nxglabs bb7827b762 chore: change the build directory 2023-12-18 20:56:52 +05:30
nxglabs 8caa0275ab chore: change working dir 2023-12-18 20:49:35 +05:30
nxglabs 7e1d0f8a49 chore: add debig code 2023-12-18 20:45:33 +05:30
nxglabs f7f5c2de37 chore: fix syntax issue 2023-12-18 20:44:09 +05:30
nxglabs f75710c836 fix syntax 2023-12-18 20:42:40 +05:30
nxglabs a02cc89e5d chore: change dir 2023-12-18 20:41:37 +05:30
nxglabs f54a51c546 chore: change yarn to npm 2023-12-18 20:38:07 +05:30
nxglabs b12eb87b38 chore: setup github pages action to publish docs 2023-12-18 20:34:20 +05:30
nxglabs 93f7408847 docs: add docs verson 1 2023-12-18 20:21:12 +05:30
212 changed files with 34560 additions and 10195 deletions
+5 -5
View File
@@ -45,14 +45,14 @@ DO_REGION=us-west
USE_LOCAL=TRUE
# Email mailgun or set SMTP_ENABLE true to use SMTP config (The app will not initialize if any of these 3 variables are not set) *********************************************************************************************************************
MAILGUN_API_KEY=
MAILGUN_API_KEY=XXXXX
MAILGUN_DOMAIN=mail.yourdomain.com
MAILGUN_SENDER=postmaster@mail.yourdomain.com
SMTP_ENABLE=
SMTP_HOST=smtp.yourhost.com
SMTP_PORT=443
SMTP_USER_EMAIL=mailer@yourdomain.com
SMTP_PASS=password
SMTP_HOST=
SMTP_PORT=
SMTP_USER_EMAIL=
SMTP_PASS=
# Base64 encoded PFX or p12 document signing certificate file *********************************************************************************************************************
+50
View File
@@ -0,0 +1,50 @@
name: Deploy to GitHub Pages
on:
push:
branches:
- feat-docs
# Review gh actions docs if you want to further define triggers, paths, etc
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on
permissions:
contents: write
jobs:
deploy:
name: Deploy to GitHub Pages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
working-directory: ./docs
run: npm ci
- name: Clean api-docs
working-directory: ./docs
run: npm run docusaurus clean-api-docs all
- name: Build api-docs
working-directory: ./docs
run: npm run docusaurus gen-api-docs all
- name: Build website
working-directory: ./docs
run: npm run build
# Popular action to deploy to GitHub Pages:
# Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Build output to publish to the `gh-pages` branch:
publish_dir: ./docs/build
# The following lines assign commit authorship to the official
# GH-Actions bot for deploys to `gh-pages` branch:
# https://github.com/actions/checkout/issues/13#issuecomment-724415212
# The GH actions bot is used by default if you didn't specify the two fields.
# You can swap them out with your own user credentials.
user_name: github-actions[bot]
user_email: 41898282+github-actions[bot]@users.noreply.github.com
+1
View File
@@ -0,0 +1 @@
v1.0.5-beta
+2 -19
View File
@@ -15,7 +15,6 @@ import ForgetPassword from "./routes/ForgetPassword";
import ChangePassword from "./routes/ChangePassword";
import ReportMicroapp from "./components/ReportMicroapp";
import LoadMf from "./routes/LoadMf";
import ValidateRoute from "./primitives/ValidateRoute";
function App() {
const [isloading, setIsLoading] = useState(true);
@@ -59,24 +58,8 @@ function App() {
) : (
<BrowserRouter>
<Routes>
<Route
exact
path="/"
element={
<ValidateRoute>
<Login />
</ValidateRoute>
}
/>
<Route
exact
path="/signup"
element={
<ValidateRoute>
<Signup />
</ValidateRoute>
}
/>
<Route exact path="/" element={<Login />} />
<Route exact path="/signup" element={<Signup />} />
<Route exact path="/loadmf/:remoteApp/*" element={<LoadMf />} />
<Route exact path="/forgetpassword" element={<ForgetPassword />} />
{process.env.REACT_APP_ENABLE_SUBSCRIPTION && (
@@ -46,7 +46,6 @@ const AppendFormInForm = (props) => {
// Define a function to handle form submission
const handleSubmit = async (e) => {
e.preventDefault();
e.stopPropagation();
setIsLoader(true);
Parse.serverURL = parseBaseUrl;
Parse.initialize(parseAppId);
@@ -106,18 +105,13 @@ const AppendFormInForm = (props) => {
const res = await contactQuery.save();
const parseData = JSON.parse(JSON.stringify(res));
if (props.details) {
props.details({
value: parseData[props.valueKey],
label: parseData[props.displayKey]
});
}
props.details({
value: parseData[props.valueKey],
label: parseData[props.displayKey]
});
if (props.closePopup) {
props.closePopup();
}
if (props.handleUserData) {
props.handleUserData(parseData);
}
setIsLoader(false);
// Reset the form fields
@@ -164,18 +158,13 @@ const AppendFormInForm = (props) => {
const res = await contactQuery.save();
const parseData = JSON.parse(JSON.stringify(res));
if (props.details) {
props.details({
value: parseData[props.valueKey],
label: parseData[props.displayKey]
});
}
props.details({
value: parseData[props.valueKey],
label: parseData[props.displayKey]
});
if (props.closePopup) {
props.closePopup();
}
if (props.handleUserData) {
props.handleUserData(parseData);
}
setIsLoader(false);
// Reset the form fields
setAddYourself(false);
@@ -86,7 +86,7 @@ const LoginFacebook = ({
email: userDetails.Email,
// "passsword":userDetails.Phone,
phone: userDetails.Phone,
role: "contracts_User",
role: "contracts_Admin",
company: userDetails.Company
}
};
+1 -1
View File
@@ -148,7 +148,7 @@ const GoogleSignInBtn = ({
email: userDetails.Email,
// "passsword":userDetails.Phone,
phone: userDetails.Phone,
role: "contracts_User",
role: "contracts_Admin",
company: userDetails.Company,
jobTitle: userDetails.Destination
}
+2 -2
View File
@@ -5,7 +5,7 @@ import Parse from "parse";
import axios from "axios";
import "../styles/spinner.css";
import TreeFormComponent from "./TreeFormComponent";
// import TreeEditForm from "./TreeEditForm";
import TreeEditForm from "./TreeEditForm";
import "../styles/modal.css";
import Modal from "react-modal";
@@ -22,7 +22,7 @@ const TreeWidget = (props) => {
const [schemaState, setSchemaState] = useState({});
const [TabURL, setTabURL] = useState("");
const [editable, setEditable] = useState(false);
// const [editId, setEditId] = useState("");
const [editId, setEditId] = useState("");
const [defaultState, setDefaultState] = useState(false);
const [isShowModal, setIsShowModal] = useState(false);
const selectFolderHandle = async () => {
@@ -1,147 +0,0 @@
import React, { useEffect, useState } from "react";
import Parse from "parse";
import Alert from "../../primitives/Alert";
const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
const folderPtr = {
__type: "Pointer",
className: folderCls,
objectId: parentFolderId
};
const [name, setName] = useState("");
const [folderList, setFolderList] = useState([]);
const [isAlert, setIsAlert] = useState(false);
const [selectedParent, setSelectedParent] = useState();
const [alert, setAlert] = useState({ type: "info", message: "" });
useEffect(() => {
fetchFolder();
// eslint-disable-next-line
}, []);
const fetchFolder = async () => {
try {
const FolderQuery = new Parse.Query(folderCls);
if (parentFolderId) {
FolderQuery.equalTo("Folder", folderPtr);
FolderQuery.equalTo("Type", "Folder");
} else {
FolderQuery.doesNotExist("Folder");
FolderQuery.equalTo("Type", "Folder");
}
const res = await FolderQuery.find();
if (res) {
const result = JSON.parse(JSON.stringify(res));
if (result) {
setFolderList(result);
}
}
} catch (error) {
console.log("Err ", error);
}
};
const handleCreateFolder = async (event) => {
event.preventDefault();
if (name) {
const currentUser = Parse.User.current();
const exsitQuery = new Parse.Query(folderCls);
exsitQuery.equalTo("Name", name);
exsitQuery.equalTo("Type", "Folder");
if (parentFolderId) {
exsitQuery.equalTo("Folder", folderPtr);
}
const templExist = await exsitQuery.first();
if (templExist) {
setAlert({ type: "dange", message: "Folder already exist!" });
setIsAlert(true);
setTimeout(() => {
setIsAlert(false);
}, 1000);
} else {
const template = new Parse.Object(folderCls);
template.set("Name", name);
template.set("Type", "Folder");
if (selectedParent) {
template.set("Folder", {
__type: "Pointer",
className: folderCls,
objectId: selectedParent
});
} else if (parentFolderId) {
template.set("Folder", folderPtr);
}
template.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
const res = await template.save();
if (res) {
setAlert({
type: "success",
message: "Folder created successfully!"
});
setIsAlert(true);
setTimeout(() => {
setIsAlert(false);
}, 1000);
if (onSuccess) {
onSuccess(res);
}
}
}
} else {
setAlert({ type: "info", message: "Please fill folder name" });
setIsAlert(true);
setTimeout(() => {
setIsAlert(false);
}, 1000);
}
};
const handleOptions = (e) => {
setSelectedParent(e.target.value);
};
return (
<div>
{isAlert && <Alert type={alert.type}>{alert.message}</Alert>}
<div id="createFolder">
<h1 className="text-base font-semibold">Create Folder</h1>
<div className="text-xs mt-2">
<label className="block">
Name<span className="text-red-500 text-[13px]">*</span>
</label>
<input
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
value={name}
onChange={(e) => setName(e.target.value)}
required
/>
</div>
<div className="text-xs mt-2">
<label className="block">Parent Folder</label>
<select
value={selectedParent}
onChange={handleOptions}
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
>
<option>select</option>
{folderList.length > 0 &&
folderList.map((x) => (
<option key={x.objectId} value={x.objectId}>
{x.Name}
</option>
))}
</select>
</div>
<div>
<button
onClick={handleCreateFolder}
className="flex items-center rounded p-2 bg-[#32a3ac] text-white mt-3"
>
<i className="fa-solid fa-plus mr-1"></i>
<span>Create</span>
</button>
</div>
</div>
</div>
);
};
export default CreateFolder;
@@ -41,8 +41,7 @@ export default function DropboxChooser({ children, onSuccess, onCancel }) {
[onSuccess, onCancel]
);
const handleChoose = useCallback((e) => {
e.preventDefault()
const handleChoose = useCallback(() => {
if (window.Dropbox) {
window.Dropbox.choose(options);
}
@@ -258,7 +258,7 @@ const FileUpload = (props) => {
<div className="flex gap-2 justify-center items-center">
<div className="flex justify-between items-center px-2 py-[3px] w-full font-bold rounded border-[1px] border-[#ccc] text-gray-500 bg-white text-[13px]">
<div className="break-all">
file selected : {props.formData?.split("/")[3]?.split("_")[1]}
file selected : {props.formData.split("/")[3]}
</div>
<div
onClick={() => {
@@ -271,12 +271,10 @@ const FileUpload = (props) => {
<i className="fa-solid fa-xmark"></i>
</div>
</div>
{process.env.REACT_APP_DROPBOX_API_KEY && (
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
)}
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
</div>
) : (
<div className="flex gap-2 justify-center items-center">
@@ -296,12 +294,10 @@ const FileUpload = (props) => {
accept="application/pdf,application/vnd.ms-excel"
onChange={onChange}
/>
{process.env.REACT_APP_DROPBOX_API_KEY && (
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
)}
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
</div>
)}
</>
@@ -1,261 +0,0 @@
import React, { useEffect, useState } from "react";
import Parse from "parse";
import CreateFolder from "./CreateFolder";
import ModalUi from "../../primitives/ModalUi";
const SelectFolder = ({ required, onSuccess, folderCls }) => {
const [isOpen, SetIsOpen] = useState(false);
const [clickFolder, setClickFolder] = useState("");
const [selectFolder, setSelectedFolder] = useState({});
const [folderList, setFolderList] = useState([]);
const [tabList, setTabList] = useState([]);
const [isLoader, setIsLoader] = useState(false);
const [folderPath, setFolderPath] = useState("");
const [isAdd, setIsAdd] = useState(false);
useEffect(() => {
if (isOpen) {
setIsAdd(false);
setClickFolder({});
setFolderList([]);
setTabList([]);
fetchFolder();
}
// eslint-disable-next-line
}, [isOpen]);
const fetchFolder = async (folderPtr) => {
setIsLoader(true);
try {
const FolderQuery = new Parse.Query(folderCls);
if (folderPtr) {
FolderQuery.equalTo("Folder", folderPtr);
FolderQuery.equalTo("Type", "Folder");
} else {
FolderQuery.doesNotExist("Folder");
FolderQuery.equalTo("Type", "Folder");
}
const res = await FolderQuery.find();
if (res) {
const result = JSON.parse(JSON.stringify(res));
if (result) {
setFolderList(result);
setIsLoader(false);
}
setIsLoader(false);
}
} catch (error) {
setIsLoader(false);
}
};
const handleSelect = (item) => {
setFolderList([]);
setClickFolder({ ObjectId: item.objectId, Name: item.Name });
if (tabList.length > 0) {
const tab = tabList.some((x) => x.objectId === item.objectId);
if (!tab) {
setTabList((tabs) => [...tabs, item]);
const folderPtr = {
__type: "Pointer",
className: folderCls,
objectId: item.objectId
};
fetchFolder(folderPtr);
}
} else {
setTabList((tabs) => [...tabs, item]);
const folderPtr = {
__type: "Pointer",
className: folderCls,
objectId: item.objectId
};
fetchFolder(folderPtr);
}
};
const handleSubmit = () => {
let url = "Root";
tabList.forEach((t) => {
url = url + " / " + t.Name;
});
setFolderPath(url);
setSelectedFolder(clickFolder);
if (onSuccess) {
onSuccess(clickFolder);
}
SetIsOpen(false);
};
const handleCancel = () => {
SetIsOpen(false);
setClickFolder({});
setFolderList([]);
setTabList([]);
};
const removeTabListItem = async (e, i) => {
e.preventDefault();
// setEditable(false);
if (!isAdd) {
setIsLoader(true);
let folderPtr;
if (i) {
setFolderList([]);
let list = tabList.filter((itm, j) => {
if (j <= i) {
return itm;
}
});
let _len = list.length - 1;
folderPtr = {
__type: "Pointer",
className: folderCls,
objectId: list[_len].objectId
};
setTabList(list);
} else {
setClickFolder({});
setSelectedFolder({});
setFolderList([]);
setTabList([]);
}
fetchFolder(folderPtr);
}
};
const handleCreate = () => {
setIsAdd(!isAdd);
};
const handleAddFolder = () => {
setFolderList([]);
if (clickFolder && clickFolder.ObjectId) {
fetchFolder({
__type: "Pointer",
className: folderCls,
objectId: clickFolder.ObjectId
});
} else {
fetchFolder();
}
handleCreate();
};
return (
<div className="text-xs mt-2 ">
<div>
<label className="block">
Select Folder
{required && <span className="text-red-500 text-[13px]">*</span>}
</label>
</div>
<div className="rounded px-[20px] py-[20px] bg-white border border-gray-200 shadow flex max-w-sm gap-8 items-center">
<div>
<i
className="far fa-folder-open text-[40px] text-[#33bbff]"
style={{ fontSize: "40px" }}
aria-hidden="true"
></i>
</div>
<div className="font-semibold ">
<div className="flex items-center gap-2">
<p>
{selectFolder && selectFolder.Name ? selectFolder.Name : "Root"}
</p>
<div className="text-black text-sm" onClick={() => SetIsOpen(true)}>
<i
className="fa fa-pencil"
title="Select Folder"
aria-hidden="true"
></i>
</div>
</div>
<p className="text-[10px] text-gray-400">
{selectFolder && selectFolder.Name ? `(${folderPath})` : ""}
</p>
</div>
</div>
<ModalUi
title={"Select Folder"}
isOpen={isOpen}
handleClose={handleCancel}
>
<div className="w-full min-w-[300px] md:min-w-[500px] px-3">
<div className="py-2 text-[#ac4848] text-[14px] font-[500]">
<span
className="cursor-pointer"
title="Root"
onClick={(e) => removeTabListItem(e)}
>
Root /{" "}
</span>
{tabList &&
tabList.map((tab, i) => (
<React.Fragment key={`${tab.objectId}-${i}`}>
<span
className="cursor-pointer"
title={tab.Name}
onClick={(e) => removeTabListItem(e, i)}
>
{tab.Name}
</span>
{" / "}
</React.Fragment>
))}
<hr />
</div>
<div className="mt-2 mb-3">
{!isAdd &&
folderList.length > 0 &&
folderList.map((folder) => (
<div
key={folder.Name}
className="border-[1px] border-[#8a8a8a] px-2 py-2 mb-2 cursor-pointer"
onClick={() => handleSelect(folder)}
>
<div className="flex items-center gap-2">
<i
className="fa fa-folder text-[#33bbff] text-[1.4rem]"
aria-hidden="true"
></i>
<span className="font-semibold">{folder.Name}</span>
</div>
</div>
))}
{isAdd && (
<CreateFolder
parentFolderId={clickFolder && clickFolder.ObjectId}
folderCls={folderCls}
onSuccess={handleAddFolder}
/>
)}
{isLoader && (
<div className="flex justify-center">
<i className="fa-solid fa-spinner fa-spin-pulse text-[30px]"></i>
</div>
)}
</div>
</div>
<hr />
<div className="flex justify-between items-center py-[.75rem] px-[1.25rem]">
<div
className="text-[30px] cursor-pointer text-[#32a3ac]"
title="Save Here"
onClick={handleCreate}
>
{isAdd ? (
<i className="fa-solid fa-arrow-left" aria-hidden="true"></i>
) : (
<i className="fa-solid fa-square-plus" aria-hidden="true"></i>
)}
</div>
<div
className="text-[30px] cursor-pointer"
title="Save Here"
onClick={handleSubmit}
>
<i className="fas fa-save" aria-hidden="true"></i>
</div>
</div>
</ModalUi>
</div>
);
};
export default SelectFolder;
@@ -1,190 +0,0 @@
import React, { useState, useEffect } from "react";
import Select from "react-select";
import AppendFormInForm from "../AppendFormInForm";
import Modal from "react-modal";
import Parse from "parse";
function arrayMove(array, from, to) {
array = array.slice();
array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
return array;
}
/**
* react-sortable-hoc is depcreated not usable from react 18.x.x
* need to replace it with @dnd-kit
* code changes required
*/
const SignersInput = (props) => {
Modal.setAppElement("body");
const [state, setState] = useState(undefined);
// const [editFormData, setEditFormData] = useState([]);
const [selected, setSelected] = React.useState([]);
const [isModal, setIsModel] = useState(false);
const onChange = (selectedOptions) => setSelected(selectedOptions);
const [modalIsOpen, setModalIsOpen] = useState(false);
const onSortEnd = ({ oldIndex, newIndex }) => {
const newValue = arrayMove(selected, oldIndex, newIndex);
setSelected(newValue);
};
const GetSelectListData = async () => {
try {
const currentUser = Parse.User.current();
const contactbook = new Parse.Query("contracts_Contactbook");
contactbook.equalTo(
"CreatedBy",
Parse.User.createWithoutData(currentUser.id)
);
contactbook.notEqualTo("IsDeleted", true);
const contactRes = await contactbook.find();
if (contactRes) {
const res = JSON.parse(JSON.stringify(contactRes));
let list = [];
// let _selected = [];
res.forEach((x) => {
let obj = {
label: x.Name,
value: x.objectId,
isChecked: true
};
list.push(obj);
});
setState(list);
}
} catch (error) {
console.log("err", error);
}
};
useEffect(() => {
GetSelectListData();
}, []);
useEffect(() => {
if (selected && selected.length) {
let newData = [];
selected.forEach((x) => {
newData.push(x.value);
});
if (props.onChange) {
props.onChange(newData);
}
}
// eslint-disable-next-line
}, [selected]);
const handleModalCloseClick = () => {
setIsModel(false);
setModalIsOpen(false);
};
const openModal = () => {
setModalIsOpen(true);
};
// `handleNewDetails` is used to set just save from quick form to selected option in dropdown
const handleNewDetails = (data) => {
setState([...state, data]);
if (selected.length > 0) {
setSelected([...selected, data]);
} else {
setSelected([data]);
}
};
return (
<div className="text-xs mt-2 ">
<label className="block">
Signers
{props.required && <span className="text-red-500 text-[13px]">*</span>}
</label>
<div style={{ display: "flex", gap: 5 }}>
<div style={{ flexWrap: "wrap", width: "100%" }}>
<Select
onSortEnd={onSortEnd}
distance={4}
isMulti
options={state || []}
value={selected}
onChange={onChange}
closeMenuOnSelect={false}
/>
</div>
<div
onClick={() => {
setIsModel(true);
openModal();
}}
style={{
cursor: "pointer",
borderRadius: 4,
border: "1px solid #ccc",
minHeight: 38,
minWidth: 48,
display: "flex",
justifyContent: "center",
alignItems: "center"
}}
>
<i className="fas fa-plus"></i>
</div>
<Modal
isOpen={modalIsOpen}
onRequestClose={handleModalCloseClick}
shouldCloseOnOverlayClick={false}
id="modal1"
contentLabel="Modal"
style={{
content: {
top: "50%",
left: "50%",
right: "auto",
bottom: "auto",
transform: "translate(-50%, -50%)",
padding: 0
},
overlay: {
width: "100%",
backgroundColor: "rgba(0, 0, 0, 0.75)",
zIndex: 50
}
}}
>
<div className="min-w-full md:min-w-[500px]">
<div
type="button"
className="flex justify-between items-center p-3 border-b-[1px] border-gray-300"
>
<div className=" text-black text-xl font-semibold pl-3">
Add Signer
</div>
<button onClick={handleModalCloseClick}>
<i
style={{ fontSize: 25 }}
className="fa fa-times-circle"
aria-hidden="true"
></i>
</button>
</div>
{isModal && (
<AppendFormInForm
valueKey={"objectId"}
displayKey={"Name"}
details={handleNewDetails}
closePopup={handleModalCloseClick}
/>
)}
</div>
</Modal>
</div>
</div>
);
};
export default SignersInput;
-2
View File
@@ -1,2 +0,0 @@
export const contactCls = "contracts_Contactbook";
export const templateCls = "contracts_Template";
+1 -12
View File
@@ -4,15 +4,4 @@
body{
background-color: white;
}
/* Custom CSS to hide scrollbar */
.hide-scrollbar::-webkit-scrollbar {
display: none;
}
.hide-scrollbar {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
}
+1 -1
View File
@@ -113,7 +113,7 @@ export const formJson = (id) => {
});
formData = {
jsonSchema: {
title: "Request signatures",
title: "New Document",
description: "",
type: "object",
required: ["URL", "Name", "Note", "TimeToCompleteDays", "Signers"],
+5 -32
View File
@@ -1,9 +1,7 @@
export default function reportJson(id) {
// console.log("json ", json);
const head = ["Sr.No", "Title", "Note", "Folder", "File", "Owner", "Signers"];
const contactbook = ["Sr.No", "Title", "Email", "Phone"];
const dashboardReportHead = ["Title", "File", "Owner", "Signers"];
const head = ["Sr.No", "Name", "Note", "Folder", "File", "Owner", "Signers"];
const contactbook = ["Sr.No", "Name", "Email", "Phone"];
switch (id) {
// draft documents report
case "ByHuevtCFY":
@@ -105,7 +103,7 @@ export default function reportJson(id) {
case "d9k3UfYHBc":
return {
reportName: "Recently sent for signatures",
heading: dashboardReportHead,
heading: head,
actions: [
{
btnLabel: "View",
@@ -121,7 +119,7 @@ export default function reportJson(id) {
case "5Go51Q7T8r":
return {
reportName: "Recent signature requests",
heading: dashboardReportHead,
heading: head,
actions: [
{
btnLabel: "Sign",
@@ -137,7 +135,7 @@ export default function reportJson(id) {
case "kC5mfynCi4":
return {
reportName: "Drafts",
heading: ["Title", "Note", "Folder", "File", "Owner", "Signers"],
heading: head,
actions: [
{
btnLabel: "sign",
@@ -161,31 +159,6 @@ export default function reportJson(id) {
textColor: "white",
btnIcon: "fa-solid fa-trash"
}
],
form: "ContactBook"
};
// template report
case "6TeaPr321t":
return {
reportName: "Templates",
heading: head,
actions: [
{
btnLabel: "Use",
btnColor: "#4bd396",
textColor: "white",
btnIcon: "fa fa-plus",
redirectUrl:
"remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/placeHolderSign"
},
{
btnLabel: "Edit",
btnColor: "#00c9d5",
textColor: "white",
btnIcon: "fa fa-plus",
redirectUrl:
"remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/template"
}
]
};
default:
+23 -73
View File
@@ -7,35 +7,10 @@ import Tour from "reactour";
import axios from "axios";
import { useSelector } from "react-redux";
import Parse from "parse";
import ModalUi from "../primitives/ModalUi";
import { useNavigate } from "react-router-dom";
const HomeLayout = ({ children }) => {
const navigate = useNavigate();
const { width } = useWindowSize();
const [isOpen, setIsOpen] = useState(true);
const arr = useSelector((state) => state.TourSteps);
const [isUserValid, setIsUserValid] = useState(true);
useEffect(() => {
(async () => {
try {
// Use the session token to validate the user
const userQuery = new Parse.Query(Parse.User);
const user = await userQuery.get(Parse.User.current().id, {
sessionToken: localStorage.getItem("accesstoken")
});
if (user) {
setIsUserValid(true);
} else {
setIsUserValid(false);
}
} catch (error) {
// Session token is invalid or there was an error
setIsUserValid(false);
}
})();
}, []);
// reactour state
const [isCloseBtn, setIsCloseBtn] = useState(true);
@@ -44,7 +19,7 @@ const HomeLayout = ({ children }) => {
const [tourConfigs, setTourConfigs] = useState([]);
const showSidebar = () => {
setIsOpen((value) => !value);
setIsOpen(value => !value);
};
useEffect(() => {
if (width && width <= 768) {
@@ -53,7 +28,9 @@ const HomeLayout = ({ children }) => {
}, [width]);
useEffect(() => {
if (
if (localStorage.getItem("domain") === "sign" && arr && arr.length > 0) {
handleDynamicSteps();
} else if (
localStorage.getItem("domain") === "contracts" &&
arr &&
arr.length > 0
@@ -176,59 +153,32 @@ const HomeLayout = ({ children }) => {
setIsOpen(false);
}
};
const handleLoginBtn = () => {
try {
Parse.User.logOut();
} catch (err) {
console.log("err ", err);
} finally {
localStorage.removeItem("accesstoken");
navigate("/", { replace: true });
}
};
return (
<div>
<div className="sticky top-0 z-50">
<Header showSidebar={showSidebar} />
</div>
{isUserValid ? (
<>
<div className="flex md:flex-row flex-col z-50">
<Sidebar isOpen={isOpen} closeSidebar={closeSidebar} />
<div className="flex md:flex-row flex-col z-50">
<Sidebar isOpen={isOpen} closeSidebar={closeSidebar} />
<div className="relative h-screen flex flex-col justify-between w-full overflow-y-auto">
<div className="bg-[#eef1f5] p-3">{children}</div>
<div className="z-30">
<Footer />
</div>
</div>
<div className="relative h-screen flex flex-col justify-between w-full overflow-y-auto">
<div className="bg-[#eef1f5] p-3">{children}</div>
<div className="z-30">
<Footer />
</div>
<Tour
onRequestClose={closeTour}
steps={tourConfigs}
isOpen={isTour}
closeWithMask={false}
disableKeyboardNavigation={["esc"]}
// disableInteraction={true}
scrollOffset={-100}
rounded={5}
showCloseButton={isCloseBtn}
/>
</>
) : (
<ModalUi title={"Session Expired"} isOpen={true} showClose={false}>
<div className="flex flex-col justify-center items-center py-4 md:py-5 gap-5">
<p className="text-xl font-normal">Your session has expired.</p>
<button
onClick={handleLoginBtn}
className="text-base px-3 py-1.5 rounded shadow-md text-white bg-[#1ab6ce]"
>
Login
</button>
</div>
</ModalUi>
)}
</div>
</div>
<Tour
onRequestClose={closeTour}
steps={tourConfigs}
isOpen={isTour}
closeWithMask={false}
disableKeyboardNavigation={["esc"]}
// disableInteraction={true}
scrollOffset={-100}
rounded={5}
showCloseButton={isCloseBtn}
/>
</div>
);
};
-30
View File
@@ -1,30 +0,0 @@
import React from "react";
const Alert = ({ children, type }) => {
const textcolor = type ? theme(type) : theme();
function theme(color) {
switch (color) {
case "success":
return "border-[#c3e6cb] bg-[#d4edda] text-[#155724]";
case "info":
return "border-[#adcdeb] bg-[#c1daf0] text-[#153756]";
case "danger":
return "border-[#f0a8a8] bg-[#f4bebe] text-[#c42121]";
default:
return "border-[#d6d6d6] bg-[#d9d9d9] text-[#575757]";
}
}
return (
<>
{children && (
<div
className={`z-40 fixed top-20 left-1/2 transform -translate-x-1/2 border-[1px] text-sm ${textcolor} rounded py-[.75rem] px-[1.25rem] `}
>
{children}
</div>
)}
</>
);
};
export default Alert;
+44 -258
View File
@@ -3,8 +3,6 @@ import pad from "../assets/images/pad.svg";
import { useNavigate } from "react-router-dom";
import axios from "axios";
import "../styles/report.css";
import ModalUi from "./ModalUi";
import AppendFormInForm from "../components/AppendFormInForm";
const ReportTable = ({
ReportName,
List,
@@ -13,19 +11,13 @@ const ReportTable = ({
heading,
setIsNextRecord,
isMoreDocs,
docPerPage,
form
docPerPage
}) => {
const navigate = useNavigate();
const [currentPage, setCurrentPage] = useState(1);
const [actLoader, setActLoader] = useState({});
const [isAlert, setIsAlert] = useState(false);
const [isErr, setIsErr] = useState(false);
const [isDocErr, setIsDocErr] = useState(false);
const [isContactform, setIsContactform] = useState(false);
const [isDeleteModal, setIsDeleteModal] = useState({});
const startIndex = (currentPage - 1) * docPerPage;
// For loop is used to calculate page numbers visible below table
// Initialize pageNumbers using useMemo to avoid unnecessary re-creation
const pageNumbers = useMemo(() => {
@@ -63,128 +55,39 @@ const ReportTable = ({
}, [isMoreDocs, pageNumbers, currentPage, setIsNextRecord]);
// `handlemicroapp` is used to open microapp
const handlemicroapp = async (item, url, btnLabel) => {
if (ReportName === "Templates") {
if (btnLabel === "Edit") {
navigate(`/asmf/${url}/${item.objectId}`);
} else {
setActLoader({ [`${item.objectId}_${btnLabel}`]: true });
try {
const params = {
templateId: item.objectId
};
const templateDeatils = await axios.post(
`${localStorage.getItem("baseUrl")}functions/getTemplate`,
params,
{
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": localStorage.getItem("parseAppId"),
sessionToken: localStorage.getItem("accesstoken")
}
}
);
// console.log("templateDeatils.data ", templateDeatils.data);
const templateData =
templateDeatils.data && templateDeatils.data.result;
if (!templateData.error) {
const Doc = templateData;
let signers = [];
if (Doc.Signers?.length > 0) {
Doc.Signers?.forEach((x) => {
if (x.objectId) {
const obj = {
__type: "Pointer",
className: "contracts_Contactbook",
objectId: x.objectId
};
signers.push(obj);
}
});
}
let placeholdersArr = [];
if (Doc.Placeholders?.length > 0) {
placeholdersArr = Doc.Placeholders;
const data = {
Name: Doc.Name,
URL: Doc.URL,
SignedUrl: Doc.SignedUrl,
Description: Doc.Description,
Note: Doc.Note,
Placeholders: placeholdersArr,
ExtUserPtr: {
__type: "Pointer",
className: "contracts_Users",
objectId: Doc.ExtUserPtr.objectId
},
CreatedBy: {
__type: "Pointer",
className: "_User",
objectId: Doc.CreatedBy.objectId
},
Signers: signers
};
try {
const res = await axios.post(
`${localStorage.getItem(
"baseUrl"
)}classes/${localStorage.getItem("_appName")}_Document`,
data,
{
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id":
localStorage.getItem("parseAppId"),
"X-Parse-Session-Token":
localStorage.getItem("accesstoken")
}
}
);
// console.log("Res ", res.data);
if (res.data && res.data.objectId) {
setActLoader({});
setIsAlert(true);
navigate(`/asmf/${url}/${res.data.objectId}`, {
state: { title: "Use Template" }
});
}
} catch (err) {
console.log("Err", err);
setIsAlert(true);
setIsErr(true);
setActLoader({});
}
} else {
setIsDocErr(true);
setActLoader({});
}
} else {
setIsAlert(true);
setIsErr(true);
setActLoader({});
}
} catch (err) {
console.log("err", err);
setIsAlert(true);
setIsErr(true);
setActLoader({});
}
}
} else {
localStorage.removeItem("rowlevel");
navigate("/rpmf/" + url);
localStorage.setItem("rowlevel", JSON.stringify(item));
}
const handlemicroapp = (item, url) => {
localStorage.removeItem("rowlevel");
navigate("/rpmf/" + url);
localStorage.setItem("rowlevel", JSON.stringify(item));
// localStorage.setItem("rowlevelMicro");
};
const handlebtn = async (item) => {
if (ReportName === "Contactbook") {
setIsDeleteModal({ [item.objectId]: true });
setActLoader({ [item.objectId]: true });
try {
const url =
process.env.REACT_APP_SERVERURL + "/classes/contracts_Contactbook/";
const body = { IsDeleted: true };
const res = await axios.put(url + item.objectId, body, {
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": localStorage.getItem("AppID12"),
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
}
});
// console.log("Res ", res.data);
if (res.data && res.data.updatedAt) {
setActLoader({});
setIsAlert(true);
const upldatedList = List.filter((x) => x.objectId !== item.objectId);
setList(upldatedList);
}
} catch (err) {
console.log("err", err);
setIsAlert(true);
setIsErr(true);
setActLoader({});
}
}
};
@@ -198,44 +101,6 @@ const ReportTable = ({
const paginateFront = () => setCurrentPage(currentPage + 1);
const paginateBack = () => setCurrentPage(currentPage - 1);
const handleContactFormModal = () => {
setIsContactform(!isContactform);
};
const handleUserData = (data) => {
setList((prevData) => [data, ...prevData]);
};
const handleDelete = async (item) => {
setIsDeleteModal({});
setActLoader({ [item.objectId]: true });
try {
const url =
process.env.REACT_APP_SERVERURL + "/classes/contracts_Contactbook/";
const body = { IsDeleted: true };
const res = await axios.put(url + item.objectId, body, {
headers: {
"Content-Type": "application/json",
"X-Parse-Application-Id": localStorage.getItem("AppID12"),
"X-Parse-Session-Token": localStorage.getItem("accesstoken")
}
});
// console.log("Res ", res.data);
if (res.data && res.data.updatedAt) {
setActLoader({});
setIsAlert(true);
const upldatedList = List.filter((x) => x.objectId !== item.objectId);
setList(upldatedList);
}
} catch (err) {
console.log("err", err);
setIsAlert(true);
setIsErr(true);
setActLoader({});
}
};
const handleCloseDeleteModal = () => setIsDeleteModal({});
return (
<div className="p-2 overflow-x-scroll w-full bg-white rounded-md">
{isAlert && (
@@ -250,23 +115,7 @@ const ReportTable = ({
</div>
)}
<div className="flex flex-row items-center justify-between my-2 mx-3 text-[20px] md:text-[23px]">
<div className="font-light">{ReportName}</div>
{ReportName === "Templates" && (
<i
onClick={() => navigate("/form/template")}
className="fa-solid fa-square-plus text-sky-400 text-[25px]"
></i>
)}
{form && (
<div
className="cursor-pointer"
onClick={() => handleContactFormModal()}
>
<i className="fa-solid fa-square-plus text-sky-400 text-[25px]"></i>
</div>
)}
</div>
<h2 className="text-[23px] font-light my-2">{ReportName}</h2>
<table className="table-auto w-full border-collapse">
<thead className="text-[14px]">
<tr className="border-y-[1px]">
@@ -286,13 +135,11 @@ const ReportTable = ({
{currentLists.map((item, index) =>
ReportName === "Contactbook" ? (
<tr className="border-y-[1px]" key={index}>
{heading.includes("Sr.No") && (
<td className="px-4 py-2">{startIndex + index + 1}</td>
)}
<td className="px-4 py-2">{index + 1}</td>
<td className="px-4 py-2 font-semibold">{item?.Name} </td>
<td className="px-4 py-2">{item?.Email || "-"}</td>
<td className="px-4 py-2">{item?.Phone || "-"}</td>
<td className="px-3 py-2 text-white">
<td className="px-4 py-2 flex flex-col justify-center items-center gap-2 text-white">
{actions?.length > 0 &&
actions.map((act, index) => (
<button
@@ -302,7 +149,7 @@ const ReportTable = ({
? handlemicroapp(item, act.redirectUrl)
: handlebtn(item)
}
className={`mb-1 flex justify-center items-center gap-1 px-2 py-1 rounded shadow`}
className={`flex justify-center items-center gap-1 px-2 py-1 rounded shadow`}
style={{
backgroundColor: act.btnColor
? act.btnColor
@@ -328,52 +175,16 @@ const ReportTable = ({
)}
</button>
))}
{isDeleteModal[item.objectId] && (
<ModalUi
isOpen
title={"Delete Contact"}
handleClose={handleCloseDeleteModal}
>
<div className="m-[20px]">
<div className="text-lg font-normal text-black">
Are you sure you want to delete this contact?
</div>
<hr className="bg-[#ccc] mt-4 " />
<div className="flex items-center mt-3 gap-2 text-white">
<button
onClick={() => handleDelete(item)}
className="bg-[#1ab6ce] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-3 focus:outline-none"
>
Yes
</button>
<button
onClick={handleCloseDeleteModal}
className="bg-[#188ae2] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-3 text-center ml-[2px] focus:outline-none"
>
No
</button>
</div>
</div>
</ModalUi>
)}
</td>
</tr>
) : (
<tr className="border-y-[1px]" key={index}>
{heading.includes("Sr.No") && (
<td className="px-4 py-2">{startIndex + index + 1}</td>
)}
<td className="px-4 py-2 font-semibold w-56">
{item?.Name}{" "}
<td className="px-4 py-2">{index + 1}</td>
<td className="px-4 py-2 font-semibold">{item?.Name} </td>
<td className="px-4 py-2">{item?.Note || "-"}</td>
<td className="px-4 py-2">
{item?.Folder?.Name || "OpenSignDrive"}
</td>
{heading.includes("Note") && (
<td className="px-4 py-2">{item?.Note || "-"}</td>
)}
{heading.includes("Folder") && (
<td className="px-4 py-2">
{item?.Folder?.Name || "OpenSignDrive"}
</td>
)}
<td className="px-4 py-2">
<a
target="_blank"
@@ -391,21 +202,17 @@ const ReportTable = ({
<td className="px-4 py-2">
{item?.Signers ? formatRow(item?.Signers) : "-"}
</td>
<td className="px-3 py-2 text-white">
<td className="px-4 py-2 flex flex-col justify-center items-center gap-2 text-white">
{actions?.length > 0 &&
actions.map((act, index) => (
<button
key={index}
onClick={() =>
act?.redirectUrl
? handlemicroapp(
item,
act.redirectUrl,
act.btnLabel
)
? handlemicroapp(item, act.redirectUrl)
: handlebtn(item)
}
className={`mb-1 flex justify-center items-center gap-1 px-2 py-1 rounded shadow`}
className={`flex justify-center items-center w-full gap-1 px-2 py-1 rounded shadow`}
style={{
backgroundColor: act.btnColor
? act.btnColor
@@ -417,9 +224,7 @@ const ReportTable = ({
{act?.btnIcon && (
<i
className={
actLoader[
`${item.objectId}_${act.btnLabel}`
]
actLoader[item.objectId]
? "fa-solid fa-spinner fa-spin-pulse"
: act.btnIcon
}
@@ -430,6 +235,7 @@ const ReportTable = ({
{act?.btnLabel ? act.btnLabel : "view"}
</span>
</button>
// )
))}
</td>
</tr>
@@ -487,26 +293,6 @@ const ReportTable = ({
<div className="text-sm font-semibold">No Data Available</div>
</div>
)}
<ModalUi
title={"Add Contact"}
isOpen={isContactform}
handleClose={handleContactFormModal}
>
<AppendFormInForm
handleUserData={handleUserData}
closePopup={handleContactFormModal}
/>
</ModalUi>
<ModalUi
headColor={"#dc3545"}
isOpen={isDocErr}
title={"Receipent required"}
handleClose={() => setIsDocErr(false)}
>
<div style={{ height: "100%", padding: 20 }}>
<p>Please add receipent in template!</p>
</div>
</ModalUi>
</div>
);
};
-28
View File
@@ -1,28 +0,0 @@
import React, { useState } from "react";
const Modal = ({ children, Title }) => {
const [isOpen, SetIsOpen] = useState(false);
return (
<>
{children && (
<div
className={`fixed top-20 left-1/2 transform -translate-x-1/2 border-[1px] text-sm bg-white rounded `}
>
<div className="flex justify-between items-center py-[.75rem] px-[1.25rem] ">
<div className="font-semibold text-xl text-black">{Title}</div>
<div
onClick={() => SetIsOpen()}
className="px-2 py-1 bg-gray-400 rounded cursor-pointer"
>
<i className="fa-solid fa-xmark"></i>
</div>
</div>
<hr />
{isOpen && <div>{children}</div>}
</div>
)}
</>
);
};
export default Modal;
-40
View File
@@ -1,40 +0,0 @@
import React from "react";
const ModalUi = ({
children,
title,
isOpen,
headColor,
handleClose,
showHeader = true,
showClose = true
}) => {
return (
<>
{isOpen && (
<div className="fixed z-[999] top-0 left-0 w-[100%] h-[100%] bg-black bg-opacity-[75%]">
<div className="fixed z-[1000] top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-sm bg-white rounded shadow-md max-h-90 min-w-[90%] md:min-w-[500px] overflow-y-auto hide-scrollbar">
{showHeader && (
<div
className="flex justify-between rounded-t items-center py-[15px] px-[20px] text-white"
style={{ background: headColor ? headColor : "#32a3ac" }}
>
<div className="text-[1.2rem] font-normal">{title}</div>
{showClose && (
<div
className="text-[1.5rem] cursor-pointer"
onClick={() => handleClose && handleClose()}
>
&times;
</div>
)}
</div>
)}
<div>{children}</div>
</div>
</div>
)}
</>
);
};
export default ModalUi;
@@ -1,336 +0,0 @@
import React, { useState } from "react";
import sanitizeFileName from "./sanitizeFileName";
import Parse from "parse";
import DropboxChooser from "../components/fields/DropboxChoose";
import Alert from "./Alert";
import SelectFolder from "../components/fields/SelectFolder";
// import SignersInput from "../components/fields/SignersInput";
import Title from "../components/Title";
import { useNavigate } from "react-router-dom";
import { templateCls } from "../constant/const";
const TemplateForm = () => {
const navigate = useNavigate();
const [signers, setSigners] = useState([]);
const [folder, setFolder] = useState({ ObjectId: "", Name: "" });
const [formData, setFormData] = useState({
Name: "",
Description: "",
Note: "Please review and sign this document"
});
const [fileupload, setFileUpload] = useState([]);
const [fileload, setfileload] = useState(false);
const [percentage, setpercentage] = useState(0);
const [isAlert, setIsAlert] = useState(false);
const [isSubmit, setIsSubmit] = useState(false);
const [isErr, setIsErr] = useState("");
const handleStrInput = (e) => {
setFormData({ ...formData, [e.target.name]: e.target.value });
};
const handleFileInput = (e) => {
setpercentage(0);
try {
let files = e.target.files;
if (typeof files[0] !== "undefined") {
const mb = Math.round(files[0].bytes / Math.pow(1024, 2));
if (mb > 10) {
alert(
`The selected file size is too large. Please select a file less than ${Math.round(
10
)} MB`
);
return;
}
handleFileUpload(files[0]);
} else {
alert("Please select file.");
return false;
}
} catch (error) {
alert(error.message);
return false;
}
};
const handleFileUpload = async (file) => {
Parse.serverURL = process.env.REACT_APP_SERVERURL;
Parse.initialize(process.env.REACT_APP_APPID);
setfileload(true);
const fileName = file.name;
const name = sanitizeFileName(fileName);
const pdfFile = file;
const parseFile = new Parse.File(name, pdfFile);
try {
const response = await parseFile.save({
progress: (progressValue, loaded, total, { type }) => {
if (type === "upload" && progressValue !== null) {
const percentCompleted = Math.round((loaded * 100) / total);
setpercentage(percentCompleted);
}
}
});
// The response object will contain information about the uploaded file
// You can access the URL of the uploaded file using response.url()
setFileUpload(response.url());
setfileload(false);
if (response.url()) {
return response.url();
}
} catch (error) {
setfileload(false);
setpercentage(0);
console.error("Error uploading file:", error);
}
};
const dropboxSuccess = async (files) => {
setfileload(true);
const file = files[0];
const url = file.link;
const mb = Math.round(file.bytes / Math.pow(1024, 2));
if (mb > 10) {
setTimeout(() => {
alert(
`The selected file size is too large. Please select a file less than 10 MB`
);
}, 500);
return;
} else {
const name = sanitizeFileName(file.name);
const parseFile = new Parse.File(name, { uri: url });
try {
const response = await parseFile.save({
progress: (progressValue, loaded, total, { type }) => {
if (type === "upload" && progressValue !== null) {
const percentCompleted = Math.round((loaded * 100) / total);
setpercentage(percentCompleted);
}
}
});
setFileUpload(response.url());
setfileload(false);
if (response.url()) {
return response.url();
}
} catch (error) {
setfileload(false);
setpercentage(0);
console.error("Error uploading file:", error);
}
}
};
const dropboxCancel = async () => {};
const handleSubmit = async (e) => {
e.preventDefault();
setIsSubmit(true);
try {
const currentUser = Parse.User.current();
const template = new Parse.Object(templateCls);
Object.entries(formData).forEach((item) =>
template.set(item[0], item[1])
);
template.set("URL", fileupload);
template.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
if (folder && folder.ObjectId) {
template.set("Folder", {
__type: "Pointer",
className: templateCls,
objectId: folder.ObjectId
});
}
if (signers && signers.length > 0) {
template.set("Signers", signers);
}
const ExtCls = JSON.parse(localStorage.getItem("Extand_Class"));
template.set("ExtUserPtr", {
__type: "Pointer",
className: "contracts_Users",
objectId: ExtCls[0].objectId
});
const res = await template.save();
if (res) {
setSigners([]);
setFolder({ ObjectId: "", Name: "" });
setFormData({
Name: "",
Description: "",
Note: ""
});
setFileUpload([]);
setpercentage(0);
navigate(
"/asmf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/template/" +
res.id
);
}
} catch (err) {
console.log("err ", err);
setIsErr(true);
} finally {
setIsAlert(true);
setTimeout(() => {
setIsAlert(false);
}, 1000);
setIsSubmit(false);
}
};
const handleFolder = (data) => {
setFolder(data);
};
// const handleSigners = (data) => {
// if (data && data.length > 0) {
// const updateSigners = data.map((x) => ({
// __type: "Pointer",
// className: "contracts_Contactbook",
// objectId: x
// }));
// setSigners(updateSigners);
// }
// };
const handleReset = () => {
setSigners([]);
setFolder({ ObjectId: "", Name: "" });
setFormData({
Name: "",
Description: "",
Note: ""
});
setFileUpload([]);
setpercentage(0);
};
return (
<div className="shadow-md rounded my-2 p-3 bg-[#ffffff] md:border-[1px] md:border-gray-600/50">
<Title title="New Template" />
{isAlert && (
<Alert type={isErr ? "danger" : "success"}>
{isErr
? "Something went wrong please try again!"
: "Template created successfully!"}
</Alert>
)}
<form onSubmit={handleSubmit}>
<h1 className="text-[20px] font-semibold mb-4">New Template</h1>
{fileload && (
<div className="flex items-center gap-x-2">
<div className="h-2 rounded-full w-[200px] md:w-[400px] bg-gray-200">
<div
className="h-2 rounded-full bg-blue-500"
style={{ width: `${percentage}%` }}
></div>
</div>
<span className="text-black text-sm">{percentage}%</span>
</div>
)}
<div className="text-xs">
<label className="block">
File<span className="text-red-500 text-[13px]">*</span>
</label>
{fileupload.length > 0 ? (
<div className="flex gap-2 justify-center items-center">
<div className="flex justify-between items-center px-2 py-2 w-full font-bold rounded border-[1px] border-[#ccc] text-gray-500 bg-white text-[13px]">
<div className="break-all">
file selected : {fileupload?.split("/")[3]?.split("_")[1]}
</div>
<div
onClick={() => {
setFileUpload([]);
}}
className="cursor-pointer px-[10px] text-[20px] font-bold bg-white text-red-500"
>
<i className="fa-solid fa-xmark"></i>
</div>
</div>
{process.env.REACT_APP_DROPBOX_API_KEY && (
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
)}
</div>
) : (
<div className="flex gap-2 justify-center items-center">
<input
type="file"
className="bg-white px-2 py-1.5 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
onChange={(e) => handleFileInput(e)}
accept="application/pdf,application/vnd.ms-excel"
required
/>
{process.env.REACT_APP_DROPBOX_API_KEY && (
<DropboxChooser
onSuccess={dropboxSuccess}
onCancel={dropboxCancel}
/>
)}
</div>
)}
</div>
<div className="text-xs mt-2">
<label className="block">
Title<span className="text-red-500 text-[13px]">*</span>
</label>
<input
name="Name"
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
value={formData.Name}
onChange={(e) => handleStrInput(e)}
required
/>
</div>
<div className="text-xs mt-2">
<label className="block">
Note<span className="text-red-500 text-[13px]">*</span>
</label>
<input
name="Note"
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
value={formData.Note}
onChange={(e) => handleStrInput(e)}
required
/>
</div>
<div className="text-xs mt-2">
<label className="block">Description</label>
<input
name="Description"
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
value={formData.Description}
onChange={(e) => handleStrInput(e)}
/>
</div>
{/* <SignersInput onChange={handleSigners} /> */}
<SelectFolder onSuccess={handleFolder} folderCls={templateCls} />
<div className="flex items-center mt-3 gap-2 text-white">
<button
className={`${
isSubmit && "cursor-progress"
} bg-[#1ab6ce] rounded-sm shadow-md text-[14px] font-semibold uppercase text-white py-1.5 px-2.5 focus:outline-none`}
type="submit"
disabled={isSubmit}
>
Submit
</button>
<div
className="bg-[#188ae2] rounded-sm shadow-md text-[14px] font-semibold uppercase text-white py-1.5 px-2.5 text-center ml-[2px] focus:outline-none"
onClick={() => handleReset()}
>
Reset
</div>
</div>
</form>
</div>
);
};
export default TemplateForm;
@@ -1,34 +0,0 @@
import React, { useEffect } from "react";
import Parse from "parse";
const ValidateRoute = ({ children }) => {
useEffect(() => {
(async () => {
try {
// Use the session token to validate the user
const userQuery = new Parse.Query(Parse.User);
const user = await userQuery.get(Parse.User.current().id, {
sessionToken: localStorage.getItem("accesstoken")
});
if (!user) {
handlelogout();
}
} catch (error) {
handlelogout();
}
})();
}, []);
const handlelogout = async () => {
try {
Parse.User.logOut();
localStorage.removeItem("accesstoken");
} catch (err) {
console.log("err ", err);
} finally {
localStorage.removeItem("accesstoken");
}
};
return <div>{children}</div>;
};
export default ValidateRoute;
+9 -14
View File
@@ -25,7 +25,6 @@ import TreeWidget from "../components/TreeWidget";
import parse from "html-react-parser";
import Title from "../components/Title";
import { formJson } from "../json/FormJson";
import TemplateForm from "../primitives/TemplateForm";
const widget = {
TimeWidget: TimeWidget
};
@@ -42,19 +41,15 @@ const fields = () => {
function FormBuilderFn(props) {
const { id } = useParams();
const navigate = useNavigate();
if (id === "template") {
return <TemplateForm />;
} else {
return (
<FormBuilder
removeState={props.removeState}
removeLevel2State={props.removeLevel2State}
removeLevel3State={props.removeLevel3State}
id={id}
navigate={navigate}
/>
);
}
return (
<FormBuilder
removeState={props.removeState}
removeLevel2State={props.removeLevel2State}
removeLevel3State={props.removeLevel3State}
id={id}
navigate={navigate}
/>
);
}
class FormBuilder extends Component {
state = {
+2 -2
View File
@@ -74,8 +74,8 @@ const PgSignUp = (props) => {
const res = await Parse.Cloud.run("getUserDetails", params);
// console.log("res", res);
if (res) {
const updateQuery = new Parse.Object(extClass);
updateQuery.id = res.id;
const checkUser = new Parse.Query(extClass);
const updateQuery = await checkUser.get(res.id);
updateQuery.set(
"Next_billing_date",
new Date(zohoRes.data.result.nextBillingDate)
-3
View File
@@ -15,7 +15,6 @@ const Report = () => {
const [heading, setHeading] = useState([]);
const [isNextRecord, setIsNextRecord] = useState(false);
const [isMoreDocs, setIsMoreDocs] = useState(true);
const [form, setForm]= useState("")
const abortController = new AbortController();
const docPerPage = 10;
@@ -51,7 +50,6 @@ const Report = () => {
setActions(json.actions);
setHeading(json.heading);
setReportName(json.reportName);
setForm(json.form)
Parse.serverURL = localStorage.getItem("BaseUrl12");
Parse.initialize(localStorage.getItem("AppID12"));
const currentUser = Parse.User.current().id;
@@ -156,7 +154,6 @@ const Report = () => {
setIsNextRecord={setIsNextRecord}
isMoreDocs={isMoreDocs}
docPerPage={docPerPage}
form={form}
/>
) : (
<div className="flex items-center justify-center h-screen w-full bg-white rounded">
+4 -2
View File
@@ -2211,5 +2211,7 @@
background-position: -2em 0;
}
}
.box:nth-of-type(n + 43) {
display: none;
}
+4 -8
View File
@@ -17,8 +17,6 @@ import getUserDetails from './parsefunction/getUserDetails.js';
import getDocument from './parsefunction/getDocument.js';
import getDrive from './parsefunction/getDrive.js';
import getReport from './parsefunction/getReport.js';
import TemplateAfterSave from './parsefunction/TemplateAfterSave.js';
import GetTemplate from './parsefunction/GetTemplate.js';
Parse.Cloud.define('AddUserToRole', addUserToGroups);
Parse.Cloud.define('UserGroups', getUserGroups);
@@ -28,6 +26,9 @@ Parse.Cloud.define('googlesign', GoogleSign);
Parse.Cloud.define('zohodetails', ZohoDetails);
Parse.Cloud.define('usersignup', usersignup);
Parse.Cloud.define('facebooksign', FacebookSign);
Parse.Cloud.afterSave('contracts_Document', DocumentAftersave);
Parse.Cloud.afterSave('contracts_Contactbook', ContactbookAftersave);
Parse.Cloud.afterSave('contracts_Users', ContractUsersAftersave);
Parse.Cloud.define('SendOTPMailV1', sendMailOTPv1);
Parse.Cloud.define('sendmail', SendMailv1);
Parse.Cloud.define('AuthLoginAsMail', AuthLoginAsMail);
@@ -35,9 +36,4 @@ Parse.Cloud.define('getUserId', getUserId);
Parse.Cloud.define('getUserDetails', getUserDetails);
Parse.Cloud.define('getDocument', getDocument);
Parse.Cloud.define('getDrive', getDrive)
Parse.Cloud.define('getReport', getReport)
Parse.Cloud.define("getTemplate", GetTemplate)
Parse.Cloud.afterSave('contracts_Document', DocumentAftersave);
Parse.Cloud.afterSave('contracts_Contactbook', ContactbookAftersave);
Parse.Cloud.afterSave('contracts_Users', ContractUsersAftersave);
Parse.Cloud.afterSave("contracts_Template", TemplateAfterSave)
Parse.Cloud.define('getReport', getReport)
@@ -1,53 +0,0 @@
import axios from 'axios';
export default async function GetTemplate(request) {
const serverUrl = process.env.SERVER_URL;
const templateId = request.params.templateId;
try {
const userRes = await axios.get(serverUrl + '/users/me', {
headers: {
'X-Parse-Application-Id': process.env.APP_ID,
'X-Parse-Session-Token': request.headers['sessiontoken'],
},
});
const userId = userRes.data && userRes.data.objectId;
// console.log("templateId ", templateId)
// console.log("userId ",userId)
if (templateId && userId) {
try {
const template = new Parse.Query('contracts_Template');
template.equalTo('objectId', templateId);
template.include('ExtUserPtr');
template.include('Signers');
template.include('CreateBy');
const res = await template.first({ useMasterKey: true });
// console.log("res ", res)
if (res) {
// console.log("res ",res)
const acl = res.getACL();
console.log("acl", acl.getReadAccess(userId))
if (acl && acl.getReadAccess(userId)) {
return res;
} else {
return { error: "You don't have access of this document!" };
}
} else {
return { error: "You don't have access of this document!" };
}
} catch (err) {
console.log('err', err);
return err;
}
} else {
return { error: 'Please pass required parameters!' };
}
} catch (err) {
console.log('err', err);
if (err.code == 209) {
return { error: 'Invalid session token' };
} else {
return { error: "You don't have access of this document!" };
}
}
}
@@ -1,83 +0,0 @@
export default async function TemplateAfterSave(request) {
try {
if (!request.original) {
console.log('new entry is insert in contracts_Template');
// update acl of New Document If There are signers present in array
const signers = request.object.get('Signers');
if (signers && signers.length > 0) {
await updateAclDoc(request.object.id);
} else {
await updateSelfDoc(request.object.id);
}
} else {
if (request.user) {
const signers = request.object.get('Signers');
if (signers && signers.length > 0) {
await updateAclDoc(request.object.id);
} else {
await updateSelfDoc(request.object.id);
}
}
}
} catch (err) {
console.log('err in aftersave of contracts_Template');
console.log(err);
}
async function updateAclDoc(objId) {
// console.log("In side updateAclDoc func")
// console.log(objId)
const Query = new Parse.Query('contracts_Template');
Query.include('Signers');
const updateACL = await Query.get(objId, { useMasterKey: true });
const res = JSON.parse(JSON.stringify(updateACL));
// console.log("res");
// console.log(JSON.stringify(res));
const UsersPtr = res.Signers.map(item => item.UserId);
if (res.Signers[0].ExtUserPtr) {
const ExtUserSigners = res.Signers.map(item => {
return {
__type: 'Pointer',
className: 'contracts_Users',
objectId: item.ExtUserPtr.objectId,
};
});
updateACL.set('Signers', ExtUserSigners);
}
// console.log("UsersPtr")
// console.log(JSON.stringify(UsersPtr))
const newACL = new Parse.ACL();
newACL.setPublicReadAccess(false);
newACL.setPublicWriteAccess(false);
newACL.setReadAccess(request.user, true);
newACL.setWriteAccess(request.user, true);
UsersPtr.forEach(x => {
newACL.setReadAccess(x.objectId, true);
newACL.setWriteAccess(x.objectId, true);
});
updateACL.setACL(newACL);
updateACL.save(null, { useMasterKey: true });
}
async function updateSelfDoc(objId) {
// console.log("Inside updateSelfDoc func")
const Query = new Parse.Query('contracts_Template');
const updateACL = await Query.get(objId, { useMasterKey: true });
// const res = JSON.parse(JSON.stringify(updateACL));
// console.log("res");
// console.log(JSON.stringify(res));
const newACL = new Parse.ACL();
newACL.setPublicReadAccess(false);
newACL.setPublicWriteAccess(false);
newACL.setReadAccess(request.user, true);
newACL.setWriteAccess(request.user, true);
updateACL.setACL(newACL);
updateACL.save(null, { useMasterKey: true });
}
}
@@ -21,7 +21,6 @@ export default async function getDocument(request) {
query.include('Signers');
query.include('AuditTrail.UserPtr');
query.include('Placeholders');
query.notEqualTo('IsArchive', true)
const res = await query.first({ useMasterKey: true });
if (res) {
const acl = res.getACL();
@@ -41,7 +40,7 @@ export default async function getDocument(request) {
return { error: 'Please pass required parameters!' };
}
} catch (err) {
console.log('err', err);
console.log('err');
if (err.code == 209) {
return { error: 'Invalid session token' };
} else {
@@ -16,9 +16,9 @@ export default async function getDrive(request) {
if (userId) {
let url;
if (docId) {
url = `${classUrl}?where={"Folder":{"__type":"Pointer","className":"contracts_Document","objectId":"${docId}"},"CreatedBy":{"__type":"Pointer","className":"_User","objectId":"${userId}"},"IsArchive":{"$ne":true}}&include=ExtUserPtr,Signers,Folder`;
url = `${classUrl}?where={"Folder":{"__type":"Pointer","className":"contracts_Document","objectId":"${docId}"},"CreatedBy":{"__type":"Pointer","className":"_User","objectId":"${userId}"}}&include=ExtUserPtr,Signers,Folder`;
} else {
url = `${classUrl}?where={"Folder":{"$exists":false},"CreatedBy":{"__type":"Pointer","className":"_User","objectId":"${userId}"},"IsArchive":{"$ne":true}}&include=ExtUserPtr,Signers`;
url = `${classUrl}?where={"Folder":{"$exists":false},"CreatedBy":{"__type":"Pointer","className":"_User","objectId":"${userId}"}}&include=ExtUserPtr,Signers`;
}
try {
const res = await axios.get(url, {
@@ -19,7 +19,7 @@ export default async function getReport(request) {
const userId = userRes.data && userRes.data.objectId;
if (userId) {
const json = reportId && reportJson(reportId, userId);
const clsName = json?.reportClass ? json.reportClass : 'contracts_Document';
const clsName = reportId === '5KhaPr482K' ? 'contracts_Contactbook' : 'contracts_Document';
if (json) {
const { params, keys } = json;
const orderBy = '-updatedAt';
+90 -110
View File
@@ -2,7 +2,7 @@ import SignPDF from './SignPDF.min.cjs';
import fs from 'node:fs';
import axios from 'axios';
import FormData from 'form-data';
// import plainplaceholder from './customSignPdf/plainplaceholder.min.js';
import plainplaceholder from './customSignPdf/plainplaceholder.min.js';
import { plainAddPlaceholder } from 'node-signpdf/dist/helpers/index.js';
const serverUrl = process.env.SERVER_URL,
APPID = process.env.APP_ID,
@@ -19,20 +19,20 @@ async function uploadFile(a) {
console.log('err ', e), fs.unlinkSync(a);
}
}
async function updateDoc(t, s, r, i, n, o) {
async function updateDoc(t, s, r, i, o, n) {
try {
var d = {
UserPtr: { __type: 'Pointer', className: o, objectId: r },
UserPtr: { __type: 'Pointer', className: n, objectId: r },
SignedUrl: s,
Activity: 'Signed',
ipAddress: i,
};
let e;
var l = (e = n.AuditTrail && 0 < n.AuditTrail.length ? [...n.AuditTrail, d] : [d]).filter(
var l = (e = o.AuditTrail && 0 < o.AuditTrail.length ? [...o.AuditTrail, d] : [d]).filter(
e => 'Signed' === e.Activity
);
let a = !1;
!((n.Signers && 0 < n.Signers.length && l.length !== n.Signers.length) || !(a = !0));
!((o.Signers && 0 < o.Signers.length && l.length !== o.Signers.length) || !(a = !0));
var p = { SignedUrl: s, AuditTrail: e, IsCompleted: a };
await axios.put(serverUrl + '/classes/contracts_Document/' + t, p, {
headers: {
@@ -61,7 +61,7 @@ async function sendMail(e) {
s +
' Standard is attached to this email. Kindly download the document from the attachment.</p></div> </div><div><p>This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' +
t.Mail +
' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign <a href=www.opensignlabs.com target=_blank>here</a>.</p></div></div></body></html>'
' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.</p></div></div></body></html>',
};
await axios.post(serverUrl + '/functions/sendmailv3', a, {
headers: {
@@ -86,7 +86,7 @@ async function sendCompletedMail(e) {
s +
'. Kindly download the document from the attachment.</p></div> </div><div><p>This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' +
t.Mail +
' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign <a href=www.opensignlabs.com target=_blank>here</a>.</p></div></div></body></html>',
' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.</p></div></div></body></html>',
};
await axios.post(serverUrl + '/functions/sendmailv3', a, {
headers: {
@@ -96,135 +96,115 @@ async function sendCompletedMail(e) {
},
});
}
async function PDF(i, n) {
async function PDF(s, r) {
try {
i.params.sign;
var e = i.params.docId,
a = i.params.userId,
o = await axios.get(
serverUrl + '/classes/contracts_Document/' + e + '?include=ExtUserPtr,Signers',
{
headers: {
'Content-Type': 'application/json',
'X-Parse-Application-Id': APPID,
'X-Parse-Master-Key': masterKEY,
},
}
),
t = await axios.get(serverUrl + '/users/me', {
var i = s.params.sign,
e = s.params.docId,
o = s.params.userId,
n = await axios.get(serverUrl + '/classes/contracts_Document/' + e + '?include=ExtUserPtr', {
headers: {
'Content-Type': 'application/json',
'X-Parse-Application-Id': APPID,
'X-Parse-Master-Key': masterKEY,
},
}),
d = await axios.get(serverUrl + '/users/me', {
headers: {
'X-Parse-Application-Id': APPID,
'X-Parse-Session-Token': i.headers.sessiontoken,
'X-Parse-Session-Token': s.headers.sessiontoken,
},
});
if (!t.data || !t.data.objectId) return { status: 'error', message: 'this user not allowed!' };
if (!d.data || !d.data.objectId) return { status: 'error', message: 'this user not allowed!' };
{
var d,
l,
var l,
p,
c = JSON.stringify({ objectId: a });
let s, r;
r = a
? (d = await axios.get(serverUrl + '/classes/contracts_Contactbook?where=' + c, {
c,
m = JSON.stringify({ objectId: o });
let a, t;
t = o
? (l = await axios.get(serverUrl + '/classes/contracts_Contactbook?where=' + m, {
headers: {
'X-Parse-Application-Id': APPID,
'X-Parse-Session-Token': i.headers.sessiontoken,
'X-Parse-Session-Token': s.headers.sessiontoken,
},
})).data && 0 < d.data.results.length
? ((s = d), 'contracts_Contactbook')
: ((s = await axios.get(serverUrl + '/classes/contracts_Users?where=' + c, {
headers: { 'X-Parse-Application-Id': APPID, 'X-Parse-Master-Key': masterKEY },
})).data && 0 < l.data.results.length
? ((a = l), 'contracts_Contactbook')
: ((a = await axios.get(serverUrl + '/classes/contracts_Users?where=' + m, {
headers: {
'X-Parse-Application-Id': APPID,
'X-Parse-Master-Key': masterKEY,
},
})),
'contracts_Users')
: ((l = JSON.stringify({
UserId: { __type: 'Pointer', className: '_User', objectId: t.data.objectId },
: ((p = JSON.stringify({
UserId: { __type: 'Pointer', className: '_User', objectId: d.data.objectId },
})),
(p = await axios.get(serverUrl + '/classes/contracts_Users?where=' + l, {
headers: { 'X-Parse-Application-Id': APPID, 'X-Parse-Master-Key': masterKEY },
})).data && 0 < p.data.results.length
? ((s = p), 'contracts_Users')
: ((s = await axios.get(serverUrl + '/classes/contracts_Contactbook?where=' + l, {
(c = await axios.get(serverUrl + '/classes/contracts_Users?where=' + p, {
headers: {
'X-Parse-Application-Id': APPID,
'X-Parse-Master-Key': masterKEY,
},
})).data && 0 < c.data.results.length
? ((a = c), 'contracts_Users')
: ((a = await axios.get(serverUrl + '/classes/contracts_Contactbook?where=' + p, {
headers: {
'X-Parse-Application-Id': APPID,
'X-Parse-Session-Token': i.headers.sessiontoken,
'X-Parse-Session-Token': s.headers.sessiontoken,
},
})),
'contracts_Contactbook'));
var m = s.data.results[0].Name,
g = s.data.results[0].Email;
if (!i.params.pdfFile) return { status: 'error', message: 'pdf file not present!' };
var g = a.data.results[0].Name,
h = a.data.results[0].Email;
if (!s.params.pdfFile) return { status: 'error', message: 'pdf file not present!' };
{
let e = Buffer.from(i.params.pdfFile, 'base64');
let e = Buffer.from(s.params.pdfFile, 'base64');
var u = process.env.PFX_BASE64,
h = Buffer.from(u, 'base64'),
f = {
UserPtr: { __type: 'Pointer', className: r, objectId: s.data.results[0].objectId },
SignedUrl: '',
Activity: 'Signed',
ipAddress: i.headers['x-real-ip'],
};
let a;
var y = (a =
o.data.AuditTrail && 0 < o.data.AuditTrail.length
? [...o.data.AuditTrail, f]
: [f]).filter(e => 'Signed' === e.Activity);
let t = !1;
!(
(o.data.Signers && 0 < o.data.Signers.length && y.length !== o.data.Signers.length) ||
!(t = !0)
);
var v,
P,
x = `./exports/exported_file_${Math.floor(5e3 * Math.random())}.pdf`,
A =
(t
? ((v = o.data.Signers?.map(e => e.Name + ' <' + e.Email + '>')),
(e =
v && 0 < v.length
? plainAddPlaceholder({
pdfBuffer: e,
reason: 'Digitally signed by Open sign for ' + v?.join(', '),
location: 'location',
signatureLength: 1e4,
})
: plainAddPlaceholder({
pdfBuffer: e,
reason: 'Digitally signed by Open sign for ' + m + ' <' + g + '>',
location: 'location',
signatureLength: 1e4,
})),
(P = await new SignPDF(e, h).signPDF()),
fs.writeFileSync(x, P))
: fs.writeFileSync(x, e),
await uploadFile(x));
if (A && A.imageUrl) {
const n = await updateDoc(
i.params.docId,
A.imageUrl,
s.data.results[0].objectId,
i.headers['x-real-ip'],
o.data,
r
f = Buffer.from(u, 'base64');
e = i
? plainplaceholder({
pdfBuffer: e,
reason: 'Digitally signed by Open sign for ' + g + ' <' + h + '>',
location: 'test location',
signatureLength: 1e4,
sign: i,
})
: plainAddPlaceholder({
pdfBuffer: e,
reason: 'Digitally signed by Open sign for ' + g + ' <' + h + '>',
location: 'test location',
signatureLength: 1e4,
});
var y = await new SignPDF(e, f).signPDF(),
v = `./exports/exported_file_${Math.floor(5e3 * Math.random())}.pdf`,
P = (fs.writeFileSync(v, y), await uploadFile(v));
if (P && P.imageUrl) {
const r = await updateDoc(
s.params.docId,
P.imageUrl,
a.data.results[0].objectId,
s.headers['x-real-ip'],
n.data,
t
);
return (
sendMail({
url: A.imageUrl,
sender: { Mail: o.data.ExtUserPtr.Email, Name: o.data.ExtUserPtr.Name },
pdfName: o.data.Name,
receiver: g,
url: P.imageUrl,
sender: { Mail: n.data.ExtUserPtr.Email, Name: n.data.ExtUserPtr.Name },
pdfName: n.data.Name,
receiver: h,
}),
n &&
n.isCompleted &&
r &&
r.isCompleted &&
sendCompletedMail({
url: A.imageUrl,
sender: { Mail: o.data.ExtUserPtr.Email, Name: 'Open sign' },
pdfName: o.data.Name,
receiver: o.data.ExtUserPtr.Email,
url: P.imageUrl,
sender: { Mail: n.data.ExtUserPtr.Email, Name: 'Open sign' },
pdfName: n.data.Name,
receiver: n.data.ExtUserPtr.Email,
}),
fs.unlinkSync(x),
console.log('New Signed PDF created called: ' + x),
'success' === n.message
? { status: 'success', data: A.imageUrl }
fs.unlinkSync(v),
console.log('New Signed PDF created called: ' + v),
'success' === r.message
? { status: 'success', data: P.imageUrl }
: { status: 'error', message: 'please provide required parameters!' }
);
}
@@ -7,11 +7,11 @@ export default function reportJson(id, userId) {
return {
reportName: 'Draft Documents',
params: {
Type: { $ne: 'Folder' },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
$or: [{Signers:{$eq:[]}}, { Signers: null }, { Signers: { $exists: true }, Placeholders: null }],
Type: null,
$or: [
{ Signers: null, SignedUrl: null },
{ Signers: { $exists: true }, Placeholders: null },
],
CreatedBy: {
__type: 'Pointer',
className: '_User',
@@ -28,23 +28,10 @@ export default function reportJson(id, userId) {
Type: { $ne: 'Folder' },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
ExpiryDate: {
$gt: { __type: 'Date', iso: new Date().toISOString() },
},
Placeholders: { $ne: null },
Signers: {
$inQuery: {
where: {
UserId: {
__type: 'Pointer',
className: '_User',
objectId: currentUserId,
},
},
className: 'contracts_Contactbook',
},
},
},
keys: [
'Name',
@@ -63,11 +50,10 @@ export default function reportJson(id, userId) {
reportName: 'In-progress documents',
params: {
Type: { $ne: 'Folder' },
Signers: { $exists: true, $ne: [] },
Signers: { $ne: null },
Placeholders: { $ne: null },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
CreatedBy: {
__type: 'Pointer',
className: '_User',
@@ -84,7 +70,7 @@ export default function reportJson(id, userId) {
return {
reportName: 'Completed Documents',
params: {
Type: { $ne: 'Folder' },
Type: null,
IsCompleted: true,
CreatedBy: {
__type: 'Pointer',
@@ -92,7 +78,6 @@ export default function reportJson(id, userId) {
objectId: currentUserId,
},
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
},
keys: [
'Name',
@@ -111,7 +96,6 @@ export default function reportJson(id, userId) {
reportName: 'Declined Documents',
params: {
Type: null,
IsArchive: { $ne: true },
IsDeclined: true,
CreatedBy: {
__type: 'Pointer',
@@ -129,7 +113,6 @@ export default function reportJson(id, userId) {
params: {
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
Type: { $ne: 'Folder' },
$and: [
{
@@ -158,11 +141,10 @@ export default function reportJson(id, userId) {
reportName: 'Recently sent for signatures',
params: {
Type: { $ne: 'Folder' },
Signers: { $exists: true, $ne: [] },
Signers: { $ne: null },
Placeholders: { $ne: null },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
CreatedBy: {
__type: 'Pointer',
className: '_User',
@@ -172,7 +154,7 @@ export default function reportJson(id, userId) {
$gt: { __type: 'Date', iso: new Date().toISOString() },
},
},
keys: ['Name', 'Folder.Name', 'URL', 'ExtUserPtr.Name', 'Signers.Name'],
keys: ['Name', 'Note', 'Folder.Name', 'URL', 'ExtUserPtr.Name', 'Signers.Name'],
};
// Recent signature requests report show on dashboard
case '5Go51Q7T8r':
@@ -182,36 +164,32 @@ export default function reportJson(id, userId) {
Type: { $ne: 'Folder' },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
ExpiryDate: {
$gt: { __type: 'Date', iso: new Date().toISOString() },
},
Placeholders: { $ne: null },
Signers: {
$inQuery: {
where: {
UserId: {
__type: 'Pointer',
className: '_User',
objectId: currentUserId,
},
},
className: 'contracts_Contactbook',
},
},
},
keys: ['Name', 'URL', 'ExtUserPtr.Name', 'Signers.Name', 'Signers.UserId', 'AuditTrail'],
keys: [
'Name',
'Note',
'Folder.Name',
'URL',
'ExtUserPtr.Name',
'Signers.Name',
'Signers.UserId',
'AuditTrail',
],
};
// Drafts report show on dashboard
case 'kC5mfynCi4':
return {
reportName: 'Drafts',
params: {
Type: { $ne: 'Folder' },
IsCompleted: { $ne: true },
IsDeclined: { $ne: true },
IsArchive: { $ne: true },
$or: [{Signers:{$eq:[]}}, { Signers: null }, { Signers: { $exists: true }, Placeholders: null }],
Type: null,
$or: [
{ Signers: null, SignedUrl: null },
{ Signers: { $exists: true }, Placeholders: null },
],
CreatedBy: {
__type: 'Pointer',
className: '_User',
@@ -224,7 +202,6 @@ export default function reportJson(id, userId) {
case '5KhaPr482K':
return {
reportName: 'Contactbook',
reportClass: 'contracts_Contactbook',
params: {
CreatedBy: {
__type: 'Pointer',
@@ -235,22 +212,6 @@ export default function reportJson(id, userId) {
},
keys: ['Name', 'Email', 'Phone'],
};
// Templates report
case '6TeaPr321t':
return {
reportName: 'Templates',
reportClass: 'contracts_Template',
params: {
Type: { $ne: 'Folder' },
IsArchive: { $ne: true },
CreatedBy: {
__type: 'Pointer',
className: '_User',
objectId: currentUserId,
},
},
keys: ['Name', 'Note', 'Folder.Name', 'URL', 'ExtUserPtr.Name', 'Signers.Name'],
};
default:
return null;
}
@@ -38,7 +38,7 @@ exports.up = async Parse => {
pageType: 'form',
description: '',
objectId: '8mZzFxbG1z',
}
},
],
},
{
@@ -1,588 +0,0 @@
/**
*
* @param {Parse} Parse
*/
exports.up = async Parse => {
const className = 'w_menu';
const userMenu = new Parse.Query(className);
const updateUserMenu = await userMenu.get('H9vRfEYKhT');
updateUserMenu.set('menuItems', [
{
icon: 'fas fa-tachometer-alt',
title: 'Dashboard',
target: '',
pageType: 'dashboard',
description: '',
objectId: '35KBoSgoAK',
},
{
icon: 'far fa-newspaper',
title: 'New Document',
target: '_self',
pageType: null,
description: null,
objectId: null,
children: [
{
icon: 'fas fa-pen-nib',
title: 'Sign yourself',
target: '_self',
pageType: 'form',
description: '',
objectId: 'sHAnZphf69',
},
{
icon: 'fa-solid fa-paper-plane',
title: 'Request signatures',
target: '_self',
pageType: 'form',
description: '',
objectId: '8mZzFxbG1z',
},
{
icon: 'fas fa-file-signature',
title: 'New template',
target: '_self',
pageType: 'form',
description: '',
objectId: 'template',
},
],
},
{
icon: 'fa-solid fa-file-contract',
title: 'Templates',
target: '_self',
pageType: 'report',
description: '',
objectId: '6TeaPr321t',
},
{
icon: 'fas fa-folder',
title: 'OpenSign™ Drive',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive',
},
{
icon: 'fas fa-address-card',
title: 'Reports',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-signature',
title: 'Need your sign',
target: '_self',
pageType: 'report',
description: '',
objectId: '4Hhwbp482K',
},
{
icon: 'fas fa-tasks',
title: 'In Progress',
target: '_self',
pageType: 'report',
description: '',
objectId: '1MwEuxLEkF',
},
{
icon: 'fas fa-check-circle',
title: 'Completed',
target: '_self',
pageType: 'report',
description: '',
objectId: 'kQUoW4hUXz',
},
{
icon: 'fas fa-edit',
title: 'Drafts',
target: '_self',
pageType: 'report',
description: '',
objectId: 'ByHuevtCFY',
},
{
icon: 'fas fa-times-circle',
title: 'Declined',
target: '_self',
pageType: 'report',
description: '',
objectId: 'UPr2Fm5WY3',
},
{
icon: 'fas fa-hourglass-end',
title: 'Expired',
target: '_self',
pageType: 'report',
description: '',
objectId: 'zNqBHXHsYH',
},
{
icon: 'fa-solid fa-address-book',
title: 'Contactbook',
target: '_self',
pageType: 'report',
description: '',
objectId: '5KhaPr482K',
},
],
},
{
icon: 'fas fa-cog',
title: 'Settings',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-pen-fancy',
title: 'My Signature',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/managesign',
},
],
},
]);
const AdminMenu = new Parse.Query(className);
const updateAdminMenu = await AdminMenu.get('VPh91h0ZHk');
updateAdminMenu.set('menuItems', [
{
icon: 'fas fa-tachometer-alt',
title: 'Dashboard',
target: '',
pageType: 'dashboard',
description: '',
objectId: '35KBoSgoAK',
},
{
icon: 'far fa-newspaper',
title: 'New Document',
target: '_self',
pageType: null,
description: null,
objectId: null,
children: [
{
icon: 'fas fa-pen-nib',
title: 'Sign yourself',
target: '_self',
pageType: 'form',
description: '',
objectId: 'sHAnZphf69',
},
{
icon: 'fa-solid fa-paper-plane',
title: 'Request signatures',
target: '_self',
pageType: 'form',
description: '',
objectId: '8mZzFxbG1z',
},
{
icon: 'fas fa-file-signature',
title: 'New template',
target: '_self',
pageType: 'form',
description: '',
objectId: 'template',
},
],
},
{
icon: 'fa-solid fa-file-contract',
title: 'Templates',
target: '_self',
pageType: 'report',
description: '',
objectId: '6TeaPr321t',
},
{
icon: 'fas fa-folder',
title: 'OpenSign™ Drive',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive',
},
{
icon: 'fas fa-address-card',
title: 'Reports',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-signature',
title: 'Need your sign',
target: '_self',
pageType: 'report',
description: '',
objectId: '4Hhwbp482K',
},
{
icon: 'fas fa-tasks',
title: 'In Progress',
target: '_self',
pageType: 'report',
description: '',
objectId: '1MwEuxLEkF',
},
{
icon: 'fas fa-check-circle',
title: 'Completed',
target: '_self',
pageType: 'report',
description: '',
objectId: 'kQUoW4hUXz',
},
{
icon: 'fas fa-edit',
title: 'Drafts',
target: '_self',
pageType: 'report',
description: '',
objectId: 'ByHuevtCFY',
},
{
icon: 'fas fa-times-circle',
title: 'Declined',
target: '_self',
pageType: 'report',
description: '',
objectId: 'UPr2Fm5WY3',
},
{
icon: 'fas fa-hourglass-end',
title: 'Expired',
target: '_self',
pageType: 'report',
description: '',
objectId: 'zNqBHXHsYH',
},
{
icon: 'fa-solid fa-address-book',
title: 'Contactbook',
target: '_self',
pageType: 'report',
description: '',
objectId: '5KhaPr482K',
},
],
},
{
icon: 'fas fa-cog',
title: 'Settings',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-pen-fancy',
title: 'My Signature',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/managesign',
},
{
icon: 'far fa-user',
title: 'Add User',
target: '_self',
pageType: 'form',
description: '',
objectId: 'lM0xRnM3iE',
},
],
},
]);
// TODO: Set the schema here
// Example:
// schema.addString('name').addNumber('cash');
const batch = [updateUserMenu, updateAdminMenu];
return Parse.Object.saveAll(batch, { useMasterKey: true });
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
// TODO: set className here
const className = 'w_menu';
const userMenu = new Parse.Query(className);
const revertUserMenu = await userMenu.get('H9vRfEYKhT');
revertUserMenu.set('menuItems', [
{
icon: 'fas fa-tachometer-alt',
title: 'Dashboard',
target: '',
pageType: 'dashboard',
description: '',
objectId: '35KBoSgoAK',
},
{
icon: 'far fa-newspaper',
title: 'New Document',
target: '_self',
pageType: null,
description: null,
objectId: null,
children: [
{
icon: 'fas fa-pen-nib',
title: 'Sign yourself',
target: '_self',
pageType: 'form',
description: '',
objectId: 'sHAnZphf69',
},
{
icon: 'fas fa-file-signature',
title: 'Request signatures',
target: '_self',
pageType: 'form',
description: '',
objectId: '8mZzFxbG1z',
},
],
},
{
icon: 'fas fa-folder',
title: 'OpenSignDrive™',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive',
},
{
icon: 'fas fa-address-card',
title: 'Reports',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-signature',
title: 'Need your sign',
target: '_self',
pageType: 'report',
description: '',
objectId: '4Hhwbp482K',
},
{
icon: 'fas fa-tasks',
title: 'In Progress',
target: '_self',
pageType: 'report',
description: '',
objectId: '1MwEuxLEkF',
},
{
icon: 'fas fa-check-circle',
title: 'Completed',
target: '_self',
pageType: 'report',
description: '',
objectId: 'kQUoW4hUXz',
},
{
icon: 'fas fa-edit',
title: 'Drafts',
target: '_self',
pageType: 'report',
description: '',
objectId: 'ByHuevtCFY',
},
{
icon: 'fas fa-times-circle',
title: 'Declined',
target: '_self',
pageType: 'report',
description: '',
objectId: 'UPr2Fm5WY3',
},
{
icon: 'fas fa-hourglass-end',
title: 'Expired',
target: '_self',
pageType: 'report',
description: '',
objectId: 'zNqBHXHsYH',
},
],
},
{
icon: 'fas fa-cog',
title: 'Settings',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-pen-fancy',
title: 'My Signature',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/managesign',
},
],
},
]);
const adminMenu = new Parse.Query(className);
const revertAdminMenu = await adminMenu.get('VPh91h0ZHk');
revertAdminMenu.set('menuItems', [
{
icon: 'fas fa-tachometer-alt',
title: 'Dashboard',
target: '',
pageType: 'dashboard',
description: '',
objectId: '35KBoSgoAK',
},
{
icon: 'far fa-newspaper',
title: 'New Document',
target: '_self',
pageType: null,
description: null,
objectId: null,
children: [
{
icon: 'fas fa-pen-nib',
title: 'Sign yourself',
target: '_self',
pageType: 'form',
description: '',
objectId: 'sHAnZphf69',
},
{
icon: 'fas fa-file-signature',
title: 'Request signatures',
target: '_self',
pageType: 'form',
description: '',
objectId: '8mZzFxbG1z',
},
],
},
{
icon: 'fas fa-folder',
title: 'OpenSignDrive™',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive',
},
{
icon: 'fas fa-address-card',
title: 'Reports',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-signature',
title: 'Need your sign',
target: '_self',
pageType: 'report',
description: '',
objectId: '4Hhwbp482K',
},
{
icon: 'fas fa-tasks',
title: 'In Progress',
target: '_self',
pageType: 'report',
description: '',
objectId: '1MwEuxLEkF',
},
{
icon: 'fas fa-check-circle',
title: 'Completed',
target: '_self',
pageType: 'report',
description: '',
objectId: 'kQUoW4hUXz',
},
{
icon: 'fas fa-edit',
title: 'Drafts',
target: '_self',
pageType: 'report',
description: '',
objectId: 'ByHuevtCFY',
},
{
icon: 'fas fa-times-circle',
title: 'Declined',
target: '_self',
pageType: 'report',
description: '',
objectId: 'UPr2Fm5WY3',
},
{
icon: 'fas fa-hourglass-end',
title: 'Expired',
target: '_self',
pageType: 'report',
description: '',
objectId: 'zNqBHXHsYH',
},
],
},
{
icon: 'fas fa-cog',
title: 'Settings',
target: '_self',
pageType: null,
description: '',
objectId: null,
children: [
{
icon: 'fas fa-pen-fancy',
title: 'My Signature',
target: '_self',
pageType: 'mf',
description: '',
objectId:
'remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/managesign',
},
{
icon: 'far fa-user',
title: 'Add User',
target: '_self',
pageType: 'form',
description: '',
objectId: 'lM0xRnM3iE',
},
],
},
]);
// TODO: Set the schema here
// Example:
// schema.addString('name').addNumber('cash');
const batch = [revertUserMenu, revertAdminMenu];
return Parse.Object.saveAll(batch, { useMasterKey: true });
};
@@ -1,40 +0,0 @@
/**
*
* @param {Parse} Parse
*/
exports.up = async Parse => {
const className = 'contracts_Template';
const schema = new Parse.Schema(className);
schema.addString('Name');
schema.addString('URL');
schema.addString('Note');
schema.addString('Description');
schema.addArray('Signers');
schema.addBoolean('IsArchive');
schema.addArray('Placeholders');
schema.addPointer('Folder', 'contracts_Template');
schema.addString('Type');
schema.addPointer('CreatedBy', '_User');
schema.addPointer('ExtUserPtr', 'contracts_Users');
schema.addBoolean('EnablePhoneOTP')
schema.addBoolean('EnableEmailOTP')
schema.addBoolean('SendinOrder')
schema.addBoolean('SentToOthers')
schema.addBoolean('AutomaticReminders')
return schema.save();
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
const className = 'contracts_Template';
const schema = new Parse.Schema(className);
return schema.purge().then(() => schema.delete());
};
@@ -1,23 +0,0 @@
/**
*
* @param {Parse} Parse
*/
exports.up = async Parse => {
// TODO: set className here
const className = 'contracts_Document';
const schema = new Parse.Schema(className);
schema.addBoolean('IsArchive');
return schema.update();
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
// TODO: set className here
const className = 'contracts_Document';
const schema = new Parse.Schema(className);
schema.deleteField('IsArchive');
return schema.update();
};
Binary file not shown.
+1 -3
View File
@@ -69,9 +69,7 @@ if (process.env.SMTP_ENABLE) {
export const config = {
databaseURI:
process.env.DATABASE_URI || process.env.MONGODB_URI || 'mongodb://localhost:27017/dev',
cloud: function () {
import('./cloud/main.js');
},
cloud: process.env.CLOUD || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret!
masterKeyIps: ['0.0.0.0/0', '::1'], // '::1'
+20
View File
@@ -0,0 +1,20 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+41
View File
@@ -0,0 +1,41 @@
# Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
+12
View File
@@ -0,0 +1,12 @@
---
slug: first-blog-post
title: First Blog Post
authors:
name: Gao Wei
title: Docusaurus Core Team
url: https://github.com/wgao19
image_url: https://github.com/wgao19.png
tags: [hola, docusaurus]
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+44
View File
@@ -0,0 +1,44 @@
---
slug: long-blog-post
title: Long Blog Post
authors: endi
tags: [hello, docusaurus]
---
This is the summary of a very long blog post,
Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.
<!--truncate-->
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+20
View File
@@ -0,0 +1,20 @@
---
slug: mdx-blog-post
title: MDX Blog Post
authors: [slorber]
tags: [docusaurus]
---
Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
:::tip
Use the power of React to create interactive blog posts.
```js
<button onClick={() => alert('button clicked!')}>Click me!</button>
```
<button onClick={() => alert('button clicked!')}>Click me!</button>
:::
Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

+25
View File
@@ -0,0 +1,25 @@
---
slug: welcome
title: Welcome
authors: [slorber, yangshun]
tags: [facebook, hello, docusaurus]
---
[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
Simply add Markdown files (or folders) to the `blog` directory.
Regular blog authors can be added to `authors.yml`.
The blog post date can be extracted from filenames, such as:
- `2019-05-30-welcome.md`
- `2019-05-30-welcome/index.md`
A blog post folder can be convenient to co-locate blog post images:
![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)
The blog supports tags as well!
**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
+17
View File
@@ -0,0 +1,17 @@
endi:
name: Endilie Yacop Sucipto
title: Maintainer of Docusaurus
url: https://github.com/endiliey
image_url: https://github.com/endiliey.png
yangshun:
name: Yangshun Tay
title: Front End Engineer @ Facebook
url: https://github.com/yangshun
image_url: https://github.com/yangshun.png
slorber:
name: Sébastien Lorber
title: Docusaurus maintainer
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
File diff suppressed because it is too large Load Diff
+242
View File
@@ -0,0 +1,242 @@
---
id: createtemplate
title: "Template Creation API"
description: "The Template Creation API allows users to create customizable templates, which serve as blueprints for generating documents with predefined structures. Upon successful template creation, the API returns a unique **templateId** that can be used to generate documents based on the specified template."
sidebar_label: "Template Creation API"
hide_title: true
hide_table_of_contents: true
api: eJztVt9v4zYM/ld0upddkSbp3T3l6bquKIIVbdCk2ENaDLLNxGplyZPk/FiQ/32kbCeOkxsaYI/rFT2bpEjqI/nRG+7F3PHBlHvIciU8OP7a4Qm42MrcS6P5gE9SYJNKzW4sCJKz69GQCaXM0rHCgXXMGxaTElhcOG8y+beIFLCd4w5bpjJOGRovgAnHIlVAbqX2js2MZXPQYNG3nrPExEUGpFhKn7LcQgIzqSFhztsi9oUF12XPOabhijgG52aF2kUq08AcO8xj6pSoBTyjHROs0PKvAtjFRW09TC4u0E54FgvNIqDbJHSZKh9oZBMJ0mFU8utyiOVMknHlqss73OThEkYPE4SuBKTWo9oCRnf+V5Os+WDDY6M9eqZHkedKxuFo780R8Bvu4hQyQU9+nQP6M9EbxB795JYCeYn1Qu2DyKBhhSAhimiFsGbCNyWwEphLMAoPu9z5tsMfjD/bzUgBgoIALyQsmdBYIjkngKTbAUe+f2u21HkhdnVttiW6fH66P9dV6n3uBr3e2hRWZmIO3dhk5IuSxiZu+BPWinXz8JS/Gfgxz4RU4VQH31PdEODgrDJFLnSox85phy8tlhewI7B9AcNJvJM7lfw+VQpWvVXhTjtHb156dSDaEgoqAUtNeB5CqzcXias7sRoFN4cxW+3cCN3WbOkwTimOqCt79Gu/T/+1qOVgZGm+d+Os1p8wsf9oQGKTNDsbOQfmYJtQoOjb13CjYNIGDRUZ5oUdc0J3hNPnz8hXolD+GKL6xk8VNhVU3/vfj9EZ6oVQMgkMNjHvoD+FWBn41BC75MaFqwqf4lvviGwC01JTTze8sKrR/4hlF/HR1DFKRI46DIWyt7ji21c6GeOA+PWY8C0hRO2f77BuTkgufwcakerWq0uUXHpKFIWSbpCCwC4MWVPJnvbsd1t3XM1eR4RU89HHKKbFMKdJo+KMn9BAgwU+Muv7CTsYGrr5zASYqsI/ItBjypjqiAAf71e8CP6Sur5PuWNpLbZOH+4gUpL8W/eq3kflhHTZi37RY5OFfUbbUUn97gYv+pJNH2doJoVif0DkkIpef6kBWS6XR33xJZy5w0VcRFiE3OzN50EYmqd5avfyBe/qwWbucTbGXpRxzcE/CdULxr1q7kUc5h4IdJqfUvSjfYggR2IAGqb9CF7fje4Rlj762rf+B1Lu3Q9vbh/Gt+SVhqcs0VW3j65QRCOXCd0IdPLLqF3jxqb//3PqnM+pimo8rHwPhTIs/lDQTcV70/buwdFMiRhRs9lQiGertlsSY6YWCWyKjwthJeFJb+ix4ikiysBx/KYs1+WE4pM5ghsor7WDtp36xDUCl/t/tX1tcPfocTxB46j6EMzCguJWLOkjEf8O+Av+Cx+U5CFQcJBvuBJ6XoRNxEu/9PMPphMdww==
sidebar_class_name: "post api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Template Creation API
</h1>
<MethodEndpoint
method={"post"}
path={"/createtemplate"}
>
</MethodEndpoint>
The Template Creation API allows users to create customizable templates, which serve as blueprints for generating documents with predefined structures. Upon successful template creation, the API returns a unique **templateId** that can be used to generate documents based on the specified template.
## Request
<MimeTabs
className={"openapi-tabs__mime"}
>
<TabItem
label={"application/json"}
value={"application/json-schema"}
>
<details
style={{}}
className={"openapi-markdown__details mime"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-mime"}
>
<h3
className={"openapi-markdown__details-summary-header-body"}
>
Body
</h3>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"Name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"sample template"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Note"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"Please review and sign this document"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Description"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"template description"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"URL"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"https://yourimage.com"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"signers"}
required={false}
schemaName={"signers[]"}
qualifierMessage={undefined}
schema={{"type":"array","example":["joe@gmail.com","john@gmail.com"],"xml":{"name":"signers","wrapped":true},"items":{"type":"string","example":"joe@example.com","xml":{"name":"signers"},"title":"signers"}}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"folderId"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"xjsba1GaxP"}}
>
</SchemaItem>
</ul>
</details>
</TabItem>
</MimeTabs><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
Template created successfully!
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"code"}
required={false}
schemaName={"int32"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int32"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"type"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"message"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{\n \"code\": 0,\n \"type\": \"string\",\n \"message\": \"string\"\n}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem><TabItem
label={"404"}
value={"404"}
>
<div>
Invalid API Token!
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+112
View File
@@ -0,0 +1,112 @@
---
id: delete-pet
title: "Deletes a pet"
description: "delete a pet"
sidebar_label: "Deletes a pet"
hide_title: true
hide_table_of_contents: true
api: eJydVW1r2zAQ/itCn1pI45SVfTBjrKyhhJW1LBv70Iai2OdY1JZUSW4bjP/77mTHTtIEtkFI7Ht97rmX1NyLlePxPU+08iLxji9GPAWXWGm81IrH+FaAByaYAc9HXBuwglSztFfeBY0RVpT4ZilgzRW+oIUw8vEJ1qiXFC0HkYLl+0lQYOG5khYwaiYKByPu/LqgCE6WBh9GHN5MoVMYDJIcSsHjmvu1CZbeSrXiTTPq03d1Pcp0g8AIn7/LjxUwmTKvWVvRDh5vq/+CI5WHVSg207YUvhV9vECAC4rvjFYOHHlcTCb0swtqpl5EgaiQeIZPFVBl3EFSWenXgeQNu/H9gmIi/bke+hKagtXGPOp4iOqBkIZTMPuyaVhlC2qQ98bFUSSMGWOvlZMrVYilGye6RKGMXs45pdrAmFPVbRE9mJ4BlHwLve+68XaGkjOvn0DtDQRVJlWmg7P0gelbTD/H9OzybsYw7X7TfubSMfyQOtVJVQKWRjqGfLM9b7YUDlKGSp9DUJL8w/icOQOJzGQSXMfsQT2ouS6BVQ6yqmCFVE8uflBn7P42QzMpCvYblk56WJxs2Hp9fX3H1mnwuZY+r5bMgtGD+SoIA6XbXv3LKdaKi1S622yOHZIJdJ05kioKxhF6de0lGnEYZTGswJd9J46UFxgaZ5DMuxZdXt/dIC0TjDUMxF9Ajm5mX6ff51OKSiPVtuh8PMFQKDLa+VKorURXYURdf1h2elsH1NjP9weoGy0Pbz4yhcAhajqodTft/TVD63jrAODU5giDDOqaxuGXLZqGxM8V2LBEiF1YKZY0f7gSqXT0PNykoyBPfnTn4pQduCUHMW92RNGCtPsdDmFYoe3D1SzQutuTf0N1LHWbYjjNffadI3I1vZn+nKJaVETr9la3bt0DYTpYzO66t0npm+7zQYdPtJN4MT735t3dO+bQ/5201lTdommaP8yWUbU=
sidebar_class_name: "delete api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Deletes a pet
</h1>
<MethodEndpoint
method={"delete"}
path={"/contact/{contact_id}"}
>
</MethodEndpoint>
delete a pet
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"contact_id","in":"path","description":"Pet id to delete","required":true,"style":"simple","explode":false,"schema":{"type":"integer","format":"int64"}}}
>
</ParamsItem>
</ul>
</div>
</details><details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Header Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"api_key","in":"header","description":"","required":false,"style":"simple","explode":false,"schema":{"type":"string"}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"400"}
value={"400"}
>
<div>
Invalid pet value
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+101
View File
@@ -0,0 +1,101 @@
---
id: delete-template
title: "Delete template by ID"
description: "Delete template by ID"
sidebar_label: "Delete template by ID"
hide_title: true
hide_table_of_contents: true
api: eJyVVF1r2zAU/StCTyukccrKHvy0soYSVpaydOyhDUWxr2NRW1IlOW0I/u8714mbNF1hg0Ck63O/zj26GxnVMsj0TkaqXaUiBTkfSOvIq6itmeQylTlVFOl2B5AD6ZRXNUyePTfS4AJYH+FB58BoA5NTscQ5p5B57TggjJNLYQsRSxK9By4qCkOUBxGtWJDYpuQ4np4a7XFMo29oIENcV5wtaPhyMfTiKpvDVKgqMCArqVYy3ci4dozUJtKSPKCF9bWKW9OXc9m2c44fnDUBfcPjfDTiv6N6zUpVOheoOzTOVRrFtANgz99jpz4nL4yNorCNAa497v6y62zf+mKNwKgNfJZ2z3bHMshLZdJDk80Bwy0Agfyqn0HjK2DLGF1Ik0Q5N8QMTdBLU6lFGGa2hlEnqzPJTQfKGq/jesZcbVvH14dHWh/wBst3GAb9fF9OYTmN9pFMP9+SFPrtutSmsJ2zjt18pkg/Q3pxcTMRSHvMw22pg8CPP+c2a2oysZMcmPPiyFssVKBc4CPLhj+y/fPwTARHmS501rkOxb25NzNbk2gCFU0lKm0eQ3pvTsXdtABMq0r8pkXQkeaferaen5/fsXXS+VzpWDYL4cnZPXzZGTtKD71eLyfoFW+jDtNihgnpjHaT+SBV0oETeGUWHGSRaYSENU90Z/p67MQKrBAaymX4bkQXVzfXoGWEWHtB/EPJyfXk2/jHbMxRWVLbEZ0NRwgFk7Mh1socJPpIxW9m/KqkSC8xARCaaXeVbXby3i8eeKeHKwQyLZGXIZsNz/+Xr9qWzU8NeQj1DseV8lotWHB4A7kOfM5fV8FRNcwlVIaCPv3cbZUT8X/b6K8N9e/F8GPBrmj4hmP3nN6sxXbeHrz0y/H1+Bact38AF7LlPw==
sidebar_class_name: "delete api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Delete template by ID
</h1>
<MethodEndpoint
method={"delete"}
path={"/template/{template_id}"}
>
</MethodEndpoint>
Delete template by ID
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"template_id","in":"path","description":"ID of the template that needs to be deleted","required":true,"style":"simple","explode":false,"schema":{"type":"integer","format":"int64"}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"400"}
value={"400"}
>
<div>
Invalid ID supplied
</div><div>
</div>
</TabItem><TabItem
label={"404"}
value={"404"}
>
<div>
Order not found
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
@@ -0,0 +1,510 @@
---
id: find-pets-by-status
title: "Finds Pets by status"
description: "Multiple status values can be provided with comma separated strings"
sidebar_label: "Finds Pets by status"
hide_title: true
hide_table_of_contents: true
api: eJztVk1v4zYQ/SuETl3AiZ120YNRFJtu0yDotgngFHtIjIKWRhY3EskVKTuGof/eN5RkyXYMBNs95pJYw/l4fPPB2UZeLl00fYgSE1cFae+i+ShKyMWlsl4ZHU2jv6rcK5uTcF76yomVzCtyIpZaLEjY0qxUQolYK5+J2BSFFI6sLKWH0PlSaUQYRcYSRPB4k8BnqnRyR979tpkFp1Bgk4I8lYxnG2l8QNF1x4qhfK2o3ESHAGd7uHwmvdCE4N4wwNhoB4AlBKkpRapyxICPkr5WCtJomsrc0QihNjmHhFaBc3q2uUkg8GXFp3FGhYym28hvbIOMrxbApBIUQSRXUuVyAS8w11XBxA5llnTS2DiTJ9G8rueMw1lAJMe+f5xM+N/+/VwVx+RcWuVixyJ84GIeGWN9aW2u4nAw/uLYaHsMWJalZPKUpyIE6xl4aOgGwsx480+ZhzJo7cziC8WeD0sO71UDVSUD3wpQloFWZk/6RvTz+8CjLCwTezGpR21aj0ncaaESl0tFEXRxIVoaJLzX/25YXgXld4PSraH6XOSs2dbkDhdOvPJB9eNA1pN4TH7raV0iZcw8F1c9yMkhmP3InWeA4tihd781xP+i8iR9x2wB5ZCoe9kotY39Yj8Ni9+S7waP0mhuHkOmfH2HHVFIfgjnjj9Za9hCrcVbB7110FsHvbKDWO/9S6/XjcbDrJK97aHBT3FVKr8Jz7206t8n4t9zfhSxCGSGF4UlBYKlz/Ax7raUXDkWOypX3b5QIafTKPPeuul4jMSdIyd4+ZcaN3PnWEwgVOPVRcT+u9gzbvEmbTsEfTlY9SdxPbQXfz6D5MybJ9LdQpKRxGoRrqN0aoJxy8stws8QXlze3QiEPUzLfaaQEBeOu3uF8RPWlANrsZAOC4xp8seHLP/p/EI4S7FK28l1Lh71o56ZgkTliBeGXOknN33UZ+LhNoWakrn4TAuHWp7/0LG1Xq+P2HoXbK6x1FULUZI1vfoyCAOlQ6vdxzvcFTtW4W7TGTKkYmozcyLUOCiP25VGxmGlweRVnNFW9OHQiEsQAxtCGtTm5fXdJ9Ayga++IF4Befzp5uPV37Mr9sol1aTo4nwCVzyPjPOF1INAf2CBdYJXWLHYiN2Wupfibb+ifaclui1MT89+bHOJEqzbi27bHuk3+dAjKPUM2Fm+3XINYfTVNYubVZo7J1GOe79fhE9e4tsW7RdBh07rt/tmKkyj0JwrWaowjXgYjLoeY6iN1SXWYesHVkfr794Iub66h66smJ5hbz+F3m5/sPfuSG8GvvebvgHAf+vRCYNfuDMxN37dqbcj75RBe79Om/nB1K3/A98eo4I=
sidebar_class_name: "get api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Finds Pets by status
</h1>
<MethodEndpoint
method={"get"}
path={"/documentlist"}
>
</MethodEndpoint>
Multiple status values can be provided with comma separated strings
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Query Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"status","in":"query","description":"Status values that need to be considered for filter","required":false,"style":"form","explode":true,"schema":{"type":"string","default":"available","enum":["available","pending","sold"]}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"[\n {\n \"id\": 10,\n \"name\": \"doggie\",\n \"category\": {\n \"id\": 1,\n \"name\": \"Dogs\"\n },\n \"photoUrls\": [\n \"string\"\n ],\n \"tags\": [\n {\n \"id\": 0,\n \"name\": \"string\"\n }\n ],\n \"status\": \"available\"\n }\n]"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem><TabItem
label={"application/xml"}
value={"application/xml"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"<0>\n <id>10</id>\n <name>doggie</name>\n <category>\n <id>1</id>\n <name>Dogs</name>\n </category>\n <photoUrls>string</photoUrls>\n <tags>\n <id>0</id>\n <name>string</name>\n </tags>\n <status>available</status>\n</0>"}
language={"xml"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem><TabItem
label={"400"}
value={"400"}
>
<div>
Invalid status value
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
@@ -0,0 +1,510 @@
---
id: find-pets-by-tags
title: "Finds Pets by tags"
description: "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing."
sidebar_label: "Finds Pets by tags"
hide_title: true
hide_table_of_contents: true
api: eJztVktv4zYQ/isET13AsezdRQ9GUTTdpkHQbRPAWfSQGAUtjSRuJJJLUnYMQ/+9MxRly3YMBH3ccpHN4TfvB2fLvSgcnz3wTKdNDco7vhjxDFxqpfFSKz7jvzeVl6YCRliWCsWWwIzVK5lBxtbSlyzVdS2YAyOs8Eh03kpVuDH74gLbdETf9+H7geXaMg/OI2TMR1wbQC7UdZOhtlyq7A68+3lzT6aNOMmswYMlO7dc4QFhvruUZOC3BuyGH5tN7MxrlssKmdmSEBa+NdIC6slF5WDEnd9UJA5NqvEenk2lMyR429BtWkIt+GzL/cYQTFgrSI70ULsBvfOXt227ICXOaOUgAN5PJvRzaJpr0hScy5uK7ZxHqalWHlNAeGFMJdNwkXx1xLR9hTV79x66OGH0Su31F1uFvEY+vfwKqadLS+q97EyV2UC2RFMKsAii0Ajfkb7/GIIkakNRm07aUczHcSQGKCytopDAEYsOQaExV3v8f2bLq0z5RWPVtAh9ritCxmLa2YU3XvoA/TSg7YN4GvwoaW0xZRR5qpz2bIUca+4lU+mMYjP+UxX/KpRnw3caLbRyGKh70YGcF7550eXD4jfgWYdlUjFfAp60pVoF1dRUumIlZCWWVahfUFknxekq44tTc1De0Jw7OhJq2EKR462D3jrorYNe2UGE+/jS63WjVqKSGb3lDP810BkPaWOl34RHWhj51xPQ/wW9iPh8l5oe9wJCdIUv8ZD0O0dCtoFd9U98g9mc8dJ742ZJgikbYzaUk4VCn9wYlw0kymQ15SS8Vzyn5u4StlO/LwQjfwOqhOjy8wVSLrx+AtVvESWIDPNKvkiV68AcI3KL6ueonl3e3TBUe7JqlBJT4cJ171QYPGHVOeJmS+FwRdJd5uiS6B/GU+YMpDKPM2vMHtWjmusaWOOAVoVKqic3e1QX7OE2R5gUFfsTlg6rePFdH631en0SrXeB5xoXtWbJLBi9hxeBGEI65Nod3qGvuD3V7jafY4ZkCjEzZ1QlAZzEZUakYZnBmSspo5H00zETFR+OaiTCoCovr+8+Y1gmKGtfEK8wOfl88+nqj/kVSaWS6lI0HU9QFE0i7Xwt1EDRr7hxOkY7Jy6JLC6WBwne7lez/30bjgXr4dknphJYmm0MwDY2zn5ZRzg9SiW6ROTtlkoLZ2HbErlbi6mhMuloGOzX3rPevbQ0v2hRaK9+C++mwIyHflwJK8PooeYf9W1FZnQ8l7j7Gj/gOtl1D0bG9dU9YkVDng/b+Sm0c/xD0vsrtRnIPuzzzgD6tqMzDD9QM+Ko+HEHjyPuHEP0r0dTdHDEtn8DnqqFeQ==
sidebar_class_name: "get api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Finds Pets by tags
</h1>
<MethodEndpoint
method={"get"}
path={"/document/"}
>
</MethodEndpoint>
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Query Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"tags","in":"query","description":"Tags to filter by","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"[\n {\n \"id\": 10,\n \"name\": \"doggie\",\n \"category\": {\n \"id\": 1,\n \"name\": \"Dogs\"\n },\n \"photoUrls\": [\n \"string\"\n ],\n \"tags\": [\n {\n \"id\": 0,\n \"name\": \"string\"\n }\n ],\n \"status\": \"available\"\n }\n]"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem><TabItem
label={"application/xml"}
value={"application/xml"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"<0>\n <id>10</id>\n <name>doggie</name>\n <category>\n <id>1</id>\n <name>Dogs</name>\n </category>\n <photoUrls>string</photoUrls>\n <tags>\n <id>0</id>\n <name>string</name>\n </tags>\n <status>available</status>\n</0>"}
language={"xml"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem><TabItem
label={"400"}
value={"400"}
>
<div>
Invalid tag value
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+125
View File
@@ -0,0 +1,125 @@
---
id: get-inventory
title: "Returns pet inventories by status"
description: "Returns a map of status codes to quantities"
sidebar_label: "Returns pet inventories by status"
hide_title: true
hide_table_of_contents: true
api: eJyVVG1r2zAQ/itCn1ZI47T9FsZoGaWElbUsHfvQhqHI51iNLanSOW0w+e+7U+wkzShsISTS3XPv96iVqBZRjh9l7nRTg8UoZwOZQ9TBeDTOyrH8AdgEG4UStfLCFSKiwiYK7Qgn0ImXRlk0aCDKgXQegmLLSU62C8CJXZFfF9akDBC9s5GA41aej0b89z5YbLSGGIumEjtPZKidRfLCeOV9ZXRSZM+RjVoZdQm14hOuPZAbN38GjWSo8twwVFX3gR2mLPc4Q24XEAhYuFAr3IouzuUmfQYygm6CwTX1iEOb30vg82xDbaoBS9dVSR68wpIumQ6gEPqGSvYRVhBictGEijAloo/jLKNahpSVjWZhKzWPQ+1qEppsdSY5Qh99yvVtE9/lsKuBJN+Au2tVzfe3U5KcolsCd85wV0tQOVXJBRlbuGRssGL0HYWfUnhxdT8RFPZ4+g+liYK+rO5rSs0X1DFxZC3mKkIuSIklJCXLL4ZnInrQpujmNhRP9slOXQ2iicCzroxdxvGTPRWPdwXBjKrEL5hHgzD71Hfr9fX1r26dJJsbg2UzFwG828MXSZhaemi1u5xQrQihjnfFlCZkNHST+SBUlsBZt41Kp22ktTM80U50eWwkqeW0riQEhncjurq5v6W2jMjXfiH+IeXsdvL1+vv0mr3ySm1HdDYckSsSeRexVvYgUM9dDyhMR0RigJivOxYfz7vdU+0/id9tI8IbZr5StHebrrq2o8ajPKIGbXhJKbOmbXl1foZqs2HxSwMh8YzqVMGoOe8qsW7QrzJzKdFAXtGD4ZlmK1U1Wz4cPRDvuHpz/cDPQsMJHVJomSjUHdh7r7LrA9/vubVNgH83gw8MPjMBiJ5fdvCt5kODrr4ezW2c0Uv0B0/s87M=
sidebar_class_name: "get api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Returns pet inventories by status
</h1>
<MethodEndpoint
method={"get"}
path={"/createdocument"}
>
</MethodEndpoint>
Returns a map of status codes to quantities
## Request
<div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
name={"property name*"}
required={false}
schemaName={"int32"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int32"}}
collapsible={false}
discriminator={false}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+499
View File
@@ -0,0 +1,499 @@
---
id: get-pet-by-id
title: "Find pet by ID"
description: "Returns a single pet"
sidebar_label: "Find pet by ID"
hide_title: true
hide_table_of_contents: true
api: eJztVktv4zYQ/isETxvAsZw26MEoiqa7aWB00QTrFD0kxoKWRhI3EsklqSSGoP/eGUqy5BcQtD3mYovkNw9+M8OZmnuROT5/4LFWXsTe8dWEJ+BiK42XWvE5/wK+ssoxwZxUWQHMgOcTrg1YQZBFgqAM/B343za4mHAjrCjBgyXNNVe4QEhn4askiCTNRvic75tbfGI6JRvMa2aDbcRY+F5JC2jK2wom3PlNQUqdLA1+TDi8mkInuJWKwhEgzqEUfF5zvzGElMpDBhahqbal8O3WT5e8aVak3xmtHDiS+GE2o79dv1wVx+BcWhVse3VURrcC5QkvjClkHA6ib46E6pEbww0eWkaQp1x7/ZctAumdm3r9DWLi11gy42XrEpL2hqsQDSIQMr+YNZOO+a2c8xYjOEbxRGeZBI5YdBwybTcj/P/my5tc+aQxExuEvpYFIfu06f3CEy99gH4c7Q0kDtqFtWLDt5peLIamzx0UkR5Kd8yZXcu9ZnSKbIdC+bcm/hOVJ+k7ZAu9HBN1L1qQ88JXR6+8m+RUdi2WScV8DrjSNtSXqkpKXfEsZCHWoeYMqKTV4nSR8NWhO/RUjNy5oyWux5XSCbwXynuhvBfKbqEQ7PJYL1qoZ1HIhGGvdBXVEhIasJeHWFTFlPYs1ZVK2jtCXFnpN6E5CyO/PgF9r6gPYtvOddfQQyfHDj3nUde7o3po4g3dBuxz3+UrjP+c594bN48iDPIU46eczBSy4KaxLnFTRs8XnOz0Piyp7NsQbz0ZUsfIP4BypyPp9Rx3zr1+AtWPEDmIBDOBriVVqoNwx+Etml+ieXZ1t2Bodj+E97nE4LlwnOi4KrGNhycJqbJsT5qthYOE6TbWdEj7P04vmDMQy7R7zabsUT2qpS6BVQ5oViikenLzR3XOHm5ThElRsL9h7TDvVx96tl5eXg7YOgsyN9Ln1RrnIKMHeBY2A6Vjqe3iDO+K01fpbtMlRkjG0EXmhKkogKNumsHwEo34GstiGNt+3ReihMNHHDdhlMdXN3efkZYZ6hoS4g0uR58XH6//XF6TVkqpNkQX0xmqordLO18KNTL0u1RJmBLXGyyD/eDWw1x2an7tcszDq49MITCbms7nukv77VCM6PloesX0zdEfAtQ15QU+fU1D298rsKGU8BLCylD9VBuJdPSdbKfTk85++NJ1vzN2fBA+6nZfL4qKBZ+Gilb4GcppPHg3K0R3NUOOtYArnGyNH4keTLI7T8PN9T1iRUUcjWv1KdRq90Haj7q1W8StA/TbTE4I/EyVhu/AL1t4e3JSoLtfjyaK8MVt/gG/tF3l
sidebar_class_name: "get api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Find pet by ID
</h1>
<MethodEndpoint
method={"get"}
path={"/contact/{contact_id}"}
>
</MethodEndpoint>
Returns a single pet
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"contact_id","in":"path","description":"ID of pet to return","required":true,"style":"simple","explode":false,"schema":{"type":"integer","format":"int64"}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{\n \"id\": 10,\n \"name\": \"doggie\",\n \"category\": {\n \"id\": 1,\n \"name\": \"Dogs\"\n },\n \"photoUrls\": [\n \"string\"\n ],\n \"tags\": [\n {\n \"id\": 0,\n \"name\": \"string\"\n }\n ],\n \"status\": \"available\"\n}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem><TabItem
label={"application/xml"}
value={"application/xml"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={true}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"doggie"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
category
</strong><span
className={"openapi-schema__name"}
>
category
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64","example":1}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"Dogs"}}
>
</SchemaItem>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"photoUrls"}
required={true}
schemaName={"string[]"}
qualifierMessage={undefined}
schema={{"type":"array","xml":{"wrapped":true},"items":{"type":"string","xml":{"name":"photoUrl"}}}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
tags
</strong><span
className={"openapi-schema__name"}
>
tag[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"status"}
required={false}
schemaName={"string"}
qualifierMessage={"**Possible values:** [`available`, `pending`, `sold`]"}
schema={{"type":"string","description":"pet status in the store","enum":["available","pending","sold"]}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"<root>\n <id>10</id>\n <name>doggie</name>\n <category>\n <id>1</id>\n <name>Dogs</name>\n </category>\n <photoUrls>string</photoUrls>\n <tags>\n <id>0</id>\n <name>string</name>\n </tags>\n <status>available</status>\n</root>"}
language={"xml"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem><TabItem
label={"400"}
value={"400"}
>
<div>
Invalid ID supplied
</div><div>
</div>
</TabItem><TabItem
label={"404"}
value={"404"}
>
<div>
Pet not found
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+219
View File
@@ -0,0 +1,219 @@
---
id: get-template
title: "Get template by ID"
description: ""
sidebar_label: "Get template by ID"
hide_title: true
hide_table_of_contents: true
api: eJyVVU1v2zAM/SuaLluBNG63nXJasRZBsKItlg47tMUg23Ss1pY8ic4HDP/3kYqduGk3rECAWBT5SJF8ZCNRLbyc3EmEsioUgpcPI5mCT5yuUFsjJ1KOpK3AKT7OUhIsAG87dbqrlFMlIDjGaaShA+n0eL90SjqacSqFuTwEn50Lm4leW2CuUBiA1Au0IgaRASY5MIaD37V29DlBV8NIetwU7MlrsuVAYF0VNiVRpgrPCmRYKjlpJG6qoIlOmwVpZtaVCrcSErTtA8P7yhpPCSCDjycn/Pc8VF8nCXif1YXY5YPAEmsQDLK+qqpCJ+EievRs1LyMwsaPkCAnzjEM6q3Lq5C3f8e6lcBahReTKHzssifbkbyy+GaYmwKUB+FgqWEllEmF1wtDtdBepDapS34eYZ8P0/E2F7sCD1NKkD++X74VKkes/CSKNrZ2ulQLGCe2ZCwOOnThDk85pzZD4zv5aOHLolS6CFYjOudmIKBGWJcFQ3R93IOO5MpRefv2I3ea3uRfC34fKjvrTp2718EJDTUWz0QtZ6FIwTHl3pah9aOP1elUrW8CzHOfiQOqw7BleteHNy0bf36NCT37hbEoMlub9J0Mup9f6s7MUhU6FWc3M3Frn8C8ex+iopGR226ahClCw2Eio9591AwmSEsKHtyynzG1KwaNQGUZE5MMp65QsedUk1BHy1PJzPaQUKfgZs5M3JKNbn89wWbYKpX+BtwrXZrWxyQ5Rg64n185KCpHCF6bzAbjLnXX5H7OnOFXktvDKXfLVKIfX/eMCmOCsufEgbWIiY2psMxACJcs/zQ+Fb6CRGfdhBmLe3Nv5rYEUXvgqVRo8+Qn9+ZY3F1npKZVIX5C7KlTHz702VqtVi+ydRRsphrzOqYxUNm9+iIIQ0qHVrvDEb2VZn/pr7M5VUgnPUX/4ioKylE3N1US5iYw/7gDt6Ivh0bcXDRYSQiDTj6b3lxSWk4Ia98Q/xFydDn7enE1v2BUbqltiU7HJwRFosp6LJUZOJoC7jdUvBGz88MCN/stwOuy6ymENUZkpcOoCzE2XaPvFy6pT4bLkho2pwhYpWm4E364om1Z/LsGRy17R59L5bSKw0QjvmnP3+lu8f01tA/fux16JP5/7776mJ41hilDBK9h+/JAqmfLv30g9Y46HO1W44xWaYUD2xerk5m7mxHTi1vi3R8/Pvp4
sidebar_class_name: "get api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Get template by ID
</h1>
<MethodEndpoint
method={"get"}
path={"/template/{template_id}"}
>
</MethodEndpoint>
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"template_id","in":"path","description":"ID of template that needs to be fetched","required":true,"style":"simple","explode":false,"schema":{"type":"string","format":"strng"}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"Name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"sample template"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Note"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"Please review and sign this document"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Description"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"template description"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"URL"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"https://yourimage.com"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"signers"}
required={false}
schemaName={"signers[]"}
qualifierMessage={undefined}
schema={{"type":"array","example":["joe@gmail.com","john@gmail.com"],"xml":{"name":"signers","wrapped":true},"items":{"type":"string","example":"joe@example.com","xml":{"name":"signers"},"title":"signers"}}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"folderId"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"xjsba1GaxP"}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{\n \"Name\": \"sample template\",\n \"Note\": \"Please review and sign this document\",\n \"Description\": \"template description\",\n \"URL\": \"https://yourimage.com\",\n \"signers\": [\n \"joe@gmail.com\",\n \"john@gmail.com\"\n ],\n \"folderId\": \"xjsba1GaxP\"\n}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem><TabItem
label={"400"}
value={"400"}
>
<div>
Template not found!
</div><div>
</div>
</TabItem><TabItem
label={"404"}
value={"404"}
>
<div>
Invalid API Token!'
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+26
View File
@@ -0,0 +1,26 @@
# Overview
OpenSign™ API offers a robust suite of functionalities for digital document management and electronic signatures. Designed to cater to a wide array of business needs, the API facilitates the creation, signing, and management of digital documents. It ensures secure and efficient processes, complying with international legal standards for electronic signatures.
# Key Features
- **Document Creation**: Allows for the generation of digital documents directly through the API.
- **Template Creation**: Supports the creation and management of document templates for consistent use across various applications.
- **Electronic Signature Integration**: Provides capabilities for incorporating electronic signatures into documents.
- **User Management**: Facilitates the management of user accounts, permissions, and roles within an application.
- **Contacts Management**: Enables efficient handling of contact information and integration with document processes.
- **Compliance and Security**: Ensures all operations adhere to global legal standards for electronic signatures and data security.
- **Customization and Flexibility**: Offers highly customizable workflows, tailored to meet diverse organizational requirements.
- **Cross-Platform Compatibility**: Assures seamless functionality across various platforms and devices.
# Target Audience
- **Developers and IT Professionals**: Implementing digital document management and electronic signature solutions.
- **Businesses and Enterprises**: Seeking efficient and secure digital document workflows.
- **Legal and Compliance Teams**: Requiring digital solutions compliant with legal standards for signatures and document management.
# Usage Scenarios
- Streamlining contract creation and signing processes in corporate environments.
- Managing user permissions and contacts for large-scale document workflows.
- Utilizing templates for standardized document processes in legal, financial, and governmental sectors.
@@ -0,0 +1,111 @@
---
id: opensign-api-v-1
title: "OpenSign API v1"
description: "This is API documentation for OpenSign API v1 based on the OpenAPI 3.1 specification."
sidebar_label: Introduction
sidebar_position: 0
hide_title: true
custom_edit_url: null
---
import ApiLogo from "@theme/ApiLogo";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
import Export from "@theme/ApiExplorer/Export";
<span
className={"theme-doc-version-badge badge badge--secondary"}
>
Version: 1.0.0
</span>
<h1
className={"openapi__heading"}
>
OpenSign API v1
</h1>
This is API documentation for OpenSign API v1 based on the OpenAPI 3.1 specification.
Some useful links:
- [Official Website](https://www.opensignlabs.com)
- [Github repo](https://github.com/opensignlabs/opensign)
<div
style={{"marginBottom":"2rem"}}
>
<h2
id={"authentication"}
style={{"marginBottom":"1rem"}}
>
Authentication
</h2><SchemaTabs
className={"openapi-tabs__security-schemes"}
>
<TabItem
label={"API Key: api_key"}
value={"api_key"}
>
<div>
<table>
<tbody>
<tr>
<th>
Security Scheme Type:
</th><td>
apiKey
</td>
</tr><tr>
<th>
Header parameter name:
</th><td>
x-api-token
</td>
</tr>
</tbody>
</table>
</div>
</TabItem>
</SchemaTabs>
</div><div
style={{"display":"flex","flexDirection":"column","marginBottom":"var(--ifm-paragraph-margin-bottom)"}}
>
<h3
style={{"marginBottom":"0.25rem"}}
>
Contact
</h3><span>
[contact@opensignlabs.com](mailto:contact@opensignlabs.com)
</span>
</div><div
style={{"marginBottom":"var(--ifm-paragraph-margin-bottom)"}}
>
<h3
style={{"marginBottom":"0.25rem"}}
>
Terms of Service
</h3><a
href={"http://www.opensignlabs.com/terms/"}
>
http://www.opensignlabs.com/terms/
</a>
</div><div
style={{"marginBottom":"var(--ifm-paragraph-margin-bottom)"}}
>
<h3
style={{"marginBottom":"0.25rem"}}
>
License
</h3><a
href={"http://github.com/opensignlabs/opensign/LICENSE"}
>
AGPL 3.0
</a>
</div>
File diff suppressed because one or more lines are too long
+118
View File
@@ -0,0 +1,118 @@
import {SidebarConfig} from "@docusaurus/plugin-content-docs/src/sidebars/types";
const sidebar: SidebarConfig = [
{
"type": "doc",
"id": "API-docs/opensign-api-v-1"
},
{
"type": "category",
"label": "templates",
"items": [
{
"type": "doc",
"id": "API-docs/createtemplate",
"label": "Template Creation API",
"className": "api-method post"
},
{
"type": "doc",
"id": "API-docs/get-template",
"label": "Get template by ID",
"className": "api-method get"
},
{
"type": "doc",
"id": "API-docs/update-template",
"label": "update template by ID",
"className": "api-method put"
},
{
"type": "doc",
"id": "API-docs/delete-template",
"label": "Delete template by ID",
"className": "api-method delete"
},
{
"type": "doc",
"id": "API-docs/template-list",
"label": "Get template list",
"className": "api-method post"
}
]
},
{
"type": "category",
"label": "users",
"items": [
{
"type": "doc",
"id": "API-docs/update-pet",
"label": "Update an existing pet",
"className": "api-method put"
},
{
"type": "doc",
"id": "API-docs/add-pet",
"label": "Add a new pet to the store",
"className": "api-method post"
}
]
},
{
"type": "category",
"label": "documents",
"items": [
{
"type": "doc",
"id": "API-docs/find-pets-by-status",
"label": "Finds Pets by status",
"className": "api-method get"
},
{
"type": "doc",
"id": "API-docs/find-pets-by-tags",
"label": "Finds Pets by tags",
"className": "api-method get"
},
{
"type": "doc",
"id": "API-docs/get-inventory",
"label": "Returns pet inventories by status",
"className": "api-method get"
}
]
},
{
"type": "category",
"label": "contacts",
"items": [
{
"type": "doc",
"id": "API-docs/get-pet-by-id",
"label": "Find pet by ID",
"className": "api-method get"
},
{
"type": "doc",
"id": "API-docs/update-pet-with-form",
"label": "Updates a pet in the store with form data",
"className": "api-method post"
},
{
"type": "doc",
"id": "API-docs/delete-pet",
"label": "Deletes a pet",
"className": "api-method delete"
},
{
"type": "doc",
"id": "API-docs/upload-file",
"label": "uploads an image",
"className": "api-method post"
}
]
}
];
export default sidebar;
+297
View File
@@ -0,0 +1,297 @@
---
id: template-list
title: "Get template list"
description: "Get template list"
sidebar_label: "Get template list"
hide_title: true
hide_table_of_contents: true
api: eJytVm1P2zAQ/iuWPw2p9GWb9qGfxhhjaGiglWkfSoWc5JIYHDuzHdqq6n/fnfPSUBgwaYBQcr7nXp87Z8O9yByfzrmHolTCg+OLATclWOGl0WcJn3ZH59J5PuAWflfg/CeTrPl0wxNwsZUlaaNuac29TIBFoMySlcKKAjxY5g3LwDNdFRG+mZTt/A14bLQH7cmaKEsl4+B7dOvI5Ia7OIdC0JNfl4BOTHQLMYWC3jBSL9EKnipZSN9Tk2g1A4t6qbGF8LXo3VsUwEqge1SajLcD7u5k+Y+48RZxq0IRTGOOqKOwPBEVBU+89OqhbEsAC6402tXhJpCKSvnHNXRVHINzaaVY14j/VyWZ9HSct1Jn/Uw7SZcqX02+Rrpwby8zSu3nj/OnDOzUc+9LNx2N2g5XDuwwNgWBv4dSPYd24aGjRwAZ/wKo1Wba1JDP/YK+DkmRIfKLUQn2/llQGnQ6yExmGqzrYYS1Yo0Qiebdyy2pxWfJixz88P51Rbw1GFiPhm2WN22odHhsAUWf1q8sUEzqps36Efv7Ddt3G9iP8oc0P8V90FlX9W7BZZEb2jmlCe+l8Dm+dVxq1JBR96Hi8w2vrOqRDidjiKXVDhNVInJEPBTK0f2EbxeEjCsr/XpG01JXH09v7qBfBpR8A+pfk9vqECWH3twBzaGk4HMQRBPKigbwx24nnrSl6xbSZNyuGFo2Uqcm+GqKdIHRUlvY0eUZwyj3y3SVS8fwj44TE1cF7oAw+QyZwfbQLBIOEoaHPodwSPJ3wwlzJcQybZbGkF3raz0zBTCcTlo0Suo7N73Wh2x+kaKaFIr9gsghgxdv2uIul8tHxT0ImFPp8ypiFkqzU8+CMHSgj+peDjBXvBsKd5HOsKEybrfHX1yNgvKoWYUiDqsQd54kAjSij/sg4iPuShRCj61Hp5fnWJYx2trx5xUhj87Pjk++z07IKjGwbtFkOEZTKCLWFkL3HD1F8uTJ5eRh5Ueoh/TaNlFtGv7vbudgAWmc03igfLOhhv+0arslMZLQIpHn+HgvrBQRMWy+QHsNX2lgAtf5cX2bHF6Rd1JXVU39vZtlO2gRR3grlf5Z3UVvgi8vZleoHDWfCYVJCGPFkj4h8P+UX+Mvp48NshBGMchxboTOKpGFTRbs0s8fliv8NQ==
sidebar_class_name: "post api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Get template list
</h1>
<MethodEndpoint
method={"post"}
path={"/templatelist"}
>
</MethodEndpoint>
Get template list
## Request
<MimeTabs
className={"openapi-tabs__mime"}
>
<TabItem
label={"application/json"}
value={"application/json-schema"}
>
<details
style={{}}
className={"openapi-markdown__details mime"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-mime"}
>
<h3
className={"openapi-markdown__details-summary-header-body"}
>
Body
</h3>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
<div
style={{"marginTop":"1rem","marginBottom":"1rem"}}
>
provide below parameter to get number of templates
</div>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"limit"}
required={false}
schemaName={"int32"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int32","example":10}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"skip"}
required={false}
schemaName={"int32"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int32","example":0}}
>
</SchemaItem>
</ul>
</details>
</TabItem>
</MimeTabs><div>
<div>
<ApiTabs>
<TabItem
label={"default"}
value={"default"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"id"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"x1Hbnms2Pg"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"URL"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"https://templateuser.com"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"sample template"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Note"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"template note"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Description"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"template name"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Folder"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"folder name"}}
>
</SchemaItem><SchemaItem
collapsible={true}
className={"schemaItem"}
>
<details
style={{}}
className={"openapi-markdown__details"}
>
<summary
style={{}}
>
<span
className={"openapi-schema__container"}
>
<strong
className={"openapi-schema__property"}
>
Signers
</strong><span
className={"openapi-schema__name"}
>
object[]
</span>
</span>
</summary><div
style={{"marginLeft":"1rem"}}
>
<li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}
>
Array [
</div>
</li><SchemaItem
collapsible={false}
name={"objectId"}
required={false}
schemaName={"int64"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int64"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"joe"}}
>
</SchemaItem><li>
<div
style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}
>
]
</div>
</li>
</div>
</details>
</SchemaItem><SchemaItem
collapsible={false}
name={"CreateBy"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","example":"template creator name"}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{\n \"id\": \"x1Hbnms2Pg\",\n \"URL\": \"https://templateuser.com\",\n \"Name\": \"sample template\",\n \"Note\": \"template note\",\n \"Description\": \"template name\",\n \"Folder\": \"folder name\",\n \"Signers\": [\n {\n \"objectId\": 0,\n \"Name\": \"joe\"\n }\n ],\n \"CreateBy\": \"template creator name\"\n}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
@@ -0,0 +1,117 @@
---
id: update-pet-with-form
title: "Updates a pet in the store with form data"
description: ""
sidebar_label: "Updates a pet in the store with form data"
hide_title: true
hide_table_of_contents: true
api: eJy9VU1v2zAM/SuCTiuQxi32cQiGYcXWFcWGNVha7LAGhWLTsRBb0iS6aRD4v4+U7SRN2yG7DAgSm3okH8knZi1RzYMc/ZKpNahSDHI6kBmE1GuH2ho5knIgrQOv+PUyI0PtMoUwBvypsfhifUUIp7yqAMFzsLU09ELILuidzgiiOZhTWMj9DJefhc2FAxRYKBQGIAsCrZiBaHOxu4fftfb0OEJfw0AGXJWcI+jK0cNAwoMrbUamXJWBAWkBlZKjtcSVY6Q2CHPwBM2JtMLW9O6NbJrBhnL86cj+rsGvnrD9Toh/4tvz6Qjnbcc2dLty9tkG9NrMH3ELqLAOf2c3iZj/yW/KsYKzJkDg8zcnb/lnb8TmXpU6E9q4GrkoGSCtvcZV1Ity+m4B/DzleKSkwrLUnA0Y1UWqGcmk01Oy3gqrkRzK3/fKq31JyALRhVGSKOeGJF4T9NyUahaGqa3IqJP7U8mJehITrq6lv6GyqZQsX4E73Y3h4Zgsx2gXYPpZFKAyUhbXpU1uo7PG2M4rSj+h9OJsfCko7f7ArgsdBH34OLNpXQGVxmeCBiH2vMVMBcgEHWIB8ZDtr4enIjhIda7T6DoUt+bWTCwJtQ6Q16UotVmE0a05Fr+ucoJpVYqfMAsaYfqq79ZyuXzSraPoc0E3vZ4JD85u4fNojC3d9dq8HFGttBGqcJVPaEI6hW4yL6RKIjghr2683EYSnS63q+TjvpOklpcUmtTH8G5EZxfjb9SWE4q1FcQBlJNvl5/Ov0/OOSpLqh3R6fCEQpGJ5Vgps5PoJt6nIFS8brqdS0DrQSwpF8+wEgRR+3Nfx4po1u2G7aSG8ICJKxWJqumorzv1b1Y0oUc7i5VUXPAtIcB6zfK48WXTsLldEHwpMh3UrNy56y9SOXC5PUs33pp+gdJ1rxkieX8dnv/g9fUXBps1ueUw5RevmcQ/NuTVj25PHomD/qae5dUvErPaZdXz3RlmM212tt/4anJNKFXz/HfX0SKuo+6B63k2weM91ebib57Isw7veZnQqvuwgbcnLzp0a69Hc7HTpmn+AJTE1qQ=
sidebar_class_name: "post api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
Updates a pet in the store with form data
</h1>
<MethodEndpoint
method={"post"}
path={"/contact/{contact_id}"}
>
</MethodEndpoint>
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"contact_id","in":"path","description":"ID of pet that needs to be updated","required":true,"style":"simple","explode":false,"schema":{"type":"integer","format":"int64"}}}
>
</ParamsItem>
</ul>
</div>
</details><details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Query Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"name","in":"query","description":"Name of pet that needs to be updated","required":false,"style":"form","explode":true,"schema":{"type":"string"}}}
>
</ParamsItem><ParamsItem
className={"paramsItem"}
param={{"name":"status","in":"query","description":"Status of pet that needs to be updated","required":false,"style":"form","explode":true,"schema":{"type":"string"}}}
>
</ParamsItem>
</ul>
</div>
</details><div>
<div>
<ApiTabs>
<TabItem
label={"405"}
value={"405"}
>
<div>
Invalid input
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
File diff suppressed because it is too large Load Diff
+178
View File
@@ -0,0 +1,178 @@
---
id: update-template
title: "update template by ID"
description: "update template by ID"
sidebar_label: "update template by ID"
hide_title: true
hide_table_of_contents: true
api: eJyVVttu2zgQ/RWCTyngWA422Ac9bbfNBsYWiVGn2IckCCiJsplIpJakfIHgf+8ZSrJlOwUaxzCo0eFcz8yk4V4sHI8fuZdlVQgvHX8ecVNJK7wyeprxmNdVhhcPHYCPeCWsKKWXlm42XOMBsF7Di8qAURqiSvglzpl0qVUVKYRw+pWZnPmlZMZm0uIkPNNSZo55wxLJWnukxMr/a2VxjL2t5Yg7vy3IlFMwRZ7ITVWYDKJcFI4A6VKWgscN99uKkEp7uZAW0NzYUvhW9Oc13+2eW/3S+b9NtqU7x35W1qxUJuFRYdZsHzM52XrI9jljFwihkMJ5ZrQcYPsAPsGB1MAX7cmQqKpCpSHD0asja8256yZ5lamndFuqh1eoDd7ehWzvUc5bpRfD+PYSuREhTRCFw95fvhvxO+M/rGZGIUoEtVJyzYTOmFMLjQIqxzKT1iWFB91fh3n8mIneRTasBVT+Ywpwhej4MX2bV5eIq1uxmaHiI+6VPzLzMiDtS0I02O0IZ6WrjHZtxq8nk3N2TPVKFCpjYLOrqZxgKS5eT67PsfeB59p4lptaZ8GTY8QJoViyhWIEAhYtDfVgVQcmUD/FPOpxUTPwfweAk3bVt2VtC2CX3lcujiJQbgwaaapYIRI3Tk0JoYpWV5xawcm0tspv50TDNm68fXmT20HKIfkXglHf8ptLSC69eZO6b/mlFAg2hEjM/n7osJu+KD2Hz2jZs/L3iHbCs/epM2TOERnI3dyE2DpO3CM7czLzeTZlyMppjR7IOr70uncitDCqatnJbZYggAzTIAw6eknyP8ZXzFUyVXnX/WP2pJ/03JSYek7mdcEKpd9c/KQv2eN9DpgSBftPJk55+XzRF3O9Xp8V81O4c6v8sk6Qucoc4IsgDBUf3to/0HTCtCrdfT4HgVQqO+L8wlQUwFE300QaZhqGlyLCdaK/Ti9RyjH0IAwU6Bj0+Xb2DWmZQNeBr7/hcvRt+uXmbn5DWonxbYmuxhOogqgyzpdCDwz9qsOyd2eVlxsfAajC8AmeNV33HVYlbsfDpYcuWsIuQZqG6v/DFrsdidEDFn30iONKWCUSIhxaNFOOztl+f514s18Z/OJ7v0nYB/bnu9H0vaypkTHEanrCMbT60RbfPQPeNTS52yK+tE5dPpCeg4aznUZTZT+/Zj8egE26RVuGnc2tWNOSx2/Mn/DH6T8PUhDGT5A3vBB6UYsF4Vu19PkJodUD3g==
sidebar_class_name: "put api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
update template by ID
</h1>
<MethodEndpoint
method={"put"}
path={"/template/{template_id}"}
>
</MethodEndpoint>
update template by ID
## Request
<details
style={{"marginBottom":"1rem"}}
className={"openapi-markdown__details"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
>
<h3
className={"openapi-markdown__details-summary-header-params"}
>
Path Parameters
</h3>
</summary><div>
<ul>
<ParamsItem
className={"paramsItem"}
param={{"name":"template_id","in":"path","description":"ID of the order that needs to be updated","required":true,"style":"simple","explode":false,"schema":{"type":"integer","format":"int64"}}}
>
</ParamsItem>
</ul>
</div>
</details><MimeTabs
className={"openapi-tabs__mime"}
>
<TabItem
label={"application/json"}
value={"application/json-schema"}
>
<details
style={{}}
className={"openapi-markdown__details mime"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-mime"}
>
<h3
className={"openapi-markdown__details-summary-header-body"}
>
Body
</h3>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
<div
style={{"marginTop":"1rem","marginBottom":"1rem"}}
>
provide below parameter to update templates (at least one parameter required)
</div>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"Name"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"sample template"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Note"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"Please review and sign this document"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"Description"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"template description"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"FolderId"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string","format":"string","example":"xjsba1GaxP"}}
>
</SchemaItem>
</ul>
</details>
</TabItem>
</MimeTabs><div>
<div>
<ApiTabs>
<TabItem
label={"400"}
value={"400"}
>
<div>
Invalid ID supplied
</div><div>
</div>
</TabItem><TabItem
label={"404"}
value={"404"}
>
<div>
Order not found
</div><div>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+183
View File
@@ -0,0 +1,183 @@
---
id: upload-file
title: "uploads an image"
description: ""
sidebar_label: "uploads an image"
hide_title: true
hide_table_of_contents: true
api: eJyNVG1v2jAQ/iuW+2WVgND2G5qmsaqrqlWjGkz70KLJcS7EJbE922mLEP99d05CU1akIQTJvT5399xteRArzyf3XBodhAyeLwc8Ay+dskEZzSecD7ix4AS93mQoqG1pRPZVlYAqB39q8OGLyTZ8so1hQAd6FNaWSka3xMgAYeiDA1GRzssCKkFPYWMBY6JK6RXGy42rBPrzVGnhNnyHH8rirdEePLmcj8f09xalr6UE7/O6ZHu0GO4InkdPTu/gMOkjyICO1lGYoJqU0mTQs1IYdAWuDxdFF+ccoTYmh4WhokJ4YvWeDpUvVUkKLSpSnJxkkIu6DDGgCiUJp1b9aNsQu4IqD7J2KmDn76k+9XsN9LzcLSldKAyNyxofCxKhwLekHXSpotSDewLnY4DaIQZehGD9JEmwXSNsgfZqpUuR+pE0FQpV8nTGKX6Xe04tbLq0R7CvECXfUDDoCnsZomQYzBpoOIoGV4DIsJVUjtK5ic5txTNMP8f0bHp3wzDtITMXhfIMv6TOjKwrnHScL8OxsANvlgoPGUNlKCAqSX4xOmPeglR5S40Re9APem4qYLUHolOp9NpPHvSQ3c9yNFOiZL8g9SrA8kPXrefn53+6dRp9rlUo6pQ5sObVfBWFsaV9r/3LKdYawFV+ls9xQkpCO5kjqZJonLSEx/FSG5HZiibaij4fOhG5cCOACPXKven13S22ZYyxXgnxH5CT25vLq+/zK4pKlGpGdDYaYygUEQsroXuJmjPimdBMVbQYB+PtHRO6QS2jAryExJYCubNrEW5bbu+PWOQ2UrQg5qN4u6XZ/3TlbkdiPFgurgkCFU6JlMiGSzPouEjLEHnMLxsEwwUlJ/Oybmh95LTtBp3nFM+RDUd84vl5s6R3s/kCjdP2jFbx3vCcbiziEjXV19+qddyq9oHwdiq96eV8u24NMPolmO86fKSdwI39tDdvNEcd2o511jSVJZ6mv+5WK3E=
sidebar_class_name: "post api-method"
info_path: docs/API-docs/opensign-api-v-1
custom_edit_url: null
---
import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import TabItem from "@theme/TabItem";
<h1
className={"openapi__heading"}
>
uploads an image
</h1>
<MethodEndpoint
method={"post"}
path={"/contactlist"}
>
</MethodEndpoint>
## Request
<MimeTabs
className={"openapi-tabs__mime"}
>
<TabItem
label={"application/octet-stream"}
value={"application/octet-stream-schema"}
>
<details
style={{}}
className={"openapi-markdown__details mime"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-mime"}
>
<h3
className={"openapi-markdown__details-summary-header-body"}
>
Body
</h3>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<div
style={{"marginTop":".5rem","marginBottom":".5rem","marginLeft":"1rem"}}
>
string
</div>
</ul>
</details>
</TabItem>
</MimeTabs><div>
<div>
<ApiTabs>
<TabItem
label={"200"}
value={"200"}
>
<div>
successful operation
</div><div>
<MimeTabs
className={"openapi-tabs__mime"}
schemaType={"response"}
>
<TabItem
label={"application/json"}
value={"application/json"}
>
<SchemaTabs
className={"openapi-tabs__schema"}
>
<TabItem
label={"Schema"}
value={"Schema"}
>
<details
style={{}}
className={"openapi-markdown__details response"}
data-collapsed={false}
open={true}
>
<summary
style={{}}
className={"openapi-markdown__details-summary-response"}
>
<strong>
Schema
</strong>
</summary><div
style={{"textAlign":"left","marginLeft":"1rem"}}
>
</div><ul
style={{"marginLeft":"1rem"}}
>
<SchemaItem
collapsible={false}
name={"code"}
required={false}
schemaName={"int32"}
qualifierMessage={undefined}
schema={{"type":"integer","format":"int32"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"type"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem><SchemaItem
collapsible={false}
name={"message"}
required={false}
schemaName={"string"}
qualifierMessage={undefined}
schema={{"type":"string"}}
>
</SchemaItem>
</ul>
</details>
</TabItem><TabItem
label={"Example (from schema)"}
value={"Example (from schema)"}
>
<ResponseSamples
responseExample={"{\n \"code\": 0,\n \"type\": \"string\",\n \"message\": \"string\"\n}"}
language={"json"}
>
</ResponseSamples>
</TabItem>
</SchemaTabs>
</TabItem>
</MimeTabs>
</div>
</TabItem>
</ApiTabs>
</div>
</div>
+71
View File
@@ -0,0 +1,71 @@
---
sidebar_position: 1
title: Code of conduct
---
# Code of Conduct for OpenSign
## 1. Introduction
A primary goal of OpenSign is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe, and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
We invite all those who participate in OpenSign to help us create safe and positive experiences for everyone.
## 2. Open Source Citizenship
A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
## 3. Expected Behavior
The following behaviors are expected and requested of all community members:
- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
- Exercise consideration and respect in your speech and actions.
- Attempt collaboration before conflict.
- Refrain from demeaning, discriminatory, or harassing behavior and speech.
- Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
## 4. Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
- Violence, threats of violence, or violent language directed against another person.
- Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
- Posting or displaying sexually explicit or violent material.
- Posting or threatening to post other peoples personally identifying information ("doxing").
- Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
- Inappropriate photography or recording.
- Inappropriate physical contact. You should have someones consent before touching them.
- Unwelcome sexual attention. This includes sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
- Deliberate intimidation, stalking or following (online or in person).
- Advocating for, or encouraging, any of the above behavior.
## 5. Consequences of Unacceptable Behavior
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
## 6. Reporting Guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible by emailing [contact@opensignlabs.com](mailto:contact@opensignlabs.com).
[Reporting guidelines](REPORTING_GUIDELINES.md)
## 7. Addressing Grievances
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify the OpenSign administration with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
## 8. Scope
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues—online and in-person—as well as in all one-on-one communications pertaining to community business.
## 9. Contact info
[contact@opensignlabs.com](mailto:contact@opensignlabs.com)
+8
View File
@@ -0,0 +1,8 @@
# Community at OpenSign™
Welcome to the OpenSign™ Community page! OpenSign™ is dedicated to fostering a vibrant and engaging community where members can connect, share ideas and collaborate on the OpenSign™ project. This page provides links to our active social media platforms and community channels, offering various ways for you to join and participate in the OpenSign™ community. Whether you're looking for support, eager to contribute or just want to stay updated, you'll find a platform that suits your preference. Connect with us on Discord for real-time discussions, follow us on Twitter for the latest updates, engage with our professional network on LinkedIn or join our Facebook group for a broader community experience. Join us in our mission to develop OpenSign™ as the premier open-source [alternative to DocuSign](https://www.opensignlabs.com).
- [Discord](https://discord.com/invite/xe9TDuyAyj)
- [Twitter](https://www.twitter.com/opensignhq)
- [LinkedIn](https://www.linkedin.com/company/opensign™/)
- [Facebook](https://www.facebook.com/profile.php?id=61551030403669)
+50
View File
@@ -0,0 +1,50 @@
---
sidebar_position: 4
title: Installation instructions
---
# INSTALLATION INSTRUCTIONS
You can use our app as a cloud version from [OpenSignLabs](https://www.opensignlabs.com)
or follow below instructions to install it on your own infrastructure.
- Localhost(Frontend only)
- Localhost(Docker)
## Localhost(Frontend only)
This is the easiest way to run the frontend application for development or testing purpose without the hassle of installing backend & DB. All the features including document upload, signing, email notifications will work seamlessly from staging backend.
**Warning:** All data, including user accounts and documents, is stored in the staging backend. This data will be erased every time there is a merge to the main branch. As a result, you may need to recreate user accounts repeatedly. If you find that login attempts are failing, it is likely because the data has been cleared due to a recent merge.
Below are the steps to follow -
- [Clone the repository](https://help.github.com/articles/cloning-a-repository/) to your local machine using below command -
```
git clone https://github.com/OpenSignLabs/OpenSign.git
```
- Switch to the newly created OpenSign directory.
```
cd OpenSign
```
- Copy the .env.frontend_dev file to apps/OpenSign/.env using below command(on mac & linux). For windows use COPY command instead.
```
cp .env.frontend_dev apps/OpenSign/.env
```
- Switch to apps/OpenSign directory.
```
cd apps/OpenSign
```
- Install NPM packages using
```
npm install
```
- Run the project locally using
```
npm run start-dev
```
You should be able to access the application from http://localhost:3000 after this.
Create an account by signing-up and start contributing.
## Localhost(Docker)
- Please refer this documentation => [click here](https://docs.opensignlabs.com/docs/self-host/docker/run-locally)
@@ -0,0 +1,59 @@
# OpenSign™ Reporting Guidelines
This document provides guidelines for reporting issues, suggesting enhancements, and submitting pull requests to the [OpenSign™ GitHub repository](https://github.com/OpenSignLabs/OpenSign). Adhering to these guidelines helps maintain the project's quality and efficiency.
## Issues
When creating an issue, include the following:
### Bug Reports
- **Title**: Concise and informative.
- **Description**: Detailed description of the issue.
- **Steps to Reproduce**: Clear steps to reproduce the bug.
- **Expected Behavior**: Describe what you expected to happen.
- **Actual Behavior**: Describe what actually happened.
- **Screenshots**: If applicable, add screenshots to help explain your issue.
- **Environment**: Include details like OS, browser version, and OpenSign™ version.
- **Logs**: Attach relevant logs or error messages.
### Feature Requests
- **Title**: Short and descriptive.
- **Description**: Detailed explanation of the feature and its benefits.
- **Use Case**: Describe a specific use case or problem this feature addresses.
- **Proposed Solution**: If possible, suggest an implementation idea.
- **Additional Context**: Any other information or screenshots.
## Pull Requests
For submitting pull requests, follow these steps:
- **Branch Naming**: Use a short, descriptive name for your branch.
- **Commit Messages**: Write clear, concise commit messages.
- **Description**: Provide a detailed description of changes.
- **Testing**: Describe testing done to validate the changes.
- **Documentation**: Update relevant documentation.
- **Screenshots**: Include before and after screenshots for UI changes.
## Code of Conduct
All contributors are expected to follow the project's [Code of Conduct](https://docs.opensignlabs.com/docs/contribute/CODE_OF_CONDUCT).
## Getting Help
If you need help or have questions:
- Visit our [GitHub Discussions](https://github.com/OpenSignLabs/OpenSign/discussions) page.
- Contact us through our [Discord community](https://discord.com/invite/xe9TDuyAyj).
## Stay Connected
- [Twitter](https://twitter.com/OpenSignHQ)
- [Facebook](https://www.facebook.com/profile.php?id=61551030403669)
- [LinkedIn](https://www.linkedin.com/company/opensign%E2%84%A2/)
- [YouTube](https://www.youtube.com/@opensignhq)
- [Website](http://www.opensignlabs.com)
Thank you for contributing to OpenSign™!
+74
View File
@@ -0,0 +1,74 @@
---
sidebar_position: 1
---
# Contributing to OpenSign
Hello there! Thank you for considering contributing to OpenSign, the open-source alternative to DocuSign. OpenSign is not just a project, but a community endeavor that aims to create a robust, user-friendly, and secure electronic signature solution. Your contributions, irrespective of their size, are valuable in making this vision a reality.
## Table of Contents
1. [Getting Started](#getting-started)
2. [Code of Conduct](#code-of-conduct)
3. [How Can I Contribute?](#how-can-i-contribute)
- [Reporting Bugs](#reporting-bugs)
- [Suggesting Enhancements](#suggesting-enhancements)
- [Pull Requests](#pull-requests)
4. [Style Guidelines](#style-guidelines)
- [Git Commit Messages](#git-commit-messages)
- [JavaScript Style Guide](#javascript-style-guide)
5. [Community](#community)
6. [License](#license)
## Getting Started
- Fork the [OpenSign repository](https://github.com/OpenSignLabs/OpenSign) to your GitHub account.
- Clone your fork locally: `git clone https://github.com/your-username/OpenSign.git`
- Create a new branch for your contribution: `git checkout -b feature/your-feature-name`
- Make your contributions.
- Push your branch to your fork: `git push origin feature/your-feature-name`
- Create a Pull Request from your fork to the OpenSign repository.
## Code of Conduct
We expect all our contributors to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md). Please read it thoroughly before contributing.
## How Can I Contribute?
### Reporting Bugs
- Check the [Issues](https://github.com/OpenSignLabs/OpenSign/issues) to see if the bug has already been reported. If it has, add any additional information in the comments.
- If the bug hasnt been reported, create a new issue. Please provide as much information as possible to help maintainers reproduce the bug.
### Suggesting Enhancements
- Use the [Issues](https://github.com/OpenSignLabs/OpenSign/issues) section to suggest any enhancements or new features.
- Clearly describe your suggestion, explaining the problem it solves or the functionality it adds.
### Pull Requests
- Ensure any install or build dependencies are removed before the end of the layer when doing a build.
- Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations, and container parameters.
- You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you.
## Style Guidelines
### Git Commit Messages
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
### JavaScript Style Guide
Adhere to the [Standard JavaScript Style Guide](https://standardjs.com).
## Community
Engage with the community on our [Gitter Channel](https://gitter.im/OpenSignLabs/community) or join our monthly community calls. Details can be found on our [Community Page](COMMUNITY.md).
## License
By contributing, you agree that your contributions will be licensed under its [AGPL v3 License](https://github.com/OpenSignLabs/OpenSign/LICENSE).
---
@@ -0,0 +1,10 @@
---
sidebar_position: 2
title: Why am I getting 'Ensure this field is accurately filled and meets all requirements'?
---
# Why am I getting 'Ensure this field is accurately filled and meets all requirements'?
This happens when you leave a field blank or when you dont enter correct values in the field, for example not entering email address in correct format.
At OpenSign we constantly try to improve the user experience our platform offers, in the latest version of OpenSign the field for which the validation has failed is automatically highlighted making it easy to identify & fix the incorrect values being entered.
You can check the bookmark icons on the page previews on the left hand side to quickly find all the pages that have fields meant to be filled by you.
<img width="362" alt="image" src="https://github.com/OpenSignLabs/OpenSign/assets/5486116/0e9458d1-3013-4af8-a98f-c7ff01d5d4f2" />
+7
View File
@@ -0,0 +1,7 @@
---
sidebar_position: 1
title: Why is there no dropdown list when I sign a document myself?
---
# Why is there no dropdown list when I sign a document myself?
The dropdown list field is available only when you request a signature from others or when you create a template. This is because dropdown lists function as temporary widgets, allowing the user to select one of multiple values. Once a signer selects a value from the dropdown, it is embedded into the document as text. When you sign a document yourself, OpenSign digitally signs it immediately upon clicking the finish button. Therefore, you can use the text widget to add the necessary text to the document.
+8
View File
@@ -0,0 +1,8 @@
{
"label": "FAQs",
"position": 6,
"link": {
"type": "generated-index",
"description": "FAQs on Utilizing Various Features of OpenSign™ - The World's Leading Free & Open Source Document Signing Platform."
}
}
@@ -0,0 +1,8 @@
{
"label": "Create New OpenSign Document",
"position": 2,
"link": {
"type": "generated-index",
"description": "5 minutes to learn how to create Document in OpenSign."
}
}
@@ -0,0 +1,87 @@
---
sidebar_position: 4
title: Enforce email OTP verification
---
# How to Use the "Enable OTP Verification" Feature in OpenSign
The "Enable OTP Verification" feature in OpenSign is designed to add an extra layer of security to the document-signing process by verifying the signers email address. Heres an in-depth look at how it works, when to use it, and its impact on the signing process.
## What is OTP Verification?
**OTP (One-Time Password) Verification** is a security feature that requires each signer to enter a unique code sent to their email address before they can sign the document. This ensures that only individuals with access to the specified email address can complete the signing process, adding an extra level of authenticity to each signature.
## How to Enable OTP Verification
1. **Prepare the Document**:
- Navigate to "Main Menu" -> "Request Signatures" & start by uploading the document you want to send for signatures in OpenSign.
2. **Add Signers**:
- Specify the individuals who need to sign the document by entering their email addresses.
3. **Configure Security Settings**:
- Click the "Advanced Options"
- <img width="499" alt="image" src="https://github.com/user-attachments/assets/2f099abb-9421-49fb-b53a-7d9a610a8cfe"/>
- Under **Security Settings**, find the option labeled "Enable OTP Verification."
- Select **Yes** to activate OTP verification for this document.
- <img width="1125" alt="image" src="https://github.com/user-attachments/assets/48d15c53-5eba-407c-8f81-1b17a47f32cb"/>
4. **Send the Document**:
- Once all settings are configured, proceed to send the document to the signers.
## How OTP Verification Works for Signers
When OTP verification is enabled, heres what the signing experience looks like for recipients:
1. **Email Notification**:
- The signer receives an email notification prompting them to review and sign the document.
2. **OTP Verification Prompt**:
- When the signer clicks the link to sign the document, they are required to enter a one-time password (OTP).
- An OTP is sent to the signers email address. They must enter this code on the signing page to proceed.
3. **Document Signing**:
- After entering the correct OTP, the signer gains access to the document and can proceed with adding their signature.
## Benefits of Using OTP Verification
- **Enhanced Security**: Only users with access to the designated email account can sign, reducing the risk of unauthorized access.
- **Reliable Authentication**: Verifying the signers email adds an additional level of validation, helping to ensure the authenticity of each signature.
## Impact on the Completion Certificate
Once the document is fully signed by all parties, OpenSign generates a **Completion Certificate**. This certificate contains detailed information about the signing process, including:
- **Signers Identity**: Each signers name and email address.
- **OTP Verification Status**: If OTP verification was enabled for the document, this is noted in the completion certificate. This notation serves as proof that the signers email address was verified before the document was signed.
This feature makes it clear that the signing process involved OTP verification, adding credibility to the documents legal standing.
## When to Use OTP Verification
Consider enabling OTP verification in scenarios where:
- **Confidentiality** is critical: You want to ensure that only authorized individuals with access to the signers email can view and sign the document.
- **Authentication** is a priority: OTP adds an extra layer of verification, enhancing the documents validity and security.
- **Compliance** is required: Certain regulations or standards may necessitate an additional verification step for document signing.
## Disabling OTP Verification
If OTP verification is unnecessary for a particular document:
1. Under the **Security Settings**, select **No** for the "Enable OTP Verification" option.
2. By disabling OTP verification, recipients can directly access and sign the document without needing to enter an OTP.
## Summary
The "Enable OTP Verification" feature in OpenSign is a powerful tool for ensuring that only verified individuals can sign documents. By sending a unique code to each signers email and requiring it before signing, this feature strengthens security and authenticity. The use of OTP verification is also recorded in the completion certificate, providing a clear record of email verification.
Use OTP verification whenever you need an added layer of email-based security and authenticity in your document signing workflows.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
@@ -0,0 +1,9 @@
---
sidebar_position: 3
title: Navigate between pages of a document
---
# How to navigate between pages of a document in OpenSign™?
To navigate between pages of a document that you have uploaded either click on the 'prev' & 'next' buttons at the top or click on any of the page previews loaded on the left side -
![image](https://github.com/OpenSignLabs/OpenSign/assets/5486116/658c1bbc-84af-4dca-a12b-54071c236260)
@@ -0,0 +1,166 @@
---
sidebar_position: 2
title: Request signatures
---
# Request signatures using OpenSign™
## Interface Overview
The OpenSign™ Request signatures interface is designed to streamline the process of creating, preparing, and sending documents for electronic signature.
# How to Create and Send a Document for Signature with OpenSign™
### Step 1: Begin New Document Creation
- **Navigate to Request Signatures form**: Start by navigating to 'Request Signatures' from the main menu to initiate the creation of a document for signatures.
<img width="800" alt="request signatures" src="https://github.com/user-attachments/assets/94112aec-4581-46a5-8e09-b6fc42e9e72a" />
### Step 2: Uploading Your Document
- **[2] Choose File**: Once the "Request signature" page opens, click here to select and upload the document file from your computer that needs to be signed.
- **[3] Choose File from Dropbox**: Click the dropbox icon to select the document file from your dropbox account.
### Step 3: Entering Document Details And Signers
- **[4] Title** *(Required)*: Input the title of your document. This identifier will be visible to signers and in your document management.
- **[5] Signers**: Use the dropdown to select existing signers or use the addition button to add a new signer who needs to sign the document. (Here, add the signer's details such as name, email, and phone number).
- **[6] Note**: Optionally add a note to give context or instructions regarding the document.
### Step 4: Organizing Your Document
- **[7] Folder**: Select a folder where you want the document to be stored, or leave it to default to the 'Root' folder. You can browse your documents in a beautiful explorer view by navigating to "OpenSign™ Drive".
### Step 5: Setting the Time Frame
- **[8] Time To Complete (Days)** *(Required)*: Specify the number of days the signers have to complete the signatures. After that, the document will no longer be available for signing.
### Step 6: Set the sending order
- **[9] Send in Order**
- **If you choose:**
- **Yes**: Selecting this option will send the signing request to the first signer initially. Once the first signer completes their part, the next signer in the sequence will receive the request. This process continues until all signers have signed the document. This method ensures that the document is signed in a specific order.
- **No**: Selecting this option will send the signing links to all signers simultaneously. Every signer can sign the document at their convenience, regardless of whether other signers have completed their signatures. This method is faster but does not enforce any signing order among the participants.
Select the option that best suits the needs of your document processing.
### Step 7: Auto reminder (feature only avilable for the subscribed user)
- **[10]** Once you enable the auto reminder, a text field will appear allowing you to set the reminder for a specific number of days.
- **Remind once in every (Days)**: Here, you can set the number of days for the reminder.
### Step 8: Proceed to Document Creation Panel
- **Next**: Once all the necessary fields are filled, click this button to proceed to create the document for signing.
- **Cancel**: If you need to start over or make changes, click this button to clear the form.
### Step 9: Document creation
<img width="800" alt="request signatures" src="https://github.com/user-attachments/assets/b4e6f257-e362-46a7-b809-546f0e5999fc" />
- **[1] Add signature widget**: Once your document is loaded in the document creation panel, you'll need to add a signature widget for each signer. OpenSign provides an intuitive interface for this task. Select the signer from the right side panel, click on the signature widget, and position it where the signature is required.
Use the option on the right side to add recipients if you need to include additional signers. You can place multiple signature widgets for each signer, as required.
After placing the Signature widget, you will see the options on the widget such as:
- **Add Signer/Change Signer**: Clicking the first icon on the signature widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- **Copy Signature**: Clicking on this option reveals the following choices.
- All pages: It will copy the signature widget to all pages.
- All pages but last: It will copy the signature widget to all pages except the last page.
- All pages but first: It will copy the signature widget to all pages except the first page.
- **[2] Add other widgets**: Depending on your needs, you can include additional widgets such as:
- **Stamp**: After placing the Stamp widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can specify whether this widget is mandatory or optional during the document signing.
- Add Signer/Change Signer: Clicking the second option on the stamp widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy Stamp: Clicking on this option reveals the following choices.
- All pages : It will copy the stamp widget to all pages.
- All pages but last: It will copy the stamp widget to all pages except the last page.
- All pages but first: It will copy the stamp widget to all pages except the first page.
- **Initials**: After placing the Initials widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can specify whether this widget is mandatory or optional during the document signing.
- Add Signer/Change Signer: Clicking the first icon on the Initials widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy Initials: Clicking on this option reveals the following choices.
- All pages : It will copy the stamp widget to all pages.
- All pages but last: It will copy the stamp widget to all pages except the last page.
- All pages but first: It will copy the stamp widget to all pages except the first page.
- **Name**: After placing the name widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Add Signer/Change Signer: Clicking the first icon on the Name widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the name widget.
- **Job title**: After placing the job title widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Add Signer/Change Signer: Clicking the first icon on the Job title widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the job title widget.
- **Company**: After placing the company widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Add Signer/Change Signer: Clicking the first icon on the Company widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the Company widget.
- **Date**: After placing the date widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can choose from various date formats.
- Add Signer/Change Signer: Clicking the first icon on the Date widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the date widget.
- **Text**: After placing the Text widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Copy : Clicking on this you can ducplicate the Text widget.
- **Text Input**: After placing the Text Input widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Add Signer/Change Signer: Clicking the first icon on the Text Input widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the Text Input widget.
- **Checkbox**: Once you drop the checkbox widget, a popup will open where you can set the checkbox name and options. Additionally, there is few optiona available like you can set Minimum check, maximum check also whether this check box is readonly also hide label option.
- Add Signer/Change Signer: Clicking the first icon on the CheckBox widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the image widget.
- **Dropdown**: Once you drop the dropdown widget, a popup will open where you can set the dropdown name and options. Additionally, there is few option available like you can set default value, also whether this dropdown is required or optional.
- Add Signer/Change Signer: Clicking the first icon on the Dropdown widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the image widget.
- **Radio button**: Once you drop the radio button widget, a popup will open where you can set the radio button name and options. Additionally, there is few option available like you can set default value, also whether this radio button is readonly also hide label option.
- Add Signer/Change Signer: Clicking the first icon on the Radio button widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the image widget.
- **Image**: After placing the Image widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can specify whether this widget is mandatory or optional during the document signing.
- Add Signer/Change Signer: Clicking the first icon on the Image widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can ducplicate the image widget.
- **Email**: After placing the email widget, you will see the options on the widget such as:
- Setting icon: By clicking on the option, you can set the color and font.
- Add Signer/Change Signer: Clicking the first icon on the Email widget allows you to change the signer. You can choose from existing signers in the dropdown or add a new signer.
- Copy : Clicking on this you can duplicate the email widget.
### Step 10: Next:
- **Next**: After adding the widgets and signatures, click the 'Next' button. The document will then be created.
### Step 11: Send Mail
After finishing the document creation, a 'Send Mail' popup will appear, offering options to Send Email, Customize Email, Copy Link, or Share the document.
- Send Email: Click the 'Send' button to send the document for signing to all signers. If the sending order is set to 'Yes', it will send the document to the first signer.
- Customize Email: Click the 'Customize Email' button to open the email editor. Here, you can set variables and customize the content. After clicking 'Send', the document will be sent for signing to all signers, or if the sending order is set to 'Yes', it will be sent to the first signer with the customized email.
- Copy Link: You can copy the link to sign the document.
- Share: Use this option to share the document via email, WhatsApp and other Windows apps
<img width="800" alt="request signatures" src="https://github.com/user-attachments/assets/e2344479-daae-43ff-a61a-14ea98b237d6" />
## Signers Signing Process
### Step 12: Email OTP verification
Once the email is received, the signer can click the 'Sign Here' button. This will open the email verification page. After clicking the 'Get Verification Code' button, an OTP (one-time password) will be sent to the signers email address. Enter the received OTP into the verification textbox and click the 'Verify' button.
<div>
<img width="800" alt="OpenSign send OTP" src="https://github.com/user-attachments/assets/b82c796a-98e3-4296-bde1-fe86b1b993ad" />
</div>
<div>
<img width="800" alt="OpenSign verify otp" src="https://github.com/user-attachments/assets/63cf4b75-9d47-4630-a83c-e916a5c13b3c" />
</div>
### Step 13: Finalizing the Process:
After verification, the signer will be redirected to the document signing page, where he can view the document received for signing. To sign, the signer simply clicks on the signature widget, which allows them to draw, upload a digitally scanned signature, or type the signature.
After filling out all assigned widgets, click the 'Finish' button. Once the document is finished,.
- The signer has the option of downloading or printing the signed document. He will also obtain the completion certificate if he is the final signer.
- If there are more than one signer, the document will be immediately sent to the next signer. Once all signers have finished their signatures, they can download and print the signed document as well as the completion certificate.
<img width="800" alt="OpenSignFinalStep" src="https://github.com/user-attachments/assets/f4783aa0-2879-4ec2-9ddc-16d59f3a1fc0" />
## Additional Information
- All fields marked with an asterisk (*) must be completed before the document can be submitted.
- Ensure that the document format is supported by OpenSign before uploading.
- Signed documents can be accessed in the designated 'Root' folder or the one you have specified.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
@@ -0,0 +1,86 @@
---
sidebar_position: 1
title: Sign your-self
---
# Sign your-self using OpenSign™
## Interface Overview
# How to digitally sign a document using OpenSign™ for free?
OpenSign lets you digitally sign documents that don't need to be sent to anybody with ease. This feature is available in all the plans including **OpenSign free**.
After login, you will be directed to the OpenSign dashboard. From the left-side menu, click on "Sign yourself" or by clicking the button on the Dashboard.
### Step 1: Uploading Your Document
- **[1] Choose File**: Once the "Sign Yourself" page opens, click here to upload the document you want to sign from your computer.
- **[2] Upload from Dropbox**: To upload a document directly from your Dropbox account, click the Dropbox icon. You may need to provide permissions to access the file when you do it for the first time.
```The maximum document size allowed is 20MB.```
### Step 2: Document Information
- **[1] Title** *(Required)*: Enter a title for your document. This will help you identify it later in OpenSign™.
- **[2] Note**: Provide an optional note for further context about the document.
<img width="918" alt="OpenSign_Signyourself" src="https://github.com/user-attachments/assets/41c0f460-23b6-4ab0-befd-7fba8e845c23" />
### Step 3: Document Organization
- **[1] Folder**: Select a folder where you want the document to be stored, or leave it to default to the 'Root' folder. You can browse your documents in a beautiful explorer view by navigating to "OpenSign™ Drive".
- **[2] Root**: This is your default directory. Click the pencil icon to create or choose a different folder.
- **[3] Next**: After filling in all the required fields, click the "Next" button to proceed to the document creation panel.
### Step 4: Document creation and Signing
- **[1] Add signature widget**: Once your document is loaded in the document creation panel, you will need to add a signature widget. OpenSign provides an intuitive interface for this task. Click on the signature widget and position it where the signature is required. You can add multiple signature widgets if needed.
After placing the Signature widget, a popup will appear for drawing the signature.
In the "Draw Signature" popup, you have three options available:
- Draw the signature using your mouse cursor.
- Upload a digitally scanned signature.
- Type the signature using text input.
- Select your signature from "My Signature." (This option is available only if you have uploaded a signature under "My Signature" in Settings.)
- **[2] Add other widgets**: Depending on your needs, you can include additional widgets such as:
- **Stamp**: After dragging and dropping the stamp widget, the "Upload Stamp Image" popup will appear, allowing you to upload an image from your file explorer. Once the stamp is uploaded, you will see the stamp image on the document. Additionally, alongside your stamp image, there is an option to copy the image. Clicking on the copy option presents three choices:
- All pages : It will copy the stamp to all pages.
- All pages but last: It will copy the stamp to all pages except the last page.
- All pages but first: It will copy the stamp to all pages except the first page.
- **Initials**: Click on the initials widget and position it where the initials are required. After placing the Initials widget, a popup will appear for drawing the initials. In the "Draw Initials" popup, you have three options available:
- Draw the initials using your mouse cursor.
- Upload the digitally scanned initials.
- Type the initials using text input.
- **Name**: Once you drop the name widget, you can edit the name. We also provide customization options such as setting the color or font. Additionally, there is a copy option available to duplicate the widget.
- **Job Title**: Once you drop the job title widget, you can edit the job title. Customization options such as setting the color or font are also provided. Additionally, there is a copy option available to copy the widget.
- **Company**: Once you drop the company widget, you can edit the company name. Customization options such as setting the color or font are also provided. Additionally, there is a copy option available to duplicate the widget.
- **Date** : Once you drop the date widget, you can choose from various date formats.
- **Text**: Once you drop the text widget, you can write the text. Customization options such as setting the color or font are also provided. Additionally, there is a copy option available to duplicate the widget.
- **Checkbox**: After dropping the checkbox widget, a popup will open allowing you to set the checkbox name and options. Once you click save, the checkbox will be created on the document. Additionally, a copy option will be available to duplicate the widget.
- **Image** : After dragging and dropping the image widget, the "Upload Image" popup will appear, allowing you to upload an image from your file explorer. Once the image is uploaded, it will be displayed on the document. Additionally, there is an option to duplicate the image.
- **Email**: Once you drop the email widget, you can edit the email. Customization options such as setting the color or font are also provided. Additionally, there is a copy option available to duplicate the widget.
<img width="918" alt="OpenSign_Widgets" src="https://github.com/user-attachments/assets/b73ef535-245c-43c8-98eb-cb43e4720bc5" />
### Step 5: Finalizing the Process:
- **Finish**: After adding the widgets and signatures, click the "Finish" button. This will create a digitally signed document.
### Step 6: Print, download or send the document copy via email
After finishing the document, a "Successfully Signed!" popup will appear, offering options to print, download, or send the document via email.
In the "Add Email Address" text field, enter the email address you want to send the document to, then click the "Send" button to receive a copy of the signed document.
<img width="918" alt="OpenSign_sendEmail" src="https://github.com/user-attachments/assets/7ec61f70-3ffe-4c7e-b911-843919c6d25d" />
## Additional Information
- The fields with an asterisk (*) are mandatory.
- Make sure your document is in PDF, PNG, JPG, JPEG, or DOCX format.
- You can access your signed documents in the folder you've selected by visiting OpenSign™ Drive anytime. You can also access the documents from reports section.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
@@ -0,0 +1,8 @@
{
"label": "Manage Docs using OpenSign™ Drive",
"position": 2,
"link": {
"type": "generated-index",
"description": "5 minutes to learn everything about OpenSign™ Drive."
}
}
@@ -0,0 +1,92 @@
---
sidebar_position: 2
title: Create Docs & Folders
---
# Organize Documents using OpenSign™ Drive
OpenSign Drive offers a streamlined way to manage, sign, and request signatures on your important documents. Whether you're drafting an offer letter or storing signed agreements, organizing your documents effectively is crucial. Heres a step-by-step guide on how to create documents and folders in OpenSign Drive.
### 1. Accessing OpenSign Drive
After logging into OpenSign, navigate to the left-hand sidebar and click on "OpenSign Drive." This will open the OpenSign Drive page where you can see all your stored files.
<img width="828" alt="OpenSign drive" src="https://github.com/user-attachments/assets/1159afaa-e7e4-4f6d-9087-e22ea7a0c840" />
### 2. Creating a New Folder
Organizing your documents into folders helps you keep track of different categories of files.
**Step 1:** In the OpenSign Drive window, look for the "+" icon at the top-right of the screen.
**Step 2:** Click the "+" icon and select "Create Folder" from the dropdown menu.
**Step 3:** A dialog box will prompt you to name your new folder. Enter a descriptive name and hit "Add."
**Step 4:** Your new folder will appear in the main area of OpenSign Drive, ready to store your documents.
<img width="828" alt="Create new folder" src="https://github.com/user-attachments/assets/f0260329-d3b0-4c03-af1b-7231b4f2c6a4" />
### 3. Creating a New Document
To create a document for self-signing or by requesting a signature, you can do so by selecting the appropriate option from OpenSign Drive.
**Step 1:** Click the "+" icon in the top-right corner of OpenSign Drive.
**Step 2:** This time, choose "Sign Yourself" or "Request Signatures" depending on whether you want to sign the document yourself or send it to others for their signatures.
**Step 3:** When you select the "Sign Yourself" or "Request Signature" option, the document creation page will open, allowing you to enter details such as the document title, description, notes, and other necessary information. You can also choose an OpenSign Drive folder to store your document. Once youve selected the folder and created the document, it will be saved in that folder, making it easily accessible from your OpenSign Drive.
<img width="828" alt="Create new document" src="https://github.com/user-attachments/assets/97bd75ec-ea9d-4f1d-b514-b9e04ce856aa" />
### 4. Organizing Documents
After creating or uploading documents, it's crucial to organize them effectively. Here are some options available in OpenSign Drive for managing your documents:
<img width="828" alt="OpenSign Drive Options" src="https://github.com/user-attachments/assets/350c7f0b-7751-419d-85bd-3d4ca68c1485" />
- **Download:** To download a document, right-click on it and select the "Download" option. This will save a copy of the document to your device.
- **Rename:** If you need to rename a document, right-click on it and choose the "Rename" option. This will allow you to edit the document's name.
- **Move:** To move a document to a different folder, right-click on the document and select the "Move" option. You'll see a list of existing folders, along with the option to create a new folder. Select the desired folder or create a new one, then move the document to that location.
- **Delete:** If you wish to delete a document, simply right-click on it and choose the "Delete" option. This will remove the document from your OpenSign Drive.
Organizing your documents properly ensures that you can easily find and manage them whenever needed.
### 5. Managing Documents
OpenSign Drive offers a variety of tools to help you manage your documents efficiently, one of the most useful being the Status Indicators system.
**Status Indicators**
These indicators are represented by different icons on your documents, allowing you to instantly recognize their current status:
- **Signed (Green Check Mark):** This icon signifies that the document has been fully signed and is complete.
- **Pending Signature (Yellow Paper Airplane):** Documents with this icon are awaiting signatures from one or more parties.
- **Draft (Blue Paper Clip):** A Blue Paper Clip indicates that the document is in draft form and has not yet been sent out for signatures.
- **Declined document (Red Exclamation Mark):** This icon highlights documents that require immediate action, indicating that the document has been declined.
- **Expired (Gray Hourglass):** A gray hourglass indicates that the document is expired.
<img width="828" alt="Create new folder" src="https://github.com/user-attachments/assets/b488ef24-3db5-4323-a3b3-ed3c12a04291" />
### 6. Filter and Sort Documents in OpenSign Drive
OpenSign Drive provides a powerful and easy-to-use interface for managing your documents. To help you quickly find and organize your files, OpenSign Drive offers several sorting and filtering options, allowing you to arrange your documents by name or date, in either ascending or descending order.
<img width="861" alt="OpenSign filters" src="https://github.com/user-attachments/assets/af51e68a-730c-4203-8015-54b30da572f6" />
- **Sorting Documents by Name:**
To sort your documents alphabetically:
1. Click on the Sort dropdown menu in the upper right corner of the OpenSign Drive interface.
2. Select "Name" from the dropdown list. This will arrange your documents alphabetically by their titles.
3. You can then choose to order them in ascending (A-Z) or descending (Z-A) order by toggling the "Ascending" or "Descending" option.
- **Sorting Documents by Date:**
If you prefer to sort your documents based on when they were created or modified:
1. Click the Sort dropdown menu in the top right corner.
2. Ensure that "Date" is selected. This will organize your documents based on their creation or modification date.
3. Select "Ascending" to arrange documents from the oldest to the newest, or choose "Descending" to list them from the newest to the oldest.
- **Ascending vs. Descending Order**
- **Ascending Order:** Whether sorting by name or date, selecting "Ascending" will arrange your documents from A to Z (if sorting by name) or from oldest to newest (if sorting by date).
- **Descending Order:** Choosing "Descending" will reverse the order, arranging documents from Z to A (by name) or from newest to oldest (by date).
These sorting features help you keep your documents organized, making it easier to locate specific files quickly, especially when you have a large number of documents stored in your OpenSign Drive.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
@@ -0,0 +1,18 @@
---
sidebar_position: 3
title: Grid vs List view
---
# How to switch between grid view and list view in OpenSign drive
- Navigate to OpenSign drive using the main menu or clicking [this](https://app.opensignlabs.com/opensigndrive) link.
- Click the list view icon on the upper right corner of the screen(marked in green) to switch to list view from gride view -
<img width="1159" alt="OpenSign gridview icon" src="https://github.com/user-attachments/assets/0c03980e-6c28-4ac4-ace2-214d66858d84"></img>
- In case you are already in list view, you will find a button to swith to grid view at the same location(marked in green)
<img width="1164" alt="image" src="https://github.com/user-attachments/assets/566845ac-de2e-4f0a-b758-77833fb6e829"></img>
@@ -0,0 +1,49 @@
# OpenSign™ Drive Interface Documentation
## Overview
This documentation provides an overview of the OpenSign™ Drive interface, detailing its key features, user interface elements and functionality.
![OSD](https://github.com/OpenSignLabs/OpenSign/assets/5486116/e11c7060-15ab-4062-915e-2f47e832f023)
### Interface Elements
- **Navigation Bar**: At the top, displaying the current directory ("OpenSign™ Drive >").
- **Toolbar**:
- `+`: Button to add new documents.
- `Sort Options`: Dropdown to sort files by criteria such as date.
- `View Options`: Toggle between list and grid views.
### File Organization
- **Documents**: Represented by icons with a red PDF symbol.
- `Status Indicator`: Colored dots on the PDF icons represent the document status (e.g., green for 'complete').
- **Folders**: Represented by yellow folder icons.
### Document Information Popup
- Activated by hovering on a document, displaying the following details:
- **Title**: The name of the document.
- **Status**: Current status of the document (e.g., "Draft", "In-progress", "Completed", "Rejected" & "Expired").
- **Created Date**: The date the document was created or uploaded.
- **Additional Notes**: Any pertinent notes or descriptions.
### File and Folder Labels
- **Labels**: Below each icon, providing the name of the file or folder.
- **Status Labels**: Next to file labels, indicating additional status information.
## Interaction Patterns
- **Click**: Select files or folders.
- **Right-click**: Access context-specific actions.
## Accessibility Features
- **Status Colors**: Visually distinct colors for quick status recognition.
- **File Icons**: Large and clear with significant visual cues (PDF symbol).
### Version Information
This interface is current as of 15/01/2024. It is subject to change with future updates to the OpenSign™ Drive.
For further assistance or to report issues, please contact us on hello@opensignlabs.com
@@ -0,0 +1,21 @@
# Rename documents from OpenSign™ Drive
The OpenSign™ Drive interface allows users to rename their documents efficiently.
![rename](https://github.com/OpenSignLabs/OpenSign/assets/5486116/ea3df671-07a8-423d-916b-eb22aa4a1f50)
## Overview of User Interface
- **Toolbar at the top**: Includes options to add a new document (`+` icon), sort documents by date, and change the view layout (grid or list view).
- **Document and Folder Grid**: Displays documents and folders as icons with titles. PDF documents are clearly indicated with a red PDF logo.
- **Status Indicators**: Some documents have colored status labels such as blue (with a lock icon) indicating a secure document, and green (with a checkmark) suggesting completed or signed documents.
- **Selected Document Preview**: When a document is selected, a preview pane appears at the bottom, showing details like Title, Status, Created Date, and Signers involved.
## Renaming a Document
To rename a document in OpenSign™ Drive, follow these steps:
1. **Select the Document**: Hover on the document you wish to rename. The document will be highlighted and its details will be displayed in the preview pane.
2. **Access Rename Option**: Right-click on the selected document to open the context menu and select the 'Rename' option.
3. **Edit the Title**: Enter the new name for the document in the provided field.
4. **Save Changes**: Press 'Enter' to apply the new name to the document.
+8
View File
@@ -0,0 +1,8 @@
{
"label": "Reports",
"position": 2,
"link": {
"type": "generated-index",
"description": "Navigate seamlessly through OpenSign™ reports."
}
}
+48
View File
@@ -0,0 +1,48 @@
---
sidebar_position: 3
title: Completed
---
# Completed documents report
---
The "Completed documents" report within OpenSign serves as a vital tool for managing and reviewing all finalized documents that have been processed through the platform. This guide will walk you through the key features and functionalities of the "Completed documents" report, enabling you to efficiently navigate and manage your signed documents.
```note: In this report, you can only see documents that you own.```
### Navigating to the Completed documents report
1. Once logged into OpenSign, you'll see a navigation panel on the left side of your screen.
2. Click on **"Reports"** to expand the available options.
3. Select **"Completed"** to view the list of documents that have been fully signed and processed.
### Understanding the Completed documents report
The "Completed documents" report is displayed in a tabular format, presenting key information about each finalized document. Below is a breakdown of each column and its purpose:
<img width="816" alt="OpenSign_Signyourself" src="https://github.com/user-attachments/assets/4694c9b3-ca2c-4f27-a9d9-8dca220a4124" />
- **Sr.No:** This column displays the serial number for each document in the list, helping you quickly identify and reference documents.
- **Title:** The "Title" column displays the name of the document.
- **Note:** This section contains any notes that were added during the document's creation process.
- **Folder:** The "Folder" column indicates the location where the document is stored within OpenSign Drive, ensuring you can easily locate the document later.
- **File:** Here, you will find a **"Download"** link that allows you to directly download the completed document to your local device for review or archiving.
- **Owner:** This column shows the name of the person who created the document.
- **Signers:** The "Signers" column displays the names and email addresses of the signers assigned to that document for signature. Click the "View" button to see the signers.
### Action buttons
The "Completed documents" report also includes several actions icons for each document:
- **View Document:** The eye icon allows you to preview the document directly within OpenSign without needing to download it.
- **Delete Document:** The trash bin icon enables you to permanently delete a document from your completed list. Be cautious, as this action cannot be undone.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
+38
View File
@@ -0,0 +1,38 @@
---
sidebar_position: 7
title: Contactbook
---
# Contactbook
The **Contactbook** report in OpenSign enables you to add and manage contacts.
## Accessing Contactbook
To view your Contactbook:
1. Log in to your OpenSign account.
2. Navigate to the left sidebar.
3. Click on the `Contactbook` link under the reports section.
<img width="828" alt="Add contact" src="https://github.com/user-attachments/assets/80308df4-33a8-41ee-a240-801f775dcec0" />
## Understanding the Contactbook report
### Adding a New Contact:
To add a new contact, click the red plus (+) button located at the top-right corner of the Contactbook page.
This will open a pop-up where you can enter the contacts name, email, and phone number.
The Contactbook page displays a list of contacts with the following columns:
- **Sr.No**: A sequential number for each contact.
- **Name**: The contact's name.
- **Email**: The contacts email address.
- **Phone**: The contacts phone number (if available).
<img width="828" alt="contactbook" src="https://github.com/user-attachments/assets/524a7aa7-594e-412a-ad50-caebc125c1db" />
### Action buttons
- **Delete**: To delete a contact, click on the trash icon located next to the contacts details. This will remove the contact from your Contactbook. A confirmation prompt may appear to prevent accidental deletions.
+44
View File
@@ -0,0 +1,44 @@
---
sidebar_position: 5
title: Declined
---
# The Declined documents report
The "Declined documents" report within OpenSign serves as a vital tool for managing and reviewing all declined documents that have been processed through the platform. This guide will walk you through the key features and functionalities of the "Declined documents" report, enabling you to efficiently navigate and manage your signed documents.
### Navigating to the Declined documents report
1. Once logged into OpenSign, you'll see a navigation panel on the left side of your screen.
2. Click on **"Reports"** to expand the available options.
3. Select **"Declined"** to view the list of documents that have been fully signed and processed.
### Understanding the Declined documents report
The "Declined documents" report is displayed in a tabular format, presenting key information about each finalized document. Below is a breakdown of each column and its purpose:
<img width="816" alt="OpenSign_Signyourself" src="https://github.com/user-attachments/assets/dc55e678-52c0-4e75-a1d5-b5a94690bc33" />
- **Sr.No:** This column displays the serial number for each document in the list, helping you quickly identify and reference documents.
- **Title:** The "Title" column displays the name of the document.
- **Reason:** This section contains the reasons for declining the document.
- **Folder:** The "Folder" column indicates the location where the document is stored within OpenSign Drive, ensuring you can easily locate the document later.
- **File:** Here, you will find a **"Download"** link that allows you to directly download the completed document to your local device for review or archiving.
- **Owner:** This column shows the name of the person who created the document.
- **Signers:** The "Signers" column displays the names and email addresses of the signers assigned to that document for signature. Click the "View" button to see the signers
### Action buttons
The "Declined documents" report also includes several action icons for each document:
- **View Document:** The eye icon allows you to preview the document directly within OpenSign without needing to download it.
- **Delete Document:** The trash bin icon enables you to permanently delete a document from your declined list. Be cautious, as this action cannot be undone.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
+45
View File
@@ -0,0 +1,45 @@
---
sidebar_position: 4
title: Drafts
---
# The Draft documents report
The Draft documents section in OpenSign helps you manage all your in-progress documents easily. This feature allows you to save, review, and edit documents before sending them for signature. Here's a detailed overview of how to navigate and use the Draft Documents report effectively.
### Navigating to the Draft documents report
1. Once logged into OpenSign, you'll see a navigation panel on the left side of your screen.
2. Click on **"Reports"** to expand the available options.
3. Select **"Drafts"** under the Reports section. This will display all your saved draft documents.
### Understanding the Draft documents report
The Draft documents section provides an organized list of all documents that are saved as drafts. Each draft entry contains key details that help you quickly identify and manage your documents. Heres a breakdown of the information available:
<img width="816" alt="Draft documents" src="https://github.com/user-attachments/assets/6f743287-6459-4e93-ad7d-064c1ed68da0" />
- **Sr.No:** This column displays the serial number for each document in the list, helping you quickly identify and reference documents.
- **Title:** The "Title" column displays the name of the document.
- **Note:** This section contains any notes that were added during the document's creation.
- **Folder:** The "Folder" column indicates the location where the document is stored within OpenSign Drive, ensuring you can easily locate the document later.
- **File:** Here, you will find a **"Download"** link that allows you to directly download the drafted document to your local device for review or archiving.
- **Owner:** This column shows the name of the person who created the document.
- **Signers:** The "Signers" column displays the names and email addresses of the signers assigned to that document for signature. Click the "View" button to see the signers.
### Action buttons
The "Draft documents" report also includes several actions icons for each document:
- **Edit:** If you need to make changes to your draft, click the edit (pencil) icon. This will open the document for you to make the necessary modifications before sending it for signatures.
- **Delete:** If a draft is no longer needed, click the trash icon to delete it. Be cautious when using this action as deleted drafts cannot be recovered.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
+46
View File
@@ -0,0 +1,46 @@
---
sidebar_position: 6
title: Expired
---
# Expired documents report
The **Expired documents** report in OpenSign allows you to manage and review documents that have reached their expiration date without being signed. This feature is essential for maintaining an organized record of inactive documents that may require follow-up or archival.
## Accessing Expired documents
To view your expired documents:
1. Log in to your OpenSign account.
2. Navigate to the left sidebar.
3. Click on the `Expired` link under the Reports section.
<img width="828" alt="Expired document" src="https://github.com/user-attachments/assets/01f3626f-d694-4d3b-82da-2f2b77693b76" />
## Understanding the Expired documents report
The Expired documents report displays a list of documents that have not been signed by all parties before the designated expiration date. Each entry in the report includes the following information:
- **Title**: The name of the document.
- **Note**: A brief note associated with the document at the time of creation.
- **Folder**: The folder in which the document is stored, helping you organize and locate documents efficiently in OpenSign drive.
- **File**: Link to download the document for offline storage.
- **Owner**: The user who uploaded or owns the document.
- **Signers**: Lists the parties required to sign the document.
### Action buttons
For each expired document, you can perform several actions:
- **Delete**: Deletes the document from your OpenSign account.
- **View**: Opens the document in a viewer within OpenSign, allowing you to review the details and contents of the document.
## Managing Expired documents
Managing your expired documents effectively can help ensure that no important document is overlooked. Consider the following tips:
- **Review Regularly**: Check the Expired documents report periodically to manage documents that require attention.
- **Follow Up**: Contact the signers who have not completed their signatures informing them about the expired documents and resend the documents if necessary.
- **Archive**: Move documents that are no longer active or needed to an archive folder to keep your workspace organized.
By keeping track of your expired documents, you can maintain a clear overview of your document workflows & ensure that all the necessary actions are taken on time.
+70
View File
@@ -0,0 +1,70 @@
---
sidebar_position: 2
title: In Progress
---
# In-Progress documents report
The In-Progress documents report in OpenSign helps you monitor and manage documents that are currently in the signing process. This report enables you to monitor the status of your documents, manually share the document URL, track document progress, resend reminders, revoke access, or delete documents that are no longer required. Heres a detailed guide on how to use the In-Progress documents report effectively.
### Navigating to the In-Progress documents report
1. Once logged into OpenSign, you'll see a navigation panel on the left side of your screen.
2. Click on **"Reports"** to expand the available options.
3. Select **"In progress"** This will display all documents that are currently awaiting signatures or are otherwise in the signing process.
### Understanding the In-Progress documents report
The "In progress documents" report is displayed in a tabular format, presenting key information about each finalized document. Below is a breakdown of each column and its purpose:
<img width="816" alt="Inprogress documents" src="https://github.com/user-attachments/assets/60100998-1412-4331-8842-55fd9dd10307" />
- **Sr.No:** This column displays the serial number for each document in the list, helping you quickly identify and reference documents.
- **Title:** The "Title" column displays the name of the document.
- **Note:** This section contains any notes that were added during the document's creation process.
- **Folder:** The "Folder" column indicates the location where the document is stored within OpenSign Drive, ensuring you can easily locate the document later.
- **File:** Here, you will find a **"Download"** link that allows you to directly download the In-progress document to your local device for review.
- **Status:** This column displays the current status of the document, indicating whether it has been viewed or signed by the signer. Once the signer has viewed or signed the document, the Owner of the document can click "View" to see the activity logs.
<img width="816" alt="Inprogress documents" src="https://github.com/user-attachments/assets/4eb43321-5eec-48ec-a3b6-75e932d31c6c" />
- **Signers:** The "Signers" column displays the names and email addresses of the signers assigned to that document for signature. Click the "View" button to see the signers.
### Action buttons
The "In progress documents" report also includes several actions icons for each document:
- **Share Document:** The "Share" option in the In-Progress Documents report allows you to manually share the signing link of a document with signers or other recipients directly via email. This feature ensures that the signers can easily access the document, even if they have missed the initial notification.
<img width="816" alt="Inprogress documents" src="https://github.com/user-attachments/assets/7c632c2d-c784-4b51-9517-5c6817abd16f" />
Upon clicking the Share icon, a pop-up window titled Copy link will appear. This window provides multiple options to share the document link with designated recipients.
**Heres how to use the options within this pop-up:**
The pop-up will display a list of email addresses of the intended recipients or signers of the document. Each email corresponds to a person who needs access to the document.
-
- **Share Button:** Click the Share button next to the recipients email address to resend the document link directly to that individual. This action provides multiple sharing options, such as copying the link, or sharing it via Outlook, WhatsApp, Messenger, and more.
- **Copy Button:** Click the Copy button next to the email address to copy the unique signing link to your clipboard. You can then paste this link manually into an email, chat, or any other preferred method of communication to share with the recipient.
- **View Document:** The eye icon lets you preview the document directly within OpenSign without downloading it. Here, you can view the document's exact status, including who has signed and how many signers are still pending.
- **Resend:** If a signer has not responded or needs a reminder, use the resend option to send another notification. This ensures that the signing process continues without delay.
<img width="816" alt="resend document" src="https://github.com/user-attachments/assets/c0cb3348-47ca-4d2e-a2d7-81cb3b18a0c6" />
- **Revoke:** If theres a mistake or you need to cancel the document, revoking stops all signing actions immediately. This is useful when changes are needed before re-sending the document.
<img width="816" alt="resend document" src="https://github.com/user-attachments/assets/b2273768-ef81-44cd-95ea-92babee429b6" />
- **Delete :** If the document is outdated or was sent by mistake, you can permanently remove it from the list. Use this action cautiously, as deleted documents cannot be recovered.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
+51
View File
@@ -0,0 +1,51 @@
---
sidebar_position: 1
title: Need your sign
---
# Need your sign report
The "Need your sign" feature in OpenSign is designed to simplify the process of managing documents that require your signature. This guide will walk you through the various elements of the "Need your sign" report, helping you to efficiently navigate and complete your pending signing tasks.
## Accessing the "Need your sign" report
- **Login to OpenSign**: Start by logging into your OpenSign account.
- **Navigate to "Need your sign"**: Once logged in, you will find a navigation panel on the left side of your screen. Under the "Reports" section, click on "Need your sign" to view all documents that require your signature.
## Understanding the "Need your sign" report
Upon clicking "Need your sign," you will be presented with a list of documents awaiting your signature. Here's a breakdown of the key elements within this interface:
- **Sr.No**: This column provides a serial number for each document in the list, allowing for easy identification and reference.
- **Title**: The "Title" column displays the name of the document.
- **Note**: This section includes any notes or instructions related to the document.
- **Folder**: The folder column shows where the document is stored within OpenSign Drive. This helps in organizing and finding documents later on.
- **File**: In this column, a "Download" link is provided, allowing you to download the document directly to your device for offline review or record-keeping.
- **Owner**: The owner column indicates who owns or initiated the document.
- **Signers**: The "Signers" column displays the names and email addresses of the signers assigned to that document for signature. Click the "View" button to see the signers
- **Sign**: The "SIGN" button is prominently displayed next to each document. Clicking this button will open the document in the signing interface, allowing you to review and apply your signature.
### Action buttons
- **View Document**: By clicking "View" under the "Signers" column, you can get more details about the document, including the list of individuals who have already signed or are expected to sign it.
- **Download Document**: The "Download" link in the "File" column provides a quick way to save the document to your local device, ensuring you have a copy for your records.
## Signing a Document
To sign a document:
1. Click the **SIGN** button next to the document you wish to sign.
2. Review the document carefully within the OpenSign interface.
3. Apply your signature following the prompts.
4. Once signed, the document will move from the "Need your sign" section to the "Completed" section, indicating that the signing process is finished.
If you require more help, feel free to reach out to our customer support on support@opensignlabs.com.
Happy signing with OpenSign™!
+8
View File
@@ -0,0 +1,8 @@
{
"label": "Settings",
"position": 5,
"link": {
"type": "generated-index",
"description": "5 minutes to learn everything about OpenSign™ configuration."
}
}
@@ -0,0 +1,19 @@
---
sidebar_position: 2
title: Disable DocumentId
---
# How to disable adding the OpenSign™ documentId to signed documents
Whenever a document is signed by all parties, OpenSign™ adds a DocumentId at the top left corner of the digitally signed document.
Using this id you can verifiy the authenticity of the document at a later date, hence we strongly recommend that you keep this id.
In case you want to disable adding this to your signed documents, turn the 'Disable DocumentId' switch on.
- Click the '⌄' symbol just beside your name on the top right corner
- Click profile
- Click the 'edit' button
- Turn the 'Disable DocumentId' swith to on
- Click 'save'
<img width="436" alt="image" src="https://github.com/OpenSignLabs/OpenSign/assets/5486116/ee4433c7-1af7-4b74-800d-500060c0642d"></img>
Note that this feature will be available only to enterprise plan customers.
+52
View File
@@ -0,0 +1,52 @@
---
sidebar_position: 2
title: Manage users
---
# User Management
The **User Management** feature allows administrators to add, edit, and manage users within the OpenSign application. This feature is available on self-hosted, teams, and enterprise plans. Only users with "Admin" & "OrgAdmin" role are allowed to manage users.
## Accessing User Management
1. **Navigate to User management**
- Go to the **Menu**.
- Select **Settings**.
- Click on **Users**.
- A list of existing users will be displayed.
## Adding a New User
To add a new user:
1. **Click the "+" Button**
- Located in the upper right corner of the user list.
2. **Fill in the User Information**
- **Name** (required): Enter the user's full name.
- **Email** (required): Enter the user's email address.
- **Password**: A password is generated automatically. Copy it as it will only be displayed once.
- **Phone** (optional): Enter the user's phone number.
- **Team** (required): Select the team the user belongs to from the dropdown. Teams can be created only on the Teams & Enterprise plans.
- **Role** (required): Select the user's role from the dropdown - OrgAdmin(Has all permissions including user management), Editor(Has all permissions other than user management like creating & sharing templates with teams, User(cannot manager users & cannot share templates with teams but can use templates features for themselves).
![image](https://github.com/user-attachments/assets/d8c3c94e-842d-4f97-bfbc-8a63fc8d62c3)
3. **Submit or Cancel**
- Click **Submit** to add the user.
- Click **Cancel** to discard the changes.
## Managing User Status
- **Toggling Active Status**
- Use the "active" switch next to each user to enable or disable their account.
---
For more information, visit our social media channels:
- [Twitter](https://twitter.com/OpenSignHQ)
- [Website](http://www.opensignlabs.com)
- [Facebook](https://www.facebook.com/profile.php?id=61551030403669)
- [LinkedIn](https://www.linkedin.com/company/opensignhq/)
- [YouTube](https://www.youtube.com/@opensignhq)
+37
View File
@@ -0,0 +1,37 @@
---
sidebar_position: 1
title: My Signature
---
# Setup "My Signature" in OpenSign
This guide provides instructions on how to save your signature and initials using the OpenSign application. Once saved, you can use them with one click when signing documents. To create your signature, start by clicking the "My Signature" link under "settings" menu.
## Creating and Saving Your Signature
The drawing box on the left is dedicated to this purpose. If you make a mistake or wish to redo your signature, simply click the Clear button below the drawing box to erase it and start over.
## Uploading a Signature Image
Alternatively, if you prefer to use a pre-existing image of your signature, click the "Upload Image" button next to the Signature button. This will prompt you to select an image file from your device. Once uploaded, the image will be displayed in the drawing box, ready to be saved.
<img width="820" alt="create signature and initials" src="https://github.com/user-attachments/assets/6e86e3ed-48e2-47d1-a9b6-f964b13986c5"></img>
## Creating and Saving Your Initials
For creating your initials, use your mouse or a stylus to draw your initials on the drawing box on the right. As with the signature, there is a Clear button available to erase and redo the initials if necessary.
## Saving Your Signature and Initials
After you have drawn your signature and initials or uploaded your signature image, the next step is to save them. Click the Save button located below the drawing areas. This will store your signature and initials in the system, making them readily available for future use.
<img width="820" alt="create signature" src="https://github.com/user-attachments/assets/f999f256-038f-4e91-be7d-e1dceb0cfdec"></img>
Once saved, these can be applied with a single click whenever you need to sign a document within the OpenSign application, streamlining your workflow and ensuring consistency in your document signing process.
## Getting Started
**try OpenSign on cloud** at **[OpenSignLabs](https://app.opensignlabs.com)**.
Or
Get started by deploying a new instance of **OpenSign** by following these [instructions](https://docs.opensignlabs.com/docs/self-host/intro).
+8
View File
@@ -0,0 +1,8 @@
{
"label": "Templates",
"position": 2,
"link": {
"type": "generated-index",
"description": "5 minutes to learn everything about OpenSign™ Templates feature."
}
}

Some files were not shown because too many files have changed in this diff Show More